[Pkg-cli-apps-commits] [SCM] pinta branch, master, updated. debian/0.5+dfsg-1-5-g5a5a75a
Iain Lane
laney at ubuntu.com
Thu Jan 13 22:36:49 UTC 2011
The following commit has been merged in the master branch:
commit 5cc59dbab8e2804c4af472cb0bf48af49e85eeb8
Author: Iain Lane <laney at ubuntu.com>
Date: Thu Jan 13 22:04:09 2011 +0000
Imported Upstream version 0.6
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index b5209a7..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-obj
-bin
-*.pidb
-*.suo
-*.userprefs
\ No newline at end of file
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..d5f9742
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,534 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = .
+DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/pinta.in \
+ $(top_srcdir)/configure install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = pinta
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d "$(distdir)" \
+ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr "$(distdir)"; }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+GLIB_SHARP_20_CFLAGS = @GLIB_SHARP_20_CFLAGS@
+GLIB_SHARP_20_LIBS = @GLIB_SHARP_20_LIBS@
+GTK_SHARP_20_CFLAGS = @GTK_SHARP_20_CFLAGS@
+GTK_SHARP_20_LIBS = @GTK_SHARP_20_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MONO = @MONO@
+MONO_CAIRO_CFLAGS = @MONO_CAIRO_CFLAGS@
+MONO_CAIRO_LIBS = @MONO_CAIRO_LIBS@
+MONO_CFLAGS = @MONO_CFLAGS@
+MONO_LIBS = @MONO_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XBUILD = @XBUILD@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+BINDIR = $(srcdir)/bin
+BINFILES = \
+ $(BINDIR)/Pinta.exe \
+ $(BINDIR)/Pinta.Core.dll \
+ $(BINDIR)/Pinta.Gui.Widgets.dll \
+ $(BINDIR)/Pinta.Resources.dll \
+ $(BINDIR)/Pinta.Effects.dll \
+ $(BINDIR)/Pinta.Tools.dll
+
+RELEASE_FILE = $(PACKAGE)-$(VERSION)
+EXTRA_DIST = Pinta Pinta.Core Pinta.Effects Pinta.Gui.Widgets Pinta.Resources Pinta.Tools po Tarball xdg \
+ license-mit.txt license-pdn.txt readme.txt todo.txt Pinta.sln Pinta.Install.proj
+
+all: all-am
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+pinta: $(top_builddir)/config.status $(srcdir)/pinta.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @$(am__cd) '$(distuninstallcheck_dir)' \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install-exec: install-exec-am
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean-am: clean-generic mostlyclean-am
+
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic dist \
+ dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-generic \
+ distcleancheck distdir distuninstallcheck 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-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am
+
+
+# target: all - Default target: build
+all: build
+
+# target: run - Launch the uninstalled copy
+run:
+ $(MONO) bin/Pinta.exe
+
+# target: help - Display callable targets.
+help:
+ egrep "^# target:" Makefile | sed 's/^# target:/make/'
+
+# target: build - Build Pinta.
+build: Pinta.sln
+ cd $(srcdir) && $(XBUILD) Pinta.sln
+ cd $(srcdir) && $(XBUILD) Pinta.Install.proj /target:CompileTranslations
+
+# target: list - List source files.
+list:
+ if ! git status > /dev/null 2> /dev/null ;\
+ then \
+ find . -type f -name *.cs | sed 's|./||' ;\
+ else \
+ git ls-files | grep '\.cs' ;\
+ fi
+
+#target: updatepot - update the messages.pot file
+updatepot: build
+ find . -type f -name *.cs | sed 's|./||' > files.list
+ grep -v System.Composition.ComponentModel files.list > files2.list
+ xgettext --from-code=UTF-8 -f files2.list -o po/messages.pot
+ cat po/messages.in >> po/messages.pot
+ rm files.list
+ rm files2.list
+
+# target: clean - Default clean command: cleanobj and cleanbin
+clean: cleanobj cleanbin
+
+# target: distclean - Removes configure files.
+distclean: clean
+ rm -f Makefile pinta config.status config.cache config.log configure.lineno config.status.lineno
+
+# target: cleanall - Removes build files.
+cleanall: distclean
+ rm -rf autom4te.cache
+ rm -f configure aclocal.m4 missing install-sh Makefile.in
+
+# target: cleanbin - Removes built files.
+cleanbin:
+ rm -rvf $(BINDIR)/*
+
+# target: cleanobj - Removes temporary build files.
+cleanobj:
+ find $(srcdir)/ -type d -name obj | xargs rm -rvf
+
+# target: install - Installs Pinta.
+install: pinta $(BINFILES)
+ cd $(srcdir) && $(XBUILD) /target:Install /property:InstallPrefix=$(DESTDIR)$(prefix) Pinta.Install.proj
+ $(INSTALL_SCRIPT) pinta $(DESTDIR)$(prefix)/bin/$(PACKAGE)
+
+# target: uninstall - Uninstalls Pinta.
+uninstall:
+ $(XBUILD) /target:Uninstall /property:InstallPrefix=$(DESTDIR)$(prefix) Pinta.Install.proj
+
+# target: release - Default release type: releasetar
+release: releasetar
+
+# target: releasetar - Make a release tarball.
+releasetar: $(BINFILES)
+ cd $(BINDIR) && tar -czf ../$(RELEASE_FILE).tgz --exclude=*mdb *
+
+# target: releasezip - Make a release zip file.
+releasezip: $(BINFILES)
+ cd $(BINDIR) && zip -r ../$(RELEASE_FILE).zip * -x "*.mdb"
+
+.PHONY: install uninstall cleanall cleanbin cleanobj release releasetar releasezip
+
+# 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.
+.NOEXPORT:
diff --git a/Pinta.Core/Actions/EditActions.cs b/Pinta.Core/Actions/EditActions.cs
index 3817d05..4979527 100644
--- a/Pinta.Core/Actions/EditActions.cs
+++ b/Pinta.Core/Actions/EditActions.cs
@@ -69,11 +69,11 @@ namespace Pinta.Core
Paste = new Gtk.Action ("Paste", Catalog.GetString ("Paste"), null, Stock.Paste);
PasteIntoNewLayer = new Gtk.Action ("PasteIntoNewLayer", Catalog.GetString ("Paste Into New Layer"), null, Stock.Paste);
PasteIntoNewImage = new Gtk.Action ("PasteIntoNewImage", Catalog.GetString ("Paste Into New Image"), null, Stock.Paste);
- EraseSelection = new Gtk.Action ("EraseSelection", Catalog.GetString ("Erase Selection"), null, "Menu.Edit.EraseSelection.png");
+ EraseSelection = new Gtk.Action ("EraseSelection", Catalog.GetString ("Delete Selection"), null, "Menu.Edit.EraseSelection.png");
FillSelection = new Gtk.Action ("FillSelection", Catalog.GetString ("Fill Selection"), null, "Menu.Edit.FillSelection.png");
InvertSelection = new Gtk.Action ("InvertSelection", Catalog.GetString ("Invert Selection"), null, "Menu.Edit.InvertSelection.png");
SelectAll = new Gtk.Action ("SelectAll", Catalog.GetString ("Select All"), null, Stock.SelectAll);
- Deselect = new Gtk.Action ("Deselect", Catalog.GetString ("Deselect"), null, "Menu.Edit.Deselect.png");
+ Deselect = new Gtk.Action ("Deselect", Catalog.GetString ("Deselect All"), null, "Menu.Edit.Deselect.png");
LoadPalette = new Gtk.Action ("LoadPalette", Catalog.GetString ("Open..."), null, Stock.Open);
SavePalette = new Gtk.Action ("SavePalette", Catalog.GetString ("Save As..."), null, Stock.Save);
@@ -93,28 +93,37 @@ namespace Pinta.Core
public void CreateMainMenu (Gtk.Menu menu)
{
menu.Append (Undo.CreateAcceleratedMenuItem (Gdk.Key.Z, Gdk.ModifierType.ControlMask));
- menu.Append (Redo.CreateAcceleratedMenuItem (Gdk.Key.Y, Gdk.ModifierType.ControlMask));
+
+ ImageMenuItem redo = Redo.CreateAcceleratedMenuItem (Gdk.Key.Z, Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask);
+ redo.AddAccelerator ("activate", PintaCore.Actions.AccelGroup, new AccelKey (Gdk.Key.Y, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
+ menu.Append (redo);
+
menu.AppendSeparator ();
menu.Append (Cut.CreateAcceleratedMenuItem (Gdk.Key.X, Gdk.ModifierType.ControlMask));
menu.Append (Copy.CreateAcceleratedMenuItem (Gdk.Key.C, Gdk.ModifierType.ControlMask));
menu.Append (Paste.CreateAcceleratedMenuItem (Gdk.Key.V, Gdk.ModifierType.ControlMask));
- menu.Append (PasteIntoNewLayer.CreateAcceleratedMenuItem (Gdk.Key.V, Gdk.ModifierType.ShiftMask));
- menu.Append (PasteIntoNewImage.CreateAcceleratedMenuItem (Gdk.Key.V, Gdk.ModifierType.Mod1Mask));
+ menu.Append (PasteIntoNewLayer.CreateAcceleratedMenuItem (Gdk.Key.V, Gdk.ModifierType.ShiftMask | Gdk.ModifierType.ControlMask));
+ menu.Append (PasteIntoNewImage.CreateAcceleratedMenuItem (Gdk.Key.V, Gdk.ModifierType.Mod1Mask | Gdk.ModifierType.ControlMask));
+
menu.AppendSeparator ();
+ menu.Append (SelectAll.CreateAcceleratedMenuItem (Gdk.Key.A, Gdk.ModifierType.ControlMask));
+
+ ImageMenuItem deslect = Deselect.CreateAcceleratedMenuItem (Gdk.Key.A, Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask);
+ deslect.AddAccelerator ("activate", PintaCore.Actions.AccelGroup, new AccelKey (Gdk.Key.D, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
+ menu.Append (deslect);
+
+ menu.AppendSeparator ();
+ menu.Append (EraseSelection.CreateAcceleratedMenuItem (Gdk.Key.Delete, Gdk.ModifierType.None));
+ menu.Append (FillSelection.CreateAcceleratedMenuItem (Gdk.Key.BackSpace, Gdk.ModifierType.None));
+ //menu.Append (InvertSelection.CreateAcceleratedMenuItem (Gdk.Key.I, Gdk.ModifierType.ControlMask));
+ menu.AppendSeparator ();
Gtk.Action menu_action = new Gtk.Action ("Palette", Mono.Unix.Catalog.GetString ("Palette"), null, null);
Menu palette_menu = (Menu) menu.AppendItem (menu_action.CreateSubMenuItem ()).Submenu;
palette_menu.Append (LoadPalette.CreateMenuItem ());
palette_menu.Append (SavePalette.CreateMenuItem ());
palette_menu.Append (ResetPalette.CreateMenuItem ());
palette_menu.Append (ResizePalette.CreateMenuItem ());
-
- menu.AppendSeparator ();
- menu.Append (EraseSelection.CreateAcceleratedMenuItem (Gdk.Key.Delete, Gdk.ModifierType.None));
- menu.Append (FillSelection.CreateAcceleratedMenuItem (Gdk.Key.BackSpace, Gdk.ModifierType.None));
- //menu.Append (InvertSelection.CreateAcceleratedMenuItem (Gdk.Key.I, Gdk.ModifierType.ControlMask));
- menu.Append (SelectAll.CreateAcceleratedMenuItem (Gdk.Key.A, Gdk.ModifierType.ControlMask));
- menu.Append (Deselect.CreateAcceleratedMenuItem (Gdk.Key.D, Gdk.ModifierType.ControlMask));
}
public void CreateHistoryWindowToolBar (Gtk.Toolbar toolbar)
@@ -147,7 +156,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
Cairo.ImageSurface old = doc.CurrentLayer.Surface.Clone ();
@@ -167,7 +176,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
SelectionHistoryItem hist = new SelectionHistoryItem (Stock.SelectAll, Catalog.GetString ("Select All"));
hist.TakeSnapshot ();
@@ -183,7 +192,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
Cairo.ImageSurface old = doc.CurrentLayer.Surface.Clone ();
@@ -203,7 +212,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
SelectionHistoryItem hist = new SelectionHistoryItem ("Menu.Edit.Deselect.png", Catalog.GetString ("Deselect"));
hist.TakeSnapshot ();
@@ -218,48 +227,49 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
Gtk.Clipboard cb = Gtk.Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
Path p;
- Cairo.ImageSurface old;
- using (Gdk.Pixbuf image = cb.WaitForImage ()) {
+ // Don't dispose this, as we're going to give it to the history
+ Gdk.Pixbuf image = cb.WaitForImage ();
- if (image == null)
- return;
+ if (image == null)
+ return;
- old = doc.CurrentLayer.Surface.Clone ();
+ // Copy the paste to the temp layer
+ doc.CreateSelectionLayer ();
+ doc.ShowSelectionLayer = true;
- using (Cairo.Context g = new Cairo.Context (doc.CurrentLayer.Surface)) {
- g.DrawPixbuf (image, new Cairo.Point (0, 0));
- p = g.CreateRectanglePath (new Rectangle (0, 0, image.Width, image.Height));
- }
+ using (Cairo.Context g = new Cairo.Context (doc.SelectionLayer.Surface)) {
+ g.DrawPixbuf (image, new Cairo.Point (0, 0));
+ p = g.CreateRectanglePath (new Rectangle (0, 0, image.Width, image.Height));
}
+ PintaCore.Tools.SetCurrentTool (Catalog.GetString ("Move Selected Pixels"));
+
Path old_path = doc.SelectionPath;
+ bool old_show_selection = doc.ShowSelection;
doc.SelectionPath = p;
doc.ShowSelection = true;
- if (old_path != null)
- (old_path as IDisposable).Dispose ();
-
doc.Workspace.Invalidate ();
- doc.History.PushNewItem (new SimpleHistoryItem (Stock.Paste, Catalog.GetString ("Paste"), old, doc.CurrentLayerIndex));
+ doc.History.PushNewItem (new PasteHistoryItem (image, old_path, old_show_selection));
}
private void HandlerPintaCoreActionsEditCopyActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
ImageSurface src = doc.GetClippedLayer (doc.CurrentLayerIndex);
- Gdk.Rectangle rect = doc.SelectionPath.GetBounds ();
+ Gdk.Rectangle rect = doc.GetSelectedBounds (true);
ImageSurface dest = new ImageSurface (Format.Argb32, rect.Width, rect.Height);
@@ -279,7 +289,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
// Copy selection
HandlerPintaCoreActionsEditCopyActivated (sender, e);
diff --git a/Pinta.Core/Actions/FileActions.cs b/Pinta.Core/Actions/FileActions.cs
index 92abda5..6172668 100644
--- a/Pinta.Core/Actions/FileActions.cs
+++ b/Pinta.Core/Actions/FileActions.cs
@@ -83,13 +83,13 @@ namespace Pinta.Core
menu.Append (NewScreenshot.CreateMenuItem ());
menu.Append (Open.CreateAcceleratedMenuItem (Gdk.Key.O, Gdk.ModifierType.ControlMask));
menu.Append (OpenRecent.CreateMenuItem ());
- menu.Append (Close.CreateAcceleratedMenuItem (Gdk.Key.W, Gdk.ModifierType.ControlMask));
menu.AppendSeparator ();
menu.Append (Save.CreateAcceleratedMenuItem (Gdk.Key.S, Gdk.ModifierType.ControlMask));
menu.Append (SaveAs.CreateAcceleratedMenuItem (Gdk.Key.S, Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask));
menu.AppendSeparator ();
//menu.Append (Print.CreateAcceleratedMenuItem (Gdk.Key.P, Gdk.ModifierType.ControlMask));
//menu.AppendSeparator ();
+ menu.Append (Close.CreateAcceleratedMenuItem (Gdk.Key.W, Gdk.ModifierType.ControlMask));
menu.Append (Exit.CreateAcceleratedMenuItem (Gdk.Key.Q, Gdk.ModifierType.ControlMask));
}
diff --git a/Pinta.Core/Actions/ImageActions.cs b/Pinta.Core/Actions/ImageActions.cs
index 7206d29..f33f7af 100644
--- a/Pinta.Core/Actions/ImageActions.cs
+++ b/Pinta.Core/Actions/ImageActions.cs
@@ -102,7 +102,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.RotateImageCCW ();
doc.History.PushNewItem (new InvertHistoryItem (InvertType.Rotate90CCW));
@@ -112,7 +112,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.RotateImageCW ();
doc.History.PushNewItem (new InvertHistoryItem (InvertType.Rotate90CW));
@@ -122,7 +122,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
CompoundHistoryItem hist = new CompoundHistoryItem ("Menu.Image.Flatten.png", Catalog.GetString ("Flatten"));
SimpleHistoryItem h1 = new SimpleHistoryItem (string.Empty, string.Empty, doc.Layers[0].Surface.Clone (), 0);
@@ -141,7 +141,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.RotateImage180 ();
doc.History.PushNewItem (new InvertHistoryItem (InvertType.Rotate180));
@@ -151,7 +151,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.FlipImageVertical ();
doc.History.PushNewItem (new InvertHistoryItem (InvertType.FlipVertical));
@@ -161,7 +161,7 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.FlipImageHorizontal ();
doc.History.PushNewItem (new InvertHistoryItem (InvertType.FlipHorizontal));
@@ -171,9 +171,9 @@ namespace Pinta.Core
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
- Gdk.Rectangle rect = doc.SelectionPath.GetBounds ();
+ Gdk.Rectangle rect = doc.GetSelectedBounds (true);
ResizeHistoryItem hist = new ResizeHistoryItem (doc.ImageSize);
@@ -182,8 +182,14 @@ namespace Pinta.Core
hist.TakeSnapshotOfImage ();
hist.RestorePath = doc.SelectionPath.Clone ();
+ PintaCore.Chrome.DrawingArea.GdkWindow.FreezeUpdates ();
+
+ double original_scale = doc.Workspace.Scale;
doc.ImageSize = rect.Size;
doc.Workspace.CanvasSize = rect.Size;
+ doc.Workspace.Scale = original_scale;
+
+ PintaCore.Chrome.DrawingArea.GdkWindow.ThawUpdates ();
foreach (var layer in doc.Layers)
layer.Crop (rect);
diff --git a/Pinta.Core/Actions/LayerActions.cs b/Pinta.Core/Actions/LayerActions.cs
index a9eb456..d4da7f9 100644
--- a/Pinta.Core/Actions/LayerActions.cs
+++ b/Pinta.Core/Actions/LayerActions.cs
@@ -71,7 +71,7 @@ namespace Pinta.Core
RotateZoom = new Gtk.Action ("RotateZoom", Catalog.GetString ("Rotate / Zoom"), null, "Menu.Layers.RotateZoom.png");
MoveLayerUp = new Gtk.Action ("MoveLayerUp", Catalog.GetString ("Move Layer Up"), null, "Menu.Layers.MoveLayerUp.png");
MoveLayerDown = new Gtk.Action ("MoveLayerDown", Catalog.GetString ("Move Layer Down"), null, "Menu.Layers.MoveLayerDown.png");
- Properties = new Gtk.Action ("Properties", Catalog.GetString ("Layer Properties") + "...", null, "Menu.Layers.LayerProperties.png");
+ Properties = new Gtk.Action ("Properties", Catalog.GetString ("Layer Properties..."), null, "Menu.Layers.LayerProperties.png");
RotateZoom.Sensitive = false;
}
@@ -151,7 +151,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersImportFromFileActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
Gtk.FileChooserDialog fcd = new Gtk.FileChooserDialog (Catalog.GetString ("Open Image File"), null, FileChooserAction.Open, Gtk.Stock.Cancel, Gtk.ResponseType.Cancel, Gtk.Stock.Open, Gtk.ResponseType.Ok);
@@ -188,7 +188,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersFlipVerticalActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.CurrentLayer.FlipVertical ();
doc.Workspace.Invalidate ();
@@ -198,7 +198,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersFlipHorizontalActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
doc.CurrentLayer.FlipHorizontal ();
doc.Workspace.Invalidate ();
@@ -208,7 +208,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersMoveLayerUpActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
SwapLayersHistoryItem hist = new SwapLayersHistoryItem ("Menu.Layers.MoveLayerUp.png", Catalog.GetString ("Move Layer Up"), doc.CurrentLayerIndex, doc.CurrentLayerIndex + 1);
@@ -219,7 +219,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersMoveLayerDownActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
SwapLayersHistoryItem hist = new SwapLayersHistoryItem ("Menu.Layers.MoveLayerDown.png", Catalog.GetString ("Move Layer Down"), doc.CurrentLayerIndex, doc.CurrentLayerIndex - 1);
@@ -230,7 +230,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersMergeLayerDownActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
CompoundHistoryItem hist = new CompoundHistoryItem ("Menu.Layers.MergeLayerDown.png", Catalog.GetString ("Merge Layer Down"));
DeleteLayerHistoryItem h1 = new DeleteLayerHistoryItem (string.Empty, string.Empty, doc.CurrentLayer, doc.CurrentLayerIndex);
@@ -247,7 +247,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersDuplicateLayerActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
Layer l = doc.DuplicateCurrentLayer ();
@@ -261,7 +261,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersDeleteLayerActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
DeleteLayerHistoryItem hist = new DeleteLayerHistoryItem ("Menu.Layers.DeleteLayer.png", Catalog.GetString ("Delete Layer"), doc.CurrentLayer, doc.CurrentLayerIndex);
@@ -273,7 +273,7 @@ namespace Pinta.Core
private void HandlePintaCoreActionsLayersAddNewLayerActivated (object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
- doc.FinishSelection ();
+ PintaCore.Tools.Commit ();
Layer l = doc.AddNewLayer (string.Empty);
diff --git a/Pinta.Core/Actions/ViewActions.cs b/Pinta.Core/Actions/ViewActions.cs
index ab071cd..9bbd819 100644
--- a/Pinta.Core/Actions/ViewActions.cs
+++ b/Pinta.Core/Actions/ViewActions.cs
@@ -46,6 +46,7 @@ namespace Pinta.Core
public Gtk.Action Fullscreen { get; private set; }
public ToolBarComboBox ZoomComboBox { get; private set; }
+ public string[] ZoomCollection { get; private set; }
public ViewActions ()
{
@@ -61,9 +62,9 @@ namespace Pinta.Core
ZoomIn = new Gtk.Action ("ZoomIn", Catalog.GetString ("Zoom In"), null, Stock.ZoomIn);
ZoomOut = new Gtk.Action ("ZoomOut", Catalog.GetString ("Zoom Out"), null, Stock.ZoomOut);
- ZoomToWindow = new Gtk.Action ("ZoomToWindow", Catalog.GetString ("Zoom to Window"), null, Stock.ZoomFit);
+ ZoomToWindow = new Gtk.Action ("ZoomToWindow", Catalog.GetString ("Best Fit"), null, Stock.ZoomFit);
ZoomToSelection = new Gtk.Action ("ZoomToSelection", Catalog.GetString ("Zoom to Selection"), null, "Menu.View.ZoomToSelection.png");
- ActualSize = new Gtk.Action ("ActualSize", Catalog.GetString ("Actual Size"), null, Stock.Zoom100);
+ ActualSize = new Gtk.Action ("ActualSize", Catalog.GetString ("Normal Size"), null, Stock.Zoom100);
ToolBar = new Gtk.ToggleAction ("Toolbar", Catalog.GetString ("Toolbar"), null, null);
PixelGrid = new Gtk.ToggleAction ("PixelGrid", Catalog.GetString ("Pixel Grid"), null, "Menu.View.Grid.png");
Rulers = new Gtk.ToggleAction ("Rulers", Catalog.GetString ("Rulers"), null, "Menu.View.Rulers.png");
@@ -71,8 +72,9 @@ namespace Pinta.Core
Inches = new Gtk.RadioAction ("Inches", Catalog.GetString ("Inches"), null, null, 1);
Centimeters = new Gtk.RadioAction ("Centimeters", Catalog.GetString ("Centimeters"), null, null, 2);
Fullscreen = new Gtk.Action ("Fullscreen", Catalog.GetString ("Fullscreen"), null, Stock.Fullscreen);
-
- ZoomComboBox = new ToolBarComboBox (75, 11, true, "3600%", "2400%", "1600%", "1200%", "800%", "700%", "600%", "500%", "400%", "300%", "200%", "100%", "66%", "50%", "33%", "25%", "16%", "12%", "8%", "5%", "Window");
+
+ ZoomCollection = new string[] { "3600%", "2400%", "1600%", "1200%", "800%", "700%", "600%", "500%", "400%", "300%", "200%", "100%", "66%", "50%", "33%", "25%", "16%", "12%", "8%", "5%", "Window" };
+ ZoomComboBox = new ToolBarComboBox (75, 11, true, ZoomCollection);
// Make sure these are the same group so only one will be selected at a time
Inches.Group = Pixels.Group;
@@ -85,6 +87,11 @@ namespace Pinta.Core
MenuItem show_pad = (MenuItem)menu.Children[0];
menu.Remove (show_pad);
+ menu.Append (ToolBar.CreateMenuItem ());
+ menu.Append (PixelGrid.CreateMenuItem ());
+ menu.Append (Rulers.CreateMenuItem ());
+ menu.AppendSeparator ();
+
ImageMenuItem zoomin = ZoomIn.CreateAcceleratedMenuItem (Gdk.Key.plus, Gdk.ModifierType.ControlMask);
zoomin.AddAccelerator ("activate", PintaCore.Actions.AccelGroup, new AccelKey (Gdk.Key.equal, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
zoomin.AddAccelerator ("activate", PintaCore.Actions.AccelGroup, new AccelKey (Gdk.Key.KP_Add, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
@@ -95,17 +102,13 @@ namespace Pinta.Core
zoomout.AddAccelerator ("activate", PintaCore.Actions.AccelGroup, new AccelKey (Gdk.Key.KP_Subtract, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
menu.Append (zoomout);
- menu.Append (ZoomToWindow.CreateAcceleratedMenuItem (Gdk.Key.B, Gdk.ModifierType.ControlMask));
- //menu.Append (ZoomToSelection.CreateAcceleratedMenuItem (Gdk.Key.B, Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask));
ImageMenuItem actualsize = ActualSize.CreateAcceleratedMenuItem (Gdk.Key.Key_0, Gdk.ModifierType.ControlMask);
actualsize.AddAccelerator ("activate", PintaCore.Actions.AccelGroup, new AccelKey (Gdk.Key.A, Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask, AccelFlags.Visible));
menu.Append (actualsize);
-
- menu.AppendSeparator ();
- menu.Append (ToolBar.CreateMenuItem ());
- menu.Append (PixelGrid.CreateMenuItem ());
- menu.Append (Rulers.CreateMenuItem ());
+ menu.Append (ZoomToWindow.CreateAcceleratedMenuItem (Gdk.Key.B, Gdk.ModifierType.ControlMask));
+ //menu.Append (ZoomToSelection.CreateAcceleratedMenuItem (Gdk.Key.B, Gdk.ModifierType.ControlMask | Gdk.ModifierType.ShiftMask));
menu.Append (Fullscreen.CreateAcceleratedMenuItem (Gdk.Key.F11, Gdk.ModifierType.None));
+
menu.AppendSeparator ();
Gtk.Action unit_action = new Gtk.Action ("RulerUnits", Mono.Unix.Catalog.GetString ("Ruler Units"), null, null);
@@ -183,18 +186,9 @@ namespace Pinta.Core
{
suspend_zoom_change = false;
}
-
- #region Action Handlers
- private void HandlePintaCoreActionsViewActualSizeActivated (object sender, EventArgs e)
- {
- PintaCore.Actions.View.ZoomComboBox.ComboBox.Active = 11;
- }
- private void HandlePintaCoreActionsViewZoomComboBoxComboBoxChanged (object sender, EventArgs e)
+ public void UpdateCanvasScale ()
{
- if (suspend_zoom_change)
- return;
-
string text = PintaCore.Actions.View.ZoomComboBox.ComboBox.ActiveText;
if (text == Catalog.GetString ("Window")) {
@@ -213,7 +207,20 @@ namespace Pinta.Core
percent = percent / 100.0;
PintaCore.Workspace.Scale = percent;
-
+ }
+
+ #region Action Handlers
+ private void HandlePintaCoreActionsViewActualSizeActivated (object sender, EventArgs e)
+ {
+ PintaCore.Actions.View.ZoomComboBox.ComboBox.Active = 11;
+ }
+
+ private void HandlePintaCoreActionsViewZoomComboBoxComboBoxChanged (object sender, EventArgs e)
+ {
+ if (suspend_zoom_change)
+ return;
+
+ PintaCore.Workspace.ActiveDocument.Workspace.ZoomManually ();
}
private void HandlePintaCoreActionsViewZoomOutActivated (object sender, EventArgs e)
diff --git a/Pinta.Core/AssemblyInfo.cs b/Pinta.Core/AssemblyInfo.cs
index a9af109..d5d9c35 100644
--- a/Pinta.Core/AssemblyInfo.cs
+++ b/Pinta.Core/AssemblyInfo.cs
@@ -17,7 +17,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("0.5.0.0")]
+[assembly: AssemblyVersion("0.6.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta.Core/EventArgs/DocumentEventArgs.cs b/Pinta.Core/Classes/BaseExtension.cs
similarity index 86%
copy from Pinta.Core/EventArgs/DocumentEventArgs.cs
copy to Pinta.Core/Classes/BaseExtension.cs
index a3f8e17..26d422e 100644
--- a/Pinta.Core/EventArgs/DocumentEventArgs.cs
+++ b/Pinta.Core/Classes/BaseExtension.cs
@@ -1,5 +1,5 @@
//
-// DocumentEventArgs.cs
+// BaseExtension.cs
//
// Author:
// Jonathan Pobst <monkey at jpobst.com>
@@ -24,17 +24,18 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+
using System;
namespace Pinta.Core
{
- public class DocumentEventArgs : EventArgs
+ public class BaseExtension
{
- public Document Document { get; set; }
-
- public DocumentEventArgs (Document document)
+ /// <summary>
+ /// Called during startup, perform any necessary initialization here
+ /// </summary>
+ public virtual void Initialize ()
{
- Document = document;
}
}
}
diff --git a/Pinta.Core/Classes/BaseTool.cs b/Pinta.Core/Classes/BaseTool.cs
index ccb06d3..ee35bac 100644
--- a/Pinta.Core/Classes/BaseTool.cs
+++ b/Pinta.Core/Classes/BaseTool.cs
@@ -102,6 +102,11 @@ namespace Pinta.Core
OnMouseUp (canvas, args, point);
}
+ public void DoCommit ()
+ {
+ OnCommit ();
+ }
+
public void DoActivated ()
{
OnActivated ();
@@ -180,6 +185,15 @@ namespace Pinta.Core
{
}
+ /// <summary>
+ /// This is called whenever a menu option is called, for
+ /// tools that are in a temporary state while being used, and
+ /// need to commit their work when another option is selected.
+ /// </summary>
+ protected virtual void OnCommit ()
+ {
+ }
+
protected virtual void OnActivated ()
{
SetCursor (DefaultCursor);
diff --git a/Pinta.Core/Classes/Document.cs b/Pinta.Core/Classes/Document.cs
index 56158bc..0b68ef1 100644
--- a/Pinta.Core/Classes/Document.cs
+++ b/Pinta.Core/Classes/Document.cs
@@ -314,8 +314,13 @@ namespace Pinta.Core
public void CreateSelectionLayer ()
{
+ Layer old = selection_layer;
+
selection_layer = CreateLayer ();
selection_layer_index = current_layer + 1;
+
+ if (old != null)
+ (old.Surface as IDisposable).Dispose ();
}
// Delete the current layer
@@ -487,16 +492,35 @@ namespace Pinta.Core
public List<Layer> GetLayersToPaint ()
{
- List<Layer> paint = Layers.Where (l => !l.Hidden).ToList ();
+ List<Layer> paint = new List<Layer> ();
- if (!tool_layer.Hidden)
- paint.Add (tool_layer);
- if (ShowSelectionLayer)
- paint.Insert (selection_layer_index, selection_layer);
+ foreach (var layer in Layers) {
+ if (!layer.Hidden)
+ paint.Add (layer);
+
+ if (layer == CurrentLayer) {
+ if (!tool_layer.Hidden)
+ paint.Add (tool_layer);
+
+ if (ShowSelectionLayer)
+ paint.Add (selection_layer);
+ }
+ }
return paint;
}
+ /// <param name="canvasOnly">false for the whole selection, true for the part only on our canvas</param>
+ public Gdk.Rectangle GetSelectedBounds (bool canvasOnly)
+ {
+ var bounds = SelectionPath.GetBounds ();
+
+ if (canvasOnly)
+ bounds = ClampToImageSize (bounds);
+
+ return bounds;
+ }
+
public int IndexOf (Layer layer)
{
return Layers.IndexOf (layer);
@@ -582,7 +606,7 @@ namespace Pinta.Core
if (ImageSize.Width == width && ImageSize.Height == height)
return;
- FinishSelection ();
+ PintaCore.Tools.Commit ();
ResizeHistoryItem hist = new ResizeHistoryItem (ImageSize);
hist.Icon = "Menu.Image.CanvasSize.png";
@@ -610,7 +634,7 @@ namespace Pinta.Core
if (ImageSize.Width == width && ImageSize.Height == height)
return;
- FinishSelection ();
+ PintaCore.Tools.Commit ();
ResizeHistoryItem hist = new ResizeHistoryItem (ImageSize);
hist.TakeSnapshotOfImage ();
diff --git a/Pinta.Core/Classes/DocumentWorkspace.cs b/Pinta.Core/Classes/DocumentWorkspace.cs
index e82bfae..80507a6 100644
--- a/Pinta.Core/Classes/DocumentWorkspace.cs
+++ b/Pinta.Core/Classes/DocumentWorkspace.cs
@@ -1,4 +1,4 @@
-//
+//
// DocumentWorkspace.cs
//
// Author:
@@ -34,6 +34,12 @@ namespace Pinta.Core
{
private Document document;
private Size canvas_size;
+ private enum ZoomType
+ {
+ ZoomIn,
+ ZoomOut,
+ ZoomManually
+ }
internal DocumentWorkspace (Document document)
{
@@ -45,13 +51,13 @@ namespace Pinta.Core
public bool CanvasFitsInWindow {
get {
Gtk.Viewport view = (Gtk.Viewport)PintaCore.Chrome.DrawingArea.Parent;
-
+
int window_x = view.Allocation.Width;
int window_y = view.Children[0].Allocation.Height;
-
+
if (CanvasSize.Width <= window_x && CanvasSize.Height <= window_y)
return true;
-
+
return false;
}
}
@@ -67,34 +73,34 @@ namespace Pinta.Core
}
public DocumentWorkspaceHistory History { get; private set; }
-
+
public bool ImageFitsInWindow {
get {
Gtk.Viewport view = (Gtk.Viewport)PintaCore.Chrome.DrawingArea.Parent;
-
+
int window_x = view.Allocation.Width;
int window_y = view.Children[0].Allocation.Height;
-
+
if (document.ImageSize.Width <= window_x && document.ImageSize.Height <= window_y)
return true;
-
+
return false;
}
}
-
+
public Cairo.PointD Offset {
get { return new Cairo.PointD ((PintaCore.Chrome.DrawingArea.Allocation.Width - canvas_size.Width) / 2, (PintaCore.Chrome.DrawingArea.Allocation.Height - canvas_size.Height) / 2); }
}
-
+
public double Scale {
get { return (double)CanvasSize.Width / (double)document.ImageSize.Width; }
set {
if (value != (double)CanvasSize.Width / (double)document.ImageSize.Width || value != (double)CanvasSize.Height / (double)document.ImageSize.Height) {
int new_x = (int)(document.ImageSize.Width * value);
int new_y = (int)((new_x * document.ImageSize.Height) / document.ImageSize.Width);
-
+
CanvasSize = new Gdk.Size (new_x, new_y);
- Invalidate();
+ Invalidate ();
}
}
}
@@ -106,7 +112,7 @@ namespace Pinta.Core
{
PintaCore.Workspace.OnCanvasInvalidated (new CanvasInvalidatedEventArgs ());
}
-
+
public void Invalidate (Gdk.Rectangle rect)
{
rect = new Gdk.Rectangle ((int)((rect.X) * Scale + Offset.X), (int)((rect.Y) * Scale + Offset.Y), (int)(rect.Width * Scale), (int)(rect.Height * Scale));
@@ -117,17 +123,17 @@ namespace Pinta.Core
{
if (point.X < 0 || point.Y < 0)
return false;
-
+
if (point.X >= document.ImageSize.Width || point.Y >= document.ImageSize.Height)
return false;
-
+
return true;
}
public void RecenterView (double x, double y)
{
Gtk.Viewport view = (Gtk.Viewport)PintaCore.Chrome.DrawingArea.Parent;
-
+
view.Hadjustment.Value = Utility.Clamp (x * Scale - view.Hadjustment.PageSize / 2, view.Hadjustment.Lower, view.Hadjustment.Upper);
view.Vadjustment.Value = Utility.Clamp (y * Scale - view.Vadjustment.PageSize / 2, view.Vadjustment.Lower, view.Vadjustment.Upper);
}
@@ -135,74 +141,130 @@ namespace Pinta.Core
public void ScrollCanvas (int dx, int dy)
{
Gtk.Viewport view = (Gtk.Viewport)PintaCore.Chrome.DrawingArea.Parent;
-
+
view.Hadjustment.Value = Utility.Clamp (dx + view.Hadjustment.Value, view.Hadjustment.Lower, view.Hadjustment.Upper - view.Hadjustment.PageSize);
view.Vadjustment.Value = Utility.Clamp (dy + view.Vadjustment.Value, view.Vadjustment.Lower, view.Vadjustment.Upper - view.Vadjustment.PageSize);
}
public Cairo.PointD WindowPointToCanvas (double x, double y)
{
- return new Cairo.PointD (Math.Round ((x - Offset.X) / PintaCore.Workspace.Scale), Math.Round ((y - Offset.Y) / PintaCore.Workspace.Scale));
+ return new Cairo.PointD (Math.Floor ((x - Offset.X) / PintaCore.Workspace.Scale), Math.Floor ((y - Offset.Y) / PintaCore.Workspace.Scale));
}
public void ZoomIn ()
{
- double zoom;
-
- if (!double.TryParse (PintaCore.Actions.View.ZoomComboBox.ComboBox.ActiveText.Trim ('%'), out zoom))
- zoom = Scale * 100;
-
- zoom = Math.Min (zoom, 3600);
-
- int i = 0;
-
- foreach (object item in (PintaCore.Actions.View.ZoomComboBox.ComboBox.Model as Gtk.ListStore)) {
- if (((object[])item)[0].ToString () == Catalog.GetString ("Window") || int.Parse (((object[])item)[0].ToString ().Trim ('%')) <= zoom) {
- PintaCore.Actions.View.ZoomComboBox.ComboBox.Active = i - 1;
- return;
- }
-
- i++;
- }
+ ZoomAndRecenterView (ZoomType.ZoomIn, new Cairo.PointD (-1, -1)); // Zoom in relative to the center of the viewport.
}
public void ZoomOut ()
{
- double zoom;
-
- if (!double.TryParse (PintaCore.Actions.View.ZoomComboBox.ComboBox.ActiveText.Trim ('%'), out zoom))
- zoom = Scale * 100;
-
- zoom = Math.Min (zoom, 3600);
-
- int i = 0;
+ ZoomAndRecenterView (ZoomType.ZoomOut, new Cairo.PointD (-1, -1)); // Zoom out relative to the center of the viewport.
+ }
- foreach (object item in (PintaCore.Actions.View.ZoomComboBox.ComboBox.Model as Gtk.ListStore)) {
- if (((object[])item)[0].ToString () == Catalog.GetString ("Window"))
- return;
+ public void ZoomInFromMouseScroll (Cairo.PointD point)
+ {
+ ZoomAndRecenterView (ZoomType.ZoomIn, point); // Zoom in relative to mouse position.
+ }
- if (int.Parse (((object[])item)[0].ToString ().Trim ('%')) < zoom) {
- PintaCore.Actions.View.ZoomComboBox.ComboBox.Active = i;
- return;
- }
+ public void ZoomOutFromMouseScroll (Cairo.PointD point)
+ {
+ ZoomAndRecenterView (ZoomType.ZoomOut, point); // Zoom out relative to mouse position.
+ }
- i++;
- }
+ public void ZoomManually ()
+ {
+ ZoomAndRecenterView (ZoomType.ZoomManually, new Cairo.PointD (-1, -1));
}
public void ZoomToRectangle (Cairo.Rectangle rect)
{
double ratio;
-
+
if (document.ImageSize.Width / rect.Width <= document.ImageSize.Height / rect.Height)
ratio = document.ImageSize.Width / rect.Width;
else
ratio = document.ImageSize.Height / rect.Height;
-
+
(PintaCore.Actions.View.ZoomComboBox.ComboBox as Gtk.ComboBoxEntry).Entry.Text = String.Format ("{0:F}%", ratio * 100.0);
Gtk.Main.Iteration (); //Force update of scrollbar upper before recenter
RecenterView (rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
}
#endregion
+
+ #region Private Methods
+ private void ZoomAndRecenterView (ZoomType zoomType, Cairo.PointD point)
+ {
+ double zoom;
+
+ if (!double.TryParse (PintaCore.Actions.View.ZoomComboBox.ComboBox.ActiveText.Trim ('%'), out zoom))
+ zoom = Scale * 100;
+
+ zoom = Math.Min (zoom, 3600);
+
+ PintaCore.Chrome.DrawingArea.GdkWindow.FreezeUpdates ();
+ PintaCore.Actions.View.SuspendZoomUpdate ();
+
+ Gtk.Viewport view = (Gtk.Viewport)PintaCore.Chrome.DrawingArea.Parent;
+
+ bool adjustOnMousePosition = point.X >= 0.0 && point.Y >= 0.0;
+
+ double center_x = adjustOnMousePosition ?
+ point.X : view.Hadjustment.Value + (view.Hadjustment.PageSize / 2.0);
+ double center_y = adjustOnMousePosition ?
+ point.Y : view.Vadjustment.Value + (view.Vadjustment.PageSize / 2.0);
+
+ center_x = (center_x - Offset.X) / Scale;
+ center_y = (center_y - Offset.Y) / Scale;
+
+ if (zoomType == ZoomType.ZoomIn || zoomType == ZoomType.ZoomOut) {
+ int i = 0;
+
+ Predicate<string> UpdateZoomLevel = zoomInList =>
+ {
+ switch (zoomType) {
+ case ZoomType.ZoomIn:
+ if (zoomInList == Catalog.GetString ("Window") || int.Parse (zoomInList.Trim ('%')) <= zoom) {
+ PintaCore.Actions.View.ZoomComboBox.ComboBox.Active = i - 1;
+ return true;
+ }
+
+ break;
+
+ case ZoomType.ZoomOut:
+ if (zoomInList == Catalog.GetString ("Window"))
+ return true;
+
+ if (int.Parse (zoomInList.Trim ('%')) < zoom) {
+ PintaCore.Actions.View.ZoomComboBox.ComboBox.Active = i;
+ return true;
+ }
+
+ break;
+ }
+
+ return false;
+ };
+
+ foreach (string item in PintaCore.Actions.View.ZoomCollection) {
+ if (UpdateZoomLevel (item))
+ break;
+
+ i++;
+ }
+ }
+
+ PintaCore.Actions.View.UpdateCanvasScale ();
+
+ // Quick fix : need to manually update Upper limit because the value is not changing after updating the canvas scale.
+ // TODO : I think there is an event need to be fired so that those values updated automatically.
+ view.Hadjustment.Upper = CanvasSize.Width < view.Hadjustment.PageSize ? view.Hadjustment.PageSize : CanvasSize.Width;
+ view.Vadjustment.Upper = CanvasSize.Height < view.Vadjustment.PageSize ? view.Vadjustment.PageSize : CanvasSize.Height;
+
+ RecenterView (center_x, center_y);
+
+ PintaCore.Actions.View.ResumeZoomUpdate ();
+ PintaCore.Chrome.DrawingArea.GdkWindow.ThawUpdates ();
+ }
+ #endregion
}
}
diff --git a/Pinta.Core/Classes/Layer.cs b/Pinta.Core/Classes/Layer.cs
index 66f0ff3..6e09c04 100644
--- a/Pinta.Core/Classes/Layer.cs
+++ b/Pinta.Core/Classes/Layer.cs
@@ -83,10 +83,7 @@ namespace Pinta.Core
public void Clear ()
{
- using (Context g = new Context (Surface)) {
- g.Operator = Operator.Clear;
- g.Paint ();
- }
+ Surface.Clear ();
}
public void FlipHorizontal ()
diff --git a/Pinta.Core/Effects/IrregularSurface.cs b/Pinta.Core/Effects/IrregularSurface.cs
index dd3bd55..992afd1 100644
--- a/Pinta.Core/Effects/IrregularSurface.cs
+++ b/Pinta.Core/Effects/IrregularSurface.cs
@@ -6,236 +6,201 @@
/////////////////////////////////////////////////////////////////////////////////
using System;
-using System.Collections;
+using System.Collections.Generic;
using System.Runtime.Serialization;
using Gdk;
-using System.Collections.Generic;
namespace Pinta.Core
{
- /// <summary>
- /// Defines a surface that is irregularly shaped, defined by a Region.
- /// Works by containing an array of PlacedSurface instances.
- /// Similar to IrregularImage, but works with Surface objects instead.
- /// Instances of this class are immutable once created.
- /// </summary>
- [Serializable]
- public sealed class IrregularSurface
- : ISurfaceDraw,
- IDisposable,
- ICloneable,
- IDeserializationCallback
- {
- private List<PlacedSurface> placedSurfaces;
-
- [NonSerialized]
- private Region region;
-
- /// <summary>
- /// The Region that the irregular image fills.
- /// </summary>
- public Region Region
- {
- get
- {
- if (this.disposed)
- {
- throw new ObjectDisposedException("IrregularSurface");
- }
-
- return this.region;
- }
- }
-
- /// <summary>
- /// Constructs an IrregularSurface by copying the given region-of-interest from an Image.
- /// </summary>
- /// <param name="source">The Surface to copy pixels from.</param>
- /// <param name="roi">Defines the Region from which to copy pixels from the Image.</param>
- public IrregularSurface (Cairo.ImageSurface source, Region roi)
- {
- Region roiClipped = (Region)roi.Copy();
- roiClipped.Intersect(Region.Rectangle(source.GetBounds()));
-
- Rectangle[] rects = roiClipped.GetRectangles();
- this.placedSurfaces = new List<PlacedSurface>(rects.Length);
-
- foreach (Rectangle rect in rects)
- {
- this.placedSurfaces.Add(new PlacedSurface(source, rect));
- }
-
- this.region = roiClipped;
- }
-
- public IrregularSurface(Cairo.ImageSurface source, Rectangle[] roi)
- {
- this.placedSurfaces = new List<PlacedSurface>(roi.Length);
-
- foreach (Rectangle rect in roi)
- {
- Rectangle ri = Rectangle.Intersect(source.GetBounds(), rect);
-
- if (!ri.IsEmpty)
- {
- this.placedSurfaces.Add(new PlacedSurface(source, ri));
- }
- }
-
- this.region = Utility.RectanglesToRegion(roi);
- this.region.Intersect(Region.Rectangle(source.GetBounds()));
- }
-
- /// <summary>
- /// Constructs an IrregularSurface by copying the given rectangle-of-interest from an Image.
- /// </summary>
- /// <param name="source">The Surface to copy pixels from.</param>
- /// <param name="roi">Defines the Rectangle from which to copy pixels from the Image.</param>
- public IrregularSurface (Cairo.ImageSurface source, Rectangle roi)
- {
- this.placedSurfaces = new List<PlacedSurface>();
- this.placedSurfaces.Add(new PlacedSurface(source, roi));
- this.region = Region.Rectangle(roi);
- }
-
- private IrregularSurface (IrregularSurface cloneMe)
- {
- this.placedSurfaces = new List<PlacedSurface>(cloneMe.placedSurfaces.Count);
-
- foreach (PlacedSurface ps in cloneMe.placedSurfaces)
- {
- this.placedSurfaces.Add((PlacedSurface)ps.Clone());
- }
-
- this.region = cloneMe.Region.Copy();
- }
-
- ~IrregularSurface()
- {
- Dispose(false);
- }
-
- /// <summary>
- /// Draws the IrregularSurface on to the given Surface.
- /// </summary>
- /// <param name="dst">The Surface to draw to.</param>
- public void Draw(Cairo.ImageSurface dst)
- {
- if (disposed)
- {
- throw new ObjectDisposedException("IrregularSurface");
- }
-
- foreach (PlacedSurface ps in placedSurfaces)
- {
- ps.Draw(dst);
- }
- }
-
- public void Draw(Cairo.ImageSurface dst, PixelOp pixelOp)
- {
- if (this.disposed)
- {
- throw new ObjectDisposedException("IrregularSurface");
- }
-
- foreach (PlacedSurface ps in this.placedSurfaces)
- {
- ps.Draw(dst, pixelOp);
- }
- }
-
- /// <summary>
- /// Draws the IrregularSurface on to the given Surface starting at the given (x,y) offset.
- /// </summary>
- /// <param name="g">The Surface to draw to.</param>
- /// <param name="transformX">The value to be added to every X coordinate that is used for drawing.</param>
- /// <param name="transformY">The value to be added to every Y coordinate that is used for drawing.</param>
- public void Draw(Cairo.ImageSurface dst, int tX, int tY)
- {
- if (this.disposed)
- {
- throw new ObjectDisposedException("IrregularSurface");
- }
-
- foreach (PlacedSurface ps in this.placedSurfaces)
- {
- ps.Draw(dst, tX, tY);
- }
- }
-
- public void Draw(Cairo.ImageSurface dst, int tX, int tY, PixelOp pixelOp)
- {
- if (this.disposed)
- {
- throw new ObjectDisposedException("IrregularSurface");
- }
-
- foreach (PlacedSurface ps in this.placedSurfaces)
- {
- ps.Draw(dst, tX, tY, pixelOp);
- }
- }
-
- #region IDisposable Members
- private bool disposed = false;
-
- public void Dispose()
- {
- Dispose(true);
- System.GC.SuppressFinalize(this);
- }
-
- private void Dispose(bool disposing)
- {
- if (!this.disposed)
- {
- // TODO: FXCOP: call Dispose() on this.region
-
- this.disposed = true;
-
- if (disposing)
- {
- this.placedSurfaces.Clear();
- this.placedSurfaces = null;
- }
- }
- }
- #endregion
-
- #region ICloneable Members
-
- /// <summary>
- /// Clones the IrregularSurface.
- /// </summary>
- /// <returns>A copy of the current state of this PlacedSurface.</returns>
- public object Clone()
- {
- if (disposed)
- {
- throw new ObjectDisposedException("IrregularSurface");
- }
-
- return new IrregularSurface(this);
- }
- #endregion
-
- #region IDeserializationCallback Members
-
- public void OnDeserialization(object sender)
- {
- region = Region.Rectangle(Rectangle.Zero);
-
- Rectangle[] rects = new Rectangle[placedSurfaces.Count];
-
- for (int i = 0; i < placedSurfaces.Count; ++i)
- {
- rects[i] = placedSurfaces[i].Bounds;
- }
-
- region = Utility.RectanglesToRegion(rects);
- }
-
- #endregion
- }
+ /// <summary>
+ /// Defines a surface that is irregularly shaped, defined by a Region.
+ /// Works by containing an array of PlacedSurface instances.
+ /// Similar to IrregularImage, but works with Surface objects instead.
+ /// Instances of this class are immutable once created.
+ /// </summary>
+ [Serializable]
+ public sealed class IrregularSurface : ISurfaceDraw, IDisposable, ICloneable, IDeserializationCallback
+ {
+ private List<PlacedSurface> placedSurfaces;
+
+ [NonSerialized]
+ private Region region;
+
+ #region Constructors
+ /// <summary>
+ /// Constructs an IrregularSurface by copying the given region-of-interest from an Image.
+ /// </summary>
+ /// <param name="source">The Surface to copy pixels from.</param>
+ /// <param name="roi">Defines the Region from which to copy pixels from the Image.</param>
+ public IrregularSurface (Cairo.ImageSurface source, Region roi)
+ {
+ Region roiClipped = (Region)roi.Copy ();
+ roiClipped.Intersect (Region.Rectangle (source.GetBounds ()));
+
+ Rectangle[] rects = roiClipped.GetRectangles ();
+ this.placedSurfaces = new List<PlacedSurface> (rects.Length);
+
+ foreach (Rectangle rect in rects)
+ this.placedSurfaces.Add (new PlacedSurface (source, rect));
+
+ this.region = roiClipped;
+ }
+
+ public IrregularSurface (Cairo.ImageSurface source, Rectangle[] roi)
+ {
+ this.placedSurfaces = new List<PlacedSurface> (roi.Length);
+
+ foreach (Rectangle rect in roi) {
+ Rectangle ri = Rectangle.Intersect (source.GetBounds (), rect);
+
+ if (!ri.IsEmpty)
+ this.placedSurfaces.Add (new PlacedSurface (source, ri));
+ }
+
+ this.region = Utility.RectanglesToRegion (roi);
+ this.region.Intersect (Region.Rectangle (source.GetBounds ()));
+ }
+
+ /// <summary>
+ /// Constructs an IrregularSurface by copying the given rectangle-of-interest from an Image.
+ /// </summary>
+ /// <param name="source">The Surface to copy pixels from.</param>
+ /// <param name="roi">Defines the Rectangle from which to copy pixels from the Image.</param>
+ public IrregularSurface (Cairo.ImageSurface source, Rectangle roi)
+ {
+ this.placedSurfaces = new List<PlacedSurface> ();
+ this.placedSurfaces.Add (new PlacedSurface (source, roi));
+ this.region = Region.Rectangle (roi);
+ }
+
+ private IrregularSurface (IrregularSurface cloneMe)
+ {
+ this.placedSurfaces = new List<PlacedSurface> (cloneMe.placedSurfaces.Count);
+
+ foreach (PlacedSurface ps in cloneMe.placedSurfaces)
+ this.placedSurfaces.Add ((PlacedSurface)ps.Clone ());
+
+ this.region = cloneMe.Region.Copy ();
+ }
+
+ ~IrregularSurface ()
+ {
+ Dispose (false);
+ }
+ #endregion
+
+ #region Public Properties
+ /// <summary>
+ /// The Region that the irregular image fills.
+ /// </summary>
+ public Region Region {
+ get {
+ if (this.disposed)
+ throw new ObjectDisposedException ("IrregularSurface");
+
+ return this.region;
+ }
+ }
+ #endregion
+
+ #region Public Methods
+ /// <summary>
+ /// Draws the IrregularSurface on to the given Surface.
+ /// </summary>
+ /// <param name="dst">The Surface to draw to.</param>
+ public void Draw (Cairo.ImageSurface dst)
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("IrregularSurface");
+
+ foreach (PlacedSurface ps in placedSurfaces)
+ ps.Draw (dst);
+ }
+
+ public void Draw (Cairo.ImageSurface dst, PixelOp pixelOp)
+ {
+ if (this.disposed)
+ throw new ObjectDisposedException ("IrregularSurface");
+
+ foreach (PlacedSurface ps in this.placedSurfaces)
+ ps.Draw (dst, pixelOp);
+ }
+
+ /// <summary>
+ /// Draws the IrregularSurface on to the given Surface starting at the given (x,y) offset.
+ /// </summary>
+ /// <param name="g">The Surface to draw to.</param>
+ /// <param name="transformX">The value to be added to every X coordinate that is used for drawing.</param>
+ /// <param name="transformY">The value to be added to every Y coordinate that is used for drawing.</param>
+ public void Draw (Cairo.ImageSurface dst, int tX, int tY)
+ {
+ if (this.disposed)
+ throw new ObjectDisposedException ("IrregularSurface");
+
+ foreach (PlacedSurface ps in this.placedSurfaces)
+ ps.Draw (dst, tX, tY);
+ }
+
+ public void Draw (Cairo.ImageSurface dst, int tX, int tY, PixelOp pixelOp)
+ {
+ if (this.disposed)
+ throw new ObjectDisposedException ("IrregularSurface");
+
+ foreach (PlacedSurface ps in this.placedSurfaces)
+ ps.Draw (dst, tX, tY, pixelOp);
+ }
+ #endregion
+
+ #region IDisposable Members
+ private bool disposed = false;
+
+ public void Dispose ()
+ {
+ Dispose (true);
+ System.GC.SuppressFinalize (this);
+ }
+
+ private void Dispose (bool disposing)
+ {
+ if (!this.disposed) {
+ // TODO: FXCOP: call Dispose() on this.region
+
+ this.disposed = true;
+
+ if (disposing) {
+ this.placedSurfaces.Clear ();
+ this.placedSurfaces = null;
+ }
+ }
+ }
+ #endregion
+
+ #region ICloneable Members
+ /// <summary>
+ /// Clones the IrregularSurface.
+ /// </summary>
+ /// <returns>A copy of the current state of this PlacedSurface.</returns>
+ public object Clone ()
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("IrregularSurface");
+
+ return new IrregularSurface (this);
+ }
+ #endregion
+
+ #region IDeserializationCallback Members
+ public void OnDeserialization (object sender)
+ {
+ region = Region.Rectangle (Rectangle.Zero);
+
+ Rectangle[] rects = new Rectangle[placedSurfaces.Count];
+
+ for (int i = 0; i < placedSurfaces.Count; ++i)
+ rects[i] = placedSurfaces[i].Bounds;
+
+ region = Utility.RectanglesToRegion (rects);
+ }
+ #endregion
+ }
}
diff --git a/Pinta.Core/Effects/PlacedSurface.cs b/Pinta.Core/Effects/PlacedSurface.cs
index 90e7e4c..1b45e82 100644
--- a/Pinta.Core/Effects/PlacedSurface.cs
+++ b/Pinta.Core/Effects/PlacedSurface.cs
@@ -10,186 +10,166 @@ using Cairo;
namespace Pinta.Core
{
- /// <summary>
- /// Encapsulates a surface ("what") along with a pixel offset ("where") which
- /// defines where the surface would be drawn on to another surface.
- /// Instances of this object are immutable -- once you create it, you can not
- /// change it.
- /// </summary>
- [Serializable]
- public sealed class PlacedSurface
- : ISurfaceDraw,
- ICloneable
- {
- Gdk.Point where;
- ImageSurface what;
-
- public Gdk.Point Where
- {
- get
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- return where;
- }
- }
-
- public ImageSurface What
- {
- get
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- return what;
- }
- }
-
- public Gdk.Size Size
- {
- get
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- return new Gdk.Size(what.Width, what.Height);
- }
- }
-
- public Gdk.Rectangle Bounds
- {
- get
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- return new Gdk.Rectangle(Where, Size);
- }
- }
-
- public void Draw(ImageSurface dst)
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- using (Cairo.Context g = new Cairo.Context(dst))
- g.DrawPixbuf(what.ToPixbuf(), new Cairo.Point(where.X, where.Y));
- }
-
- public void Draw(ImageSurface dst, PixelOp pixelOp)
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- Gdk.Rectangle dstRect = Bounds;
- Gdk.Rectangle dstClip = Gdk.Rectangle.Intersect(dstRect, dst.GetBounds());
-
- if (dstClip.Width > 0 && dstClip.Height > 0)
- {
- int dtX = dstClip.X - where.X;
- int dtY = dstClip.Y - where.Y;
-
- pixelOp.Apply(dst, dstClip.Location, what, new Gdk.Point(dtX, dtY), dstClip.Size);
- }
- }
-
- public void Draw(ImageSurface dst, int tX, int tY)
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- Gdk.Point oldWhere = where;
-
- try
- {
- where.X += tX;
- where.Y += tY;
- Draw(dst);
- }
-
- finally
- {
- where = oldWhere;
- }
- }
-
- public void Draw(ImageSurface dst, int tX, int tY, PixelOp pixelOp)
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
-
- Gdk.Point oldWhere = where;
-
- try
- {
- where.X += tX;
- where.Y += tY;
- Draw(dst, pixelOp);
- }
-
- finally
- {
- where = oldWhere;
- }
- }
-
- public PlacedSurface(ImageSurface source, Gdk.Rectangle roi)
- {
- where = roi.Location;
- what = new ImageSurface(Format.Argb32, roi.Width, roi.Height);
-
+ /// <summary>
+ /// Encapsulates a surface ("what") along with a pixel offset ("where") which
+ /// defines where the surface would be drawn on to another surface.
+ /// Instances of this object are immutable -- once you create it, you can not
+ /// change it.
+ /// </summary>
+ [Serializable]
+ public sealed class PlacedSurface : ISurfaceDraw, ICloneable
+ {
+ Gdk.Point where;
+ ImageSurface what;
+
+ #region Constructors
+ private PlacedSurface (PlacedSurface ps)
+ {
+ where = ps.Where;
+ what = ps.What.Clone ();
+ }
+
+ private PlacedSurface ()
+ {
+ }
+
+ public PlacedSurface (ImageSurface source, Gdk.Rectangle roi)
+ {
+ where = roi.Location;
+ what = new ImageSurface (Format.Argb32, roi.Width, roi.Height);
+
using (Context g = new Context (what)) {
g.SetSourceSurface (source, -roi.X, -roi.Y);
g.Paint ();
}
- }
+ }
+ #endregion
+
+ #region Public Properties
+ public Gdk.Point Where {
+ get {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
+
+ return where;
+ }
+ }
+
+ public ImageSurface What {
+ get {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
+
+ return what;
+ }
+ }
+
+ public Gdk.Size Size {
+ get {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
+
+ return new Gdk.Size (what.Width, what.Height);
+ }
+ }
- private PlacedSurface(PlacedSurface ps)
- {
- where = ps.Where;
- what = ps.What.Clone();
- }
+ public Gdk.Rectangle Bounds {
+ get {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
- private PlacedSurface()
- {
- }
+ return new Gdk.Rectangle (Where, Size);
+ }
+ }
+ #endregion
+
+ #region Public Methods
+ public void Draw (ImageSurface dst)
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
+
+ using (Cairo.Context g = new Cairo.Context (dst)) {
+ g.Save ();
+
+ Rectangle r = what.GetBounds ().ToCairoRectangle ();
+
+ // We need to use the source operator to fully replace the old
+ // data. Or else we may paint transparent on top of it and
+ // it will still be visible. [Bug #670411]
+ using (Path p = g.CreateRectanglePath (new Rectangle (where.X, where.Y, r.Width, r.Height))) {
+ g.AppendPath (p);
+ g.Clip ();
+ g.Operator = Operator.Source;
+ g.DrawPixbuf (what.ToPixbuf (), new Cairo.Point (where.X, where.Y));
+ }
+
+ g.Restore ();
+ }
+ }
- #region IDisposable Members
- private bool disposed = false;
+ public void Draw (ImageSurface dst, PixelOp pixelOp)
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
- #endregion
+ Gdk.Rectangle dstRect = Bounds;
+ Gdk.Rectangle dstClip = Gdk.Rectangle.Intersect (dstRect, dst.GetBounds ());
+ if (dstClip.Width > 0 && dstClip.Height > 0) {
+ int dtX = dstClip.X - where.X;
+ int dtY = dstClip.Y - where.Y;
- #region ICloneable Members
+ pixelOp.Apply (dst, dstClip.Location, what, new Gdk.Point (dtX, dtY), dstClip.Size);
+ }
+ }
- public object Clone()
- {
- if (disposed)
- {
- throw new ObjectDisposedException("PlacedSurface");
- }
+ public void Draw (ImageSurface dst, int tX, int tY)
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
- return new PlacedSurface(this);
- }
+ Gdk.Point oldWhere = where;
- #endregion
- }
+ try {
+ where.X += tX;
+ where.Y += tY;
+ Draw (dst);
+ } finally {
+ where = oldWhere;
+ }
+ }
+
+ public void Draw (ImageSurface dst, int tX, int tY, PixelOp pixelOp)
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
+
+ Gdk.Point oldWhere = where;
+
+ try {
+ where.X += tX;
+ where.Y += tY;
+ Draw (dst, pixelOp);
+ } finally {
+ where = oldWhere;
+ }
+ }
+ #endregion
+
+ #region IDisposable Members
+ private bool disposed = false;
+ #endregion
+
+ #region ICloneable Members
+ public object Clone ()
+ {
+ if (disposed)
+ throw new ObjectDisposedException ("PlacedSurface");
+
+ return new PlacedSurface (this);
+ }
+ #endregion
+ }
}
diff --git a/Pinta.Core/Extensions/CairoExtensions.cs b/Pinta.Core/Extensions/CairoExtensions.cs
index e60df34..5eb5154 100644
--- a/Pinta.Core/Extensions/CairoExtensions.cs
+++ b/Pinta.Core/Extensions/CairoExtensions.cs
@@ -35,6 +35,7 @@
using System;
using Cairo;
+using System.Collections.Generic;
namespace Pinta.Core
{
@@ -42,62 +43,62 @@ namespace Pinta.Core
{
// Most of these functions return an affected area
// This can be ignored if you don't need it
-
+
#region context
public static Rectangle DrawRectangle (this Context g, Rectangle r, Color color, int lineWidth)
{
// Put it on a pixel line
if (lineWidth == 1)
r = new Rectangle (r.X - 0.5, r.Y - 0.5, r.Width, r.Height);
-
+
g.Save ();
-
+
g.MoveTo (r.X, r.Y);
g.LineTo (r.X + r.Width, r.Y);
g.LineTo (r.X + r.Width, r.Y + r.Height);
g.LineTo (r.X, r.Y + r.Height);
g.LineTo (r.X, r.Y);
-
+
g.Color = color;
g.LineWidth = lineWidth;
g.LineCap = LineCap.Square;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Stroke ();
-
+
g.Restore ();
-
+
return dirty;
}
-
+
public static Path CreateRectanglePath (this Context g, Rectangle r)
{
g.Save ();
-
+
g.MoveTo (r.X, r.Y);
g.LineTo (r.X + r.Width, r.Y);
g.LineTo (r.X + r.Width, r.Y + r.Height);
g.LineTo (r.X, r.Y + r.Height);
g.LineTo (r.X, r.Y);
-
+
Path path = g.CopyPath ();
g.Restore ();
-
+
return path;
}
public static Rectangle FillRectangle (this Context g, Rectangle r, Color color)
{
g.Save ();
-
+
g.MoveTo (r.X, r.Y);
g.LineTo (r.X + r.Width, r.Y);
g.LineTo (r.X + r.Width, r.Y + r.Height);
g.LineTo (r.X, r.Y + r.Height);
g.LineTo (r.X, r.Y);
-
+
g.Color = color;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Fill ();
@@ -109,13 +110,13 @@ namespace Pinta.Core
public static Rectangle FillRectangle (this Context g, Rectangle r, Pattern pattern)
{
g.Save ();
-
+
g.MoveTo (r.X, r.Y);
g.LineTo (r.X + r.Width, r.Y);
g.LineTo (r.X + r.Width, r.Y + r.Height);
g.LineTo (r.X, r.Y + r.Height);
g.LineTo (r.X, r.Y);
-
+
g.Pattern = pattern;
Rectangle dirty = g.StrokeExtents ();
@@ -128,17 +129,17 @@ namespace Pinta.Core
public static Rectangle DrawPolygonal (this Context g, PointD[] points, Color color)
{
- Random rand=new Random();
-
+ Random rand = new Random ();
+
g.Save ();
- g.MoveTo (points [0]);
+ g.MoveTo (points[0]);
foreach (var point in points) {
- g.LineTo (point.X - rand.NextDouble()*0, point.Y);
+ g.LineTo (point.X - rand.NextDouble () * 0, point.Y);
//g.Stroke();
}
-
+
g.Color = color;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Stroke ();
@@ -150,13 +151,13 @@ namespace Pinta.Core
public static Rectangle FillPolygonal (this Context g, PointD[] points, Color color)
{
g.Save ();
-
- g.MoveTo (points [0]);
+
+ g.MoveTo (points[0]);
foreach (var point in points)
g.LineTo (point);
-
+
g.Color = color;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Fill ();
@@ -169,7 +170,7 @@ namespace Pinta.Core
{
double x = r.X;
double y = r.Y;
-
+
g.Save ();
// Put it on a pixel line
@@ -177,25 +178,25 @@ namespace Pinta.Core
x += 0.5;
y += 0.5;
}
-
+
g.MoveTo (x, y);
g.LineTo (x + r.Width, y);
g.LineTo (x + r.Width, y + r.Height);
g.LineTo (x, y + r.Height);
g.LineTo (x, y);
-
+
g.Color = fill;
g.FillPreserve ();
-
+
g.Color = stroke;
g.LineWidth = lineWidth;
g.LineCap = LineCap.Square;
-
+
Rectangle dirty = g.StrokeExtents ();
-
+
g.Stroke ();
g.Restore ();
-
+
return dirty;
}
@@ -206,21 +207,21 @@ namespace Pinta.Core
double cx = r.X + rx;
double cy = r.Y + ry;
double c1 = 0.552285;
-
+
g.Save ();
-
+
g.MoveTo (cx + rx, cy);
-
+
g.CurveTo (cx + rx, cy - c1 * ry, cx + c1 * rx, cy - ry, cx, cy - ry);
g.CurveTo (cx - c1 * rx, cy - ry, cx - rx, cy - c1 * ry, cx - rx, cy);
g.CurveTo (cx - rx, cy + c1 * ry, cx - c1 * rx, cy + ry, cx, cy + ry);
g.CurveTo (cx + c1 * rx, cy + ry, cx + rx, cy + c1 * ry, cx + rx, cy);
-
+
g.ClosePath ();
-
+
g.Color = color;
g.LineWidth = lineWidth;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Stroke ();
@@ -236,25 +237,25 @@ namespace Pinta.Core
double cx = r.X + rx;
double cy = r.Y + ry;
double c1 = 0.552285;
-
+
g.Save ();
-
+
g.MoveTo (cx + rx, cy);
-
+
g.CurveTo (cx + rx, cy - c1 * ry, cx + c1 * rx, cy - ry, cx, cy - ry);
g.CurveTo (cx - c1 * rx, cy - ry, cx - rx, cy - c1 * ry, cx - rx, cy);
g.CurveTo (cx - rx, cy + c1 * ry, cx - c1 * rx, cy + ry, cx, cy + ry);
g.CurveTo (cx + c1 * rx, cy + ry, cx + rx, cy + c1 * ry, cx + rx, cy);
-
+
g.ClosePath ();
-
+
g.Color = color;
-
+
Rectangle dirty = g.StrokeExtents ();
-
+
g.Fill ();
g.Restore ();
-
+
return dirty;
}
@@ -265,22 +266,22 @@ namespace Pinta.Core
double cx = r.X + rx;
double cy = r.Y + ry;
double c1 = 0.552285;
-
+
g.Save ();
-
+
g.MoveTo (cx + rx, cy);
-
+
g.CurveTo (cx + rx, cy - c1 * ry, cx + c1 * rx, cy - ry, cx, cy - ry);
g.CurveTo (cx - c1 * rx, cy - ry, cx - rx, cy - c1 * ry, cx - rx, cy);
g.CurveTo (cx - rx, cy + c1 * ry, cx - c1 * rx, cy + ry, cx, cy + ry);
g.CurveTo (cx + c1 * rx, cy + ry, cx + rx, cy + c1 * ry, cx + rx, cy);
-
+
g.ClosePath ();
Path path = g.CopyPath ();
-
+
g.Restore ();
-
+
return path;
}
@@ -291,29 +292,29 @@ namespace Pinta.Core
double cx = r.X + rx;
double cy = r.Y + ry;
double c1 = 0.552285;
-
+
g.Save ();
-
+
g.MoveTo (cx + rx, cy);
-
+
g.CurveTo (cx + rx, cy - c1 * ry, cx + c1 * rx, cy - ry, cx, cy - ry);
g.CurveTo (cx - c1 * rx, cy - ry, cx - rx, cy - c1 * ry, cx - rx, cy);
g.CurveTo (cx - rx, cy + c1 * ry, cx - c1 * rx, cy + ry, cx, cy + ry);
g.CurveTo (cx + c1 * rx, cy + ry, cx + rx, cy + c1 * ry, cx + rx, cy);
-
+
g.ClosePath ();
-
+
g.Color = fill;
g.FillPreserve ();
-
+
g.Color = stroke;
g.LineWidth = lineWidth;
-
+
Rectangle dirty = g.StrokeExtents ();
-
+
g.Stroke ();
g.Restore ();
-
+
return dirty;
}
@@ -333,18 +334,18 @@ namespace Pinta.Core
g.LineTo (r.X + radius, r.Y + r.Height);
g.Arc (r.X + radius, r.Y + r.Height - radius, radius, Math.PI / 2, Math.PI);
g.ClosePath ();
-
+
g.Color = fill;
g.FillPreserve ();
-
+
g.Color = stroke;
g.LineWidth = lineWidth;
-
+
Rectangle dirty = g.StrokeExtents ();
-
+
g.Stroke ();
g.Restore ();
-
+
return dirty;
}
@@ -366,7 +367,7 @@ namespace Pinta.Core
g.ClosePath ();
g.Color = fill;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Fill ();
@@ -378,44 +379,43 @@ namespace Pinta.Core
public static void FillRegion (this Context g, Gdk.Region region, Color color)
{
g.Save ();
-
+
g.Color = color;
-
- foreach (Gdk.Rectangle r in region.GetRectangles())
- {
+
+ foreach (Gdk.Rectangle r in region.GetRectangles ()) {
g.MoveTo (r.X, r.Y);
g.LineTo (r.X + r.Width, r.Y);
g.LineTo (r.X + r.Width, r.Y + r.Height);
g.LineTo (r.X, r.Y + r.Height);
g.LineTo (r.X, r.Y);
-
+
g.Color = color;
g.StrokeExtents ();
g.Fill ();
}
-
+
g.Restore ();
}
public static Rectangle DrawRoundedRectangle (this Context g, Rectangle r, double radius, Color stroke, int lineWidth)
{
g.Save ();
-
+
Path p = g.CreateRoundedRectanglePath (r, radius);
-
+
g.AppendPath (p);
-
+
g.Color = stroke;
g.LineWidth = lineWidth;
-
+
Rectangle dirty = g.StrokeExtents ();
g.Stroke ();
g.Restore ();
(p as IDisposable).Dispose ();
-
+
return dirty;
}
@@ -435,10 +435,10 @@ namespace Pinta.Core
g.LineTo (r.X + radius, r.Y + r.Height);
g.Arc (r.X + radius, r.Y + r.Height - radius, radius, Math.PI / 2, Math.PI);
g.ClosePath ();
-
+
Path p = g.CopyPath ();
g.Restore ();
-
+
return p;
}
@@ -479,12 +479,12 @@ namespace Pinta.Core
private static Pango.Style CairoToPangoSlant (FontSlant slant)
{
switch (slant) {
- case FontSlant.Italic:
- return Pango.Style.Italic;
- case FontSlant.Oblique:
- return Pango.Style.Oblique;
- default:
- return Pango.Style.Normal;
+ case FontSlant.Italic:
+ return Pango.Style.Italic;
+ case FontSlant.Oblique:
+ return Pango.Style.Oblique;
+ default:
+ return Pango.Style.Normal;
}
}
@@ -499,7 +499,7 @@ namespace Pinta.Core
g.MoveTo (p.X, p.Y);
g.Color = color;
- g.Antialias = antiAliasing? Antialias.Subpixel: Antialias.None;
+ g.Antialias = antiAliasing ? Antialias.Subpixel : Antialias.None;
Pango.Layout layout = Pango.CairoHelper.CreateLayout (g);
Pango.FontDescription fd = new Pango.FontDescription ();
@@ -510,16 +510,16 @@ namespace Pinta.Core
layout.FontDescription = fd;
layout.SetText (text);
Pango.CairoHelper.ShowLayoutLine (g, layout.Lines[0]);
-
+
Pango.Rectangle unused = Pango.Rectangle.Zero;
Pango.Rectangle te = Pango.Rectangle.Zero;
layout.GetExtents (out unused, out te);
-
- (layout as IDisposable).Dispose();
-
+
+ (layout as IDisposable).Dispose ();
+
g.Restore ();
- return new Rectangle(te.X, te.Y, te.Width, te.Height);
+ return new Rectangle (te.X, te.Y, te.Width, te.Height);
}
public static void DrawPixbuf (this Context g, Gdk.Pixbuf pixbuf, Point dest)
@@ -534,81 +534,78 @@ namespace Pinta.Core
public static void DrawLinearGradient (this Context g, Surface oldsurface, GradientColorMode mode, Color c1, Color c2, PointD p1, PointD p2)
{
g.Save ();
-
+
Gradient gradient = new Cairo.LinearGradient (p1.X, p1.Y, p2.X, p2.Y);
-
+
if (mode == GradientColorMode.Color) {
gradient.AddColorStop (0, c1);
gradient.AddColorStop (1, c2);
g.Source = gradient;
g.Paint ();
- }
- else if (mode == GradientColorMode.Transparency) {
+ } else if (mode == GradientColorMode.Transparency) {
gradient.AddColorStop (0, new Color (0, 0, 0, 1));
gradient.AddColorStop (1, new Color (0, 0, 0, 0));
g.Source = new SurfacePattern (oldsurface);
g.Mask (gradient);
}
-
+
g.Restore ();
}
public static void DrawLinearReflectedGradient (this Context g, Surface oldsurface, GradientColorMode mode, Color c1, Color c2, PointD p1, PointD p2)
{
g.Save ();
-
+
Gradient gradient = new Cairo.LinearGradient (p1.X, p1.Y, p2.X, p2.Y);
-
+
if (mode == GradientColorMode.Color) {
gradient.AddColorStop (0, c1);
gradient.AddColorStop (0.5, c2);
gradient.AddColorStop (1, c1);
g.Source = gradient;
g.Paint ();
- }
- else if (mode == GradientColorMode.Transparency) {
+ } else if (mode == GradientColorMode.Transparency) {
gradient.AddColorStop (0, new Color (0, 0, 0, 1));
gradient.AddColorStop (0.5, new Color (0, 0, 0, 0));
gradient.AddColorStop (1, new Color (0, 0, 0, 1));
g.Source = new SurfacePattern (oldsurface);
g.Mask (gradient);
}
-
+
g.Restore ();
}
public static void DrawRadialGradient (this Context g, Surface oldsurface, GradientColorMode mode, Color c1, Color c2, PointD p1, PointD p2, double r1, double r2)
{
g.Save ();
-
+
Gradient gradient = new Cairo.RadialGradient (p1.X, p1.Y, r1, p2.X, p2.Y, r2);
-
+
if (mode == GradientColorMode.Color) {
gradient.AddColorStop (0, c1);
gradient.AddColorStop (1, c2);
g.Source = gradient;
g.Paint ();
- }
- else if (mode == GradientColorMode.Transparency) {
+ } else if (mode == GradientColorMode.Transparency) {
gradient.AddColorStop (0, new Color (0, 0, 0, 1));
gradient.AddColorStop (1, new Color (0, 0, 0, 0));
g.Source = new SurfacePattern (oldsurface);
g.Mask (gradient);
}
-
+
g.Restore ();
}
#endregion
-
+
public static double Distance (this PointD s, PointD e)
{
return Magnitude (new PointD (s.X - e.X, s.Y - e.Y));
}
-
- public static double Magnitude(this PointD p)
- {
- return Math.Sqrt(p.X * p.X + p.Y * p.Y);
- }
+
+ public static double Magnitude (this PointD p)
+ {
+ return Math.Sqrt (p.X * p.X + p.Y * p.Y);
+ }
public static Cairo.Rectangle ToCairoRectangle (this Gdk.Rectangle r)
{
@@ -626,17 +623,17 @@ namespace Pinta.Core
double y = r.Y;
double w = r.Width;
double h = r.Height;
-
+
if (x < 0) {
w -= x;
x = 0;
}
-
+
if (y < 0) {
h -= y;
y = 0;
}
-
+
return new Cairo.Rectangle (x, y, w, h);
}
@@ -660,12 +657,12 @@ namespace Pinta.Core
{
return ContainsPoint (r, point.X, point.Y);
}
-
+
public unsafe static Gdk.Pixbuf ToPixbuf (this Cairo.ImageSurface surfSource)
{
Cairo.ImageSurface surf = surfSource.Clone ();
surf.Flush ();
-
+
ColorBgra* dstPtr = (ColorBgra*)surf.DataPtr;
int len = surf.Data.Length / 4;
@@ -679,11 +676,11 @@ namespace Pinta.Core
(surf as IDisposable).Dispose ();
return pb;
}
-
+
public unsafe static Color GetPixel (this Cairo.ImageSurface surf, int x, int y)
{
ColorBgra* dstPtr = (ColorBgra*)surf.DataPtr;
-
+
dstPtr += (x) + (y * surf.Width);
return new Color (dstPtr->R / 255f, dstPtr->G / 255f, dstPtr->B / 255f, dstPtr->A / 255f);
@@ -731,6 +728,15 @@ namespace Pinta.Core
*dstPtr = color;
}
+ public unsafe static void SetColorBgra (this Cairo.ImageSurface surf, ColorBgra* surfDataPtr, int surfWidth, ColorBgra color, int x, int y)
+ {
+ ColorBgra* dstPtr = surfDataPtr;
+
+ dstPtr += (x) + (y * surfWidth);
+
+ *dstPtr = color;
+ }
+
public unsafe static ColorBgra GetColorBgra (this Cairo.ImageSurface surf, ColorBgra* surfDataPtr, int surfWidth, int x, int y)
{
ColorBgra* dstPtr = surfDataPtr;
@@ -763,11 +769,11 @@ namespace Pinta.Core
return c;
}
-
+
public static Gdk.Color ToGdkColor (this ColorBgra color)
{
Gdk.Color c = new Gdk.Color (color.R, color.G, color.B);
-
+
return c;
}
@@ -783,14 +789,14 @@ namespace Pinta.Core
public static uint ToUint (this Cairo.Color c)
{
- return Pinta.Core.ColorBgra.BgraToUInt32( (int)(c.B * 255), (int)(c.R * 255), (int)(c.G * 255), (int)(c.A * 255));
+ return Pinta.Core.ColorBgra.BgraToUInt32 ((int)(c.B * 255), (int)(c.R * 255), (int)(c.G * 255), (int)(c.A * 255));
}
-
+
public static Gdk.Size ToSize (this Cairo.Point point)
{
return new Gdk.Size (point.X, point.Y);
}
-
+
public static ImageSurface Clone (this ImageSurface surf)
{
ImageSurface newsurf = new ImageSurface (surf.Format, surf.Width, surf.Height);
@@ -803,10 +809,30 @@ namespace Pinta.Core
return newsurf;
}
+ public static unsafe bool ContainsTranslucent (this ImageSurface surf)
+ {
+ bool ret = false;
+
+ ColorBgra* ptr = (ColorBgra*)surf.DataPtr;
+ int width = surf.Width;
+
+ for (int x = 0; x < width; x++)
+ for (int y = 0; y < surf.Height; y++) {
+ int a = (int)surf.GetColorBgra (ptr, width, x, y).A;
+
+ if (a > 0 && a < 255) {
+ Console.WriteLine (surf.GetColorBgra (ptr, width, x, y).ToString ());
+ ret = true;
+ }
+ }
+
+ return ret;
+ }
+
public static Path Clone (this Path path)
{
Path newpath;
-
+
using (Context g = new Context (PintaCore.Layers.CurrentLayer.Surface)) {
g.AppendPath (path);
newpath = g.CopyPath ();
@@ -814,7 +840,15 @@ namespace Pinta.Core
return newpath;
}
-
+
+ public static void Clear (this ImageSurface surface)
+ {
+ using (Context g = new Context (surface)) {
+ g.Operator = Operator.Clear;
+ g.Paint ();
+ }
+ }
+
public static Gdk.Rectangle GetBounds (this Path path)
{
Rectangle rect;
@@ -831,17 +865,17 @@ namespace Pinta.Core
return new Gdk.Rectangle ((int)rect.X, (int)rect.Y, (int)rect.Width - (int)rect.X, (int)rect.Height - (int)rect.Y);
}
-
+
public static Gdk.Color ToGdkColor (this Cairo.Color color)
{
Gdk.Color c = new Gdk.Color ();
c.Blue = (ushort)(color.B * ushort.MaxValue);
c.Red = (ushort)(color.R * ushort.MaxValue);
c.Green = (ushort)(color.G * ushort.MaxValue);
-
+
return c;
}
-
+
public static ushort GdkColorAlpha (this Cairo.Color color)
{
return (ushort)(color.A * ushort.MaxValue);
@@ -857,24 +891,24 @@ namespace Pinta.Core
return rect.X + rect.Width;
}
- /// <summary>
- /// Determines if the requested pixel coordinate is within bounds.
- /// </summary>
- /// <param name="x">The x coordinate.</param>
- /// <param name="y">The y coordinate.</param>
- /// <returns>true if (x,y) is in bounds, false if it's not.</returns>
- public static bool IsVisible(this ImageSurface surf, int x, int y)
- {
- return x >= 0 && x < surf.Width && y >= 0 && y < surf.Height;
- }
+ /// <summary>
+ /// Determines if the requested pixel coordinate is within bounds.
+ /// </summary>
+ /// <param name="x">The x coordinate.</param>
+ /// <param name="y">The y coordinate.</param>
+ /// <returns>true if (x,y) is in bounds, false if it's not.</returns>
+ public static bool IsVisible (this ImageSurface surf, int x, int y)
+ {
+ return x >= 0 && x < surf.Width && y >= 0 && y < surf.Height;
+ }
+
-
public static unsafe ColorBgra* GetPointAddressUnchecked (this ImageSurface surf, int x, int y)
{
ColorBgra* dstPtr = (ColorBgra*)surf.DataPtr;
dstPtr += (x) + (y * surf.Width);
-
+
return dstPtr;
}
@@ -927,7 +961,7 @@ namespace Pinta.Core
return dstPtr;
}
- public static unsafe ColorBgra *GetPointAddress (this ImageSurface surf, int x, int y)
+ public static unsafe ColorBgra* GetPointAddress (this ImageSurface surf, int x, int y)
{
if (x < 0 || x >= surf.Width)
throw new ArgumentOutOfRangeException ("x", "Out of bounds: x=" + x.ToString ());
@@ -978,9 +1012,8 @@ namespace Pinta.Core
public static unsafe ColorBgra GetBilinearSample (this ImageSurface src, ColorBgra* srcDataPtr, int srcWidth, int srcHeight, float x, float y)
{
- if (!Utility.IsNumber (x) || !Utility.IsNumber (y)) {
+ if (!Utility.IsNumber (x) || !Utility.IsNumber (y))
return ColorBgra.Transparent;
- }
float u = x;
float v = y;
@@ -1005,20 +1038,18 @@ namespace Pinta.Core
int sleft = sx;
int sright;
- if (sleft == (srcWidth - 1)) {
+ if (sleft == (srcWidth - 1))
sright = sleft;
- } else {
+ else
sright = sleft + 1;
- }
int stop = sy;
int sbottom;
- if (stop == (srcHeight - 1)) {
+ if (stop == (srcHeight - 1))
sbottom = stop;
- } else {
+ else
sbottom = stop + 1;
- }
ColorBgra* cul = src.GetPointAddressUnchecked (srcDataPtr, srcWidth, sleft, stop);
ColorBgra* cur = cul + (sright - sleft);
@@ -1039,83 +1070,64 @@ namespace Pinta.Core
}
public static unsafe ColorBgra GetBilinearSampleClamped (this ImageSurface src, ColorBgra* srcDataPtr, int srcWidth, int srcHeight, float x, float y)
- {
- if (!Utility.IsNumber (x) || !Utility.IsNumber (y))
- {
- return ColorBgra.Transparent;
- }
-
- float u = x;
- float v = y;
-
- if (u < 0)
- {
- u = 0;
- }
- else if (u > srcWidth - 1)
- {
- u = srcWidth - 1;
- }
-
- if (v < 0)
- {
- v = 0;
- }
- else if (v > srcHeight - 1)
- {
- v = srcHeight - 1;
- }
-
- unchecked
- {
- int iu = (int)Math.Floor(u);
- uint sxfrac = (uint)(256 * (u - (float)iu));
- uint sxfracinv = 256 - sxfrac;
-
- int iv = (int)Math.Floor(v);
- uint syfrac = (uint)(256 * (v - (float)iv));
- uint syfracinv = 256 - syfrac;
-
- uint wul = (uint)(sxfracinv * syfracinv);
- uint wur = (uint)(sxfrac * syfracinv);
- uint wll = (uint)(sxfracinv * syfrac);
- uint wlr = (uint)(sxfrac * syfrac);
-
- int sx = iu;
- int sy = iv;
- int sleft = sx;
- int sright;
-
- if (sleft == (srcWidth - 1))
- {
- sright = sleft;
- }
- else
- {
- sright = sleft + 1;
- }
-
- int stop = sy;
- int sbottom;
-
- if (stop == (srcHeight - 1))
- {
- sbottom = stop;
- }
- else
- {
- sbottom = stop + 1;
- }
-
- ColorBgra *cul = src.GetPointAddressUnchecked (srcDataPtr, srcWidth, sleft, stop);
- ColorBgra *cur = cul + (sright - sleft);
- ColorBgra *cll = src.GetPointAddressUnchecked (srcDataPtr, srcWidth, sleft, sbottom);
- ColorBgra *clr = cll + (sright - sleft);
-
- ColorBgra c = ColorBgra.BlendColors4W16IP (*cul, wul, *cur, wur, *cll, wll, *clr, wlr);
- return c;
- }
- }
+ {
+ if (!Utility.IsNumber (x) || !Utility.IsNumber (y))
+ return ColorBgra.Transparent;
+
+ float u = x;
+ float v = y;
+
+ if (u < 0)
+ u = 0;
+ else if (u > srcWidth - 1)
+ u = srcWidth - 1;
+
+ if (v < 0)
+ v = 0;
+ else if (v > srcHeight - 1)
+ v = srcHeight - 1;
+
+ unchecked {
+ int iu = (int)Math.Floor (u);
+ uint sxfrac = (uint)(256 * (u - (float)iu));
+ uint sxfracinv = 256 - sxfrac;
+
+ int iv = (int)Math.Floor (v);
+ uint syfrac = (uint)(256 * (v - (float)iv));
+ uint syfracinv = 256 - syfrac;
+
+ uint wul = (uint)(sxfracinv * syfracinv);
+ uint wur = (uint)(sxfrac * syfracinv);
+ uint wll = (uint)(sxfracinv * syfrac);
+ uint wlr = (uint)(sxfrac * syfrac);
+
+ int sx = iu;
+ int sy = iv;
+ int sleft = sx;
+ int sright;
+
+ if (sleft == (srcWidth - 1))
+ sright = sleft;
+ else
+ sright = sleft + 1;
+
+ int stop = sy;
+ int sbottom;
+
+ if (stop == (srcHeight - 1))
+ sbottom = stop;
+ else
+ sbottom = stop + 1;
+
+ ColorBgra* cul = src.GetPointAddressUnchecked (srcDataPtr, srcWidth, sleft, stop);
+ ColorBgra* cur = cul + (sright - sleft);
+ ColorBgra* cll = src.GetPointAddressUnchecked (srcDataPtr, srcWidth, sleft, sbottom);
+ ColorBgra* clr = cll + (sright - sleft);
+
+ ColorBgra c = ColorBgra.BlendColors4W16IP (*cul, wul, *cur, wur, *cll, wll, *clr, wlr);
+ return c;
+ }
+ }
public static unsafe ColorBgra GetBilinearSampleWrapped (this ImageSurface src, float x, float y)
{
@@ -1123,325 +1135,268 @@ namespace Pinta.Core
}
public static unsafe ColorBgra GetBilinearSampleWrapped (this ImageSurface src, ColorBgra* srcDataPtr, int srcWidth, int srcHeight, float x, float y)
- {
- if (!Utility.IsNumber(x) || !Utility.IsNumber(y))
- {
- return ColorBgra.Transparent;
- }
-
- float u = x;
- float v = y;
-
- unchecked
- {
- int iu = (int)Math.Floor(u);
- uint sxfrac = (uint)(256 * (u - (float)iu));
- uint sxfracinv = 256 - sxfrac;
-
- int iv = (int)Math.Floor(v);
- uint syfrac = (uint)(256 * (v - (float)iv));
- uint syfracinv = 256 - syfrac;
-
- uint wul = (uint)(sxfracinv * syfracinv);
- uint wur = (uint)(sxfrac * syfracinv);
- uint wll = (uint)(sxfracinv * syfrac);
- uint wlr = (uint)(sxfrac * syfrac);
-
- int sx = iu;
- if (sx < 0)
- {
- sx = (srcWidth - 1) + ((sx + 1) % srcWidth);
- }
- else if (sx > (srcWidth - 1))
- {
- sx = sx % srcWidth;
- }
-
- int sy = iv;
- if (sy < 0)
- {
- sy = (srcHeight - 1) + ((sy + 1) % srcHeight);
- }
- else if (sy > (srcHeight - 1))
- {
- sy = sy % srcHeight;
- }
-
- int sleft = sx;
- int sright;
-
- if (sleft == (srcWidth - 1))
- {
- sright = 0;
- }
- else
- {
- sright = sleft + 1;
- }
-
- int stop = sy;
- int sbottom;
-
- if (stop == (srcHeight - 1))
- {
- sbottom = 0;
- }
- else
- {
- sbottom = stop + 1;
- }
-
- ColorBgra cul = src.GetPointUnchecked (srcDataPtr, srcWidth, sleft, stop);
- ColorBgra cur = src.GetPointUnchecked (srcDataPtr, srcWidth, sright, stop);
- ColorBgra cll = src.GetPointUnchecked (srcDataPtr, srcWidth, sleft, sbottom);
- ColorBgra clr = src.GetPointUnchecked (srcDataPtr, srcWidth, sright, sbottom);
-
- ColorBgra c = ColorBgra.BlendColors4W16IP (cul, wul, cur, wur, cll, wll, clr, wlr);
-
- return c;
- }
- }
-
-
-
- private struct Edge
- {
- public int miny; // int
- public int maxy; // int
- public int x; // fixed point: 24.8
- public int dxdy; // fixed point: 24.8
-
- public Edge(int miny, int maxy, int x, int dxdy)
- {
- this.miny = miny;
- this.maxy = maxy;
- this.x = x;
- this.dxdy = dxdy;
- }
- }
-
+ {
+ if (!Utility.IsNumber (x) || !Utility.IsNumber (y))
+ return ColorBgra.Transparent;
+
+ float u = x;
+ float v = y;
+
+ unchecked {
+ int iu = (int)Math.Floor (u);
+ uint sxfrac = (uint)(256 * (u - (float)iu));
+ uint sxfracinv = 256 - sxfrac;
+
+ int iv = (int)Math.Floor (v);
+ uint syfrac = (uint)(256 * (v - (float)iv));
+ uint syfracinv = 256 - syfrac;
+
+ uint wul = (uint)(sxfracinv * syfracinv);
+ uint wur = (uint)(sxfrac * syfracinv);
+ uint wll = (uint)(sxfracinv * syfrac);
+ uint wlr = (uint)(sxfrac * syfrac);
+
+ int sx = iu;
+ if (sx < 0)
+ sx = (srcWidth - 1) + ((sx + 1) % srcWidth);
+ else if (sx > (srcWidth - 1))
+ sx = sx % srcWidth;
+
+ int sy = iv;
+ if (sy < 0)
+ sy = (srcHeight - 1) + ((sy + 1) % srcHeight);
+ else if (sy > (srcHeight - 1))
+ sy = sy % srcHeight;
+
+ int sleft = sx;
+ int sright;
+
+ if (sleft == (srcWidth - 1))
+ sright = 0;
+ else
+ sright = sleft + 1;
+
+ int stop = sy;
+ int sbottom;
+
+ if (stop == (srcHeight - 1))
+ sbottom = 0;
+ else
+ sbottom = stop + 1;
+
+ ColorBgra cul = src.GetPointUnchecked (srcDataPtr, srcWidth, sleft, stop);
+ ColorBgra cur = src.GetPointUnchecked (srcDataPtr, srcWidth, sright, stop);
+ ColorBgra cll = src.GetPointUnchecked (srcDataPtr, srcWidth, sleft, sbottom);
+ ColorBgra clr = src.GetPointUnchecked (srcDataPtr, srcWidth, sright, sbottom);
+
+ ColorBgra c = ColorBgra.BlendColors4W16IP (cul, wul, cur, wur, cll, wll, clr, wlr);
+
+ return c;
+ }
+ }
+
public static void TranslatePointsInPlace (this Point[] Points, int dx, int dy)
{
- for (int i = 0; i < Points.Length; ++i)
- {
- Points[i].X += dx;
- Points[i].Y += dy;
- }
+ for (int i = 0; i < Points.Length; ++i) {
+ Points[i].X += dx;
+ Points[i].Y += dy;
+ }
}
-
+
+ private struct Edge
+ {
+ public int miny; // int
+ public int maxy; // int
+ public int x; // fixed point: 24.8
+ public int dxdy; // fixed point: 24.8
+
+ public Edge (int miny, int maxy, int x, int dxdy)
+ {
+ this.miny = miny;
+ this.maxy = maxy;
+ this.x = x;
+ this.dxdy = dxdy;
+ }
+ }
+
public static Scanline[] GetScans (this Point[] points)
{
- int ymax = 0;
-
- // Build edge table
- Edge[] edgeTable = new Edge[points.Length];
- int edgeCount = 0;
-
- for (int i = 0; i < points.Length; ++i)
- {
- Point top = points[i];
- Point bottom = points[(i + 1) % points.Length];
- int dy;
-
- if (top.Y > bottom.Y)
- {
- Point temp = top;
- top = bottom;
- bottom = temp;
- }
-
- dy = bottom.Y - top.Y;
-
- if (dy != 0)
- {
- edgeTable[edgeCount] = new Edge(top.Y, bottom.Y, top.X << 8, (((bottom.X - top.X) << 8) / dy));
- ymax = Math.Max(ymax, bottom.Y);
- ++edgeCount;
- }
- }
-
- // Sort edge table by miny
- for (int i = 0; i < edgeCount - 1; ++i)
- {
- int min = i;
-
- for (int j = i + 1; j < edgeCount; ++j)
- {
- if (edgeTable[j].miny < edgeTable[min].miny)
- {
- min = j;
- }
- }
-
- if (min != i)
- {
- Edge temp = edgeTable[min];
- edgeTable[min] = edgeTable[i];
- edgeTable[i] = temp;
- }
- }
-
- // Compute how many scanlines we will be emitting
- int scanCount = 0;
- int activeLow = 0;
- int activeHigh = 0;
- int yscan1 = edgeTable[0].miny;
-
- // we assume that edgeTable[0].miny == yscan
- while (activeHigh < edgeCount - 1 &&
- edgeTable[activeHigh + 1].miny == yscan1)
- {
- ++activeHigh;
- }
-
- while (yscan1 <= ymax)
- {
- // Find new edges where yscan == miny
- while (activeHigh < edgeCount - 1 &&
- edgeTable[activeHigh + 1].miny == yscan1)
- {
- ++activeHigh;
- }
-
- int count = 0;
- for (int i = activeLow; i <= activeHigh; ++i)
- {
- if (edgeTable[i].maxy > yscan1)
- {
- ++count;
- }
- }
-
- scanCount += count / 2;
- ++yscan1;
-
- // Remove edges where yscan == maxy
- while (activeLow < edgeCount - 1 &&
- edgeTable[activeLow].maxy <= yscan1)
- {
- ++activeLow;
- }
-
- if (activeLow > activeHigh)
- {
- activeHigh = activeLow;
- }
- }
-
- // Allocate scanlines that we'll return
- Scanline[] scans = new Scanline[scanCount];
-
- // Active Edge Table (AET): it is indices into the Edge Table (ET)
- int[] active = new int[edgeCount];
- int activeCount = 0;
- int yscan2 = edgeTable[0].miny;
- int scansIndex = 0;
-
- // Repeat until both the ET and AET are empty
- while (yscan2 <= ymax)
- {
- // Move any edges from the ET to the AET where yscan == miny
- for (int i = 0; i < edgeCount; ++i)
- {
- if (edgeTable[i].miny == yscan2)
- {
- active[activeCount] = i;
- ++activeCount;
- }
- }
-
- // Sort the AET on x
- for (int i = 0; i < activeCount - 1; ++i)
- {
- int min = i;
-
- for (int j = i + 1; j < activeCount; ++j)
- {
- if (edgeTable[active[j]].x < edgeTable[active[min]].x)
- {
- min = j;
- }
- }
-
- if (min != i)
- {
- int temp = active[min];
- active[min] = active[i];
- active[i] = temp;
- }
- }
-
- // For each pair of entries in the AET, fill in pixels between their info
- for (int i = 0; i < activeCount; i += 2)
- {
- Edge el = edgeTable[active[i]];
- Edge er = edgeTable[active[i + 1]];
- int startx = (el.x + 0xff) >> 8; // ceil(x)
- int endx = er.x >> 8; // floor(x)
-
- scans[scansIndex] = new Scanline(startx, yscan2, endx - startx);
- ++scansIndex;
- }
-
- ++yscan2;
-
- // Remove from the AET any edge where yscan == maxy
- int k = 0;
- while (k < activeCount && activeCount > 0)
- {
- if (edgeTable[active[k]].maxy == yscan2)
- {
- // remove by shifting everything down one
- for (int j = k + 1; j < activeCount; ++j)
- {
- active[j - 1] = active[j];
- }
-
- --activeCount;
- }
- else
- {
- ++k;
- }
- }
-
- // Update x for each entry in AET
- for (int i = 0; i < activeCount; ++i)
- {
- edgeTable[active[i]].x += edgeTable[active[i]].dxdy;
- }
- }
-
- return scans;
- }
-
+ int ymax = 0;
+
+ // Build edge table
+ Edge[] edgeTable = new Edge[points.Length];
+ int edgeCount = 0;
+
+ for (int i = 0; i < points.Length; ++i) {
+ Point top = points[i];
+ Point bottom = points[(i + 1) % points.Length];
+ int dy;
+
+ if (top.Y > bottom.Y) {
+ Point temp = top;
+ top = bottom;
+ bottom = temp;
+ }
+
+ dy = bottom.Y - top.Y;
+
+ if (dy != 0) {
+ edgeTable[edgeCount] = new Edge (top.Y, bottom.Y, top.X << 8, (((bottom.X - top.X) << 8) / dy));
+ ymax = Math.Max (ymax, bottom.Y);
+ ++edgeCount;
+ }
+ }
+
+ // Sort edge table by miny
+ for (int i = 0; i < edgeCount - 1; ++i) {
+ int min = i;
+
+ for (int j = i + 1; j < edgeCount; ++j)
+ if (edgeTable[j].miny < edgeTable[min].miny)
+ min = j;
+
+ if (min != i) {
+ Edge temp = edgeTable[min];
+ edgeTable[min] = edgeTable[i];
+ edgeTable[i] = temp;
+ }
+ }
+
+ // Compute how many scanlines we will be emitting
+ int scanCount = 0;
+ int activeLow = 0;
+ int activeHigh = 0;
+ int yscan1 = edgeTable[0].miny;
+
+ // we assume that edgeTable[0].miny == yscan
+ while (activeHigh < edgeCount - 1 &&
+ edgeTable[activeHigh + 1].miny == yscan1) {
+ ++activeHigh;
+ }
+
+ while (yscan1 <= ymax) {
+ // Find new edges where yscan == miny
+ while (activeHigh < edgeCount - 1 &&
+ edgeTable[activeHigh + 1].miny == yscan1) {
+ ++activeHigh;
+ }
+
+ int count = 0;
+ for (int i = activeLow; i <= activeHigh; ++i) {
+ if (edgeTable[i].maxy > yscan1) {
+ ++count;
+ }
+ }
+
+ scanCount += count / 2;
+ ++yscan1;
+
+ // Remove edges where yscan == maxy
+ while (activeLow < edgeCount - 1 &&
+ edgeTable[activeLow].maxy <= yscan1) {
+ ++activeLow;
+ }
+
+ if (activeLow > activeHigh)
+ activeHigh = activeLow;
+ }
+
+ // Allocate scanlines that we'll return
+ Scanline[] scans = new Scanline[scanCount];
+
+ // Active Edge Table (AET): it is indices into the Edge Table (ET)
+ int[] active = new int[edgeCount];
+ int activeCount = 0;
+ int yscan2 = edgeTable[0].miny;
+ int scansIndex = 0;
+
+ // Repeat until both the ET and AET are empty
+ while (yscan2 <= ymax) {
+ // Move any edges from the ET to the AET where yscan == miny
+ for (int i = 0; i < edgeCount; ++i) {
+ if (edgeTable[i].miny == yscan2) {
+ active[activeCount] = i;
+ ++activeCount;
+ }
+ }
+
+ // Sort the AET on x
+ for (int i = 0; i < activeCount - 1; ++i) {
+ int min = i;
+
+ for (int j = i + 1; j < activeCount; ++j)
+ if (edgeTable[active[j]].x < edgeTable[active[min]].x)
+ min = j;
+
+ if (min != i) {
+ int temp = active[min];
+ active[min] = active[i];
+ active[i] = temp;
+ }
+ }
+
+ // For each pair of entries in the AET, fill in pixels between their info
+ for (int i = 0; i < activeCount; i += 2) {
+ Edge el = edgeTable[active[i]];
+ Edge er = edgeTable[active[i + 1]];
+ int startx = (el.x + 0xff) >> 8; // ceil(x)
+ int endx = er.x >> 8; // floor(x)
+
+ scans[scansIndex] = new Scanline (startx, yscan2, endx - startx);
+ ++scansIndex;
+ }
+
+ ++yscan2;
+
+ // Remove from the AET any edge where yscan == maxy
+ int k = 0;
+ while (k < activeCount && activeCount > 0) {
+ if (edgeTable[active[k]].maxy == yscan2) {
+ // remove by shifting everything down one
+ for (int j = k + 1; j < activeCount; ++j)
+ active[j - 1] = active[j];
+
+ --activeCount;
+ } else {
+ ++k;
+ }
+ }
+
+ // Update x for each entry in AET
+ for (int i = 0; i < activeCount; ++i)
+ edgeTable[active[i]].x += edgeTable[active[i]].dxdy;
+ }
+
+ return scans;
+ }
+
public static Path CreatePolygonPath (this Context g, Point[][] polygonSet)
{
g.Save ();
Point p;
- for (int i =0; i < polygonSet.Length; i++)
- {
+
+ for (int i = 0; i < polygonSet.Length; i++) {
if (polygonSet[i].Length == 0)
continue;
-
+
p = polygonSet[i][0];
g.MoveTo (p.X, p.Y);
-
- for (int j =1; j < polygonSet[i].Length; j++)
- {
+
+ for (int j = 1; j < polygonSet[i].Length; j++) {
p = polygonSet[i][j];
- g.LineTo (p.X, p.Y);
+ g.LineTo (p.X, p.Y);
}
+
g.ClosePath ();
}
-
+
Path path = g.CopyPath ();
-
+
g.Restore ();
-
+
return path;
}
-
+
public static Gdk.Point ToGdkPoint (this PointD point)
{
return new Gdk.Point ((int)point.X, (int)point.Y);
diff --git a/Pinta.Core/Extensions/GtkExtensions.cs b/Pinta.Core/Extensions/GtkExtensions.cs
index bdaa331..191d5b6 100644
--- a/Pinta.Core/Extensions/GtkExtensions.cs
+++ b/Pinta.Core/Extensions/GtkExtensions.cs
@@ -65,7 +65,14 @@ namespace Pinta.Core
menu.AppendItem ((MenuItem)action.CreateMenuItem ());
return action;
}
-
+
+ public static Gtk.ToggleAction AppendToggleAction (this Menu menu, string actionName, string actionLabel, string actionTooltip, string actionIcon)
+ {
+ Gtk.ToggleAction action = new Gtk.ToggleAction (actionName, actionLabel, actionTooltip, actionIcon);
+ menu.AppendItem ((MenuItem)action.CreateMenuItem ());
+ return action;
+ }
+
public static Gtk.ToolItem CreateToolBarItem (this Gtk.Action action)
{
Gtk.ToolItem item = (Gtk.ToolItem)action.CreateToolItem ();
diff --git a/Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs b/Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs
index 941a1d8..fbfb4a1 100644
--- a/Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs
+++ b/Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs
@@ -61,7 +61,7 @@ namespace Pinta.Core
old_selection_layer = swap_sel;
PintaCore.Workspace.Invalidate ();
- PintaCore.Tools.SetCurrentTool ("Move Selected Pixels");
+ PintaCore.Tools.SetCurrentTool (Catalog.GetString ("Move Selected Pixels"));
}
public override void Redo ()
diff --git a/Pinta.Core/HistoryItems/MovePixelsHistoryItem.cs b/Pinta.Core/HistoryItems/MovePixelsHistoryItem.cs
index b52fcb1..bfa5752 100644
--- a/Pinta.Core/HistoryItems/MovePixelsHistoryItem.cs
+++ b/Pinta.Core/HistoryItems/MovePixelsHistoryItem.cs
@@ -31,11 +31,22 @@ namespace Pinta.Core
{
public class MovePixelsHistoryItem : BaseHistoryItem
{
+ // There's 2 types of move pixel operations to handle
+ // - The first move "lifts" the selection up into a temporary layer
+ // and then moves it to the new spot
+ // - Subsequent moves only move the selection
+ // around the temporary layer
+ private Document doc;
private Path old_path;
private PointD old_offset;
+ private ImageSurface old_surface;
+ private int layer_index;
+ private bool lifted; // Whether this item has lift
+ private bool is_lifted; // Track state of undo/redo lift
- public MovePixelsHistoryItem (string icon, string text) : base (icon, text)
+ public MovePixelsHistoryItem (string icon, string text, Document document) : base (icon, text)
{
+ doc = document;
}
public override void Undo ()
@@ -52,6 +63,8 @@ namespace Pinta.Core
{
if (old_path != null)
(old_path as IDisposable).Dispose ();
+ if (old_surface != null)
+ (old_surface as IDisposable).Dispose ();
}
private void Swap ()
@@ -64,12 +77,34 @@ namespace Pinta.Core
old_path = swap_path;
old_offset = swap_offset;
-
+
+ if (lifted) {
+ // Grab the original surface
+ ImageSurface surf = PintaCore.Layers[layer_index].Surface;
+
+ // Undo to the "old" surface
+ PintaCore.Layers[layer_index].Surface = old_surface;
+
+ // Store the original surface for Redo
+ old_surface = surf;
+
+ is_lifted = !is_lifted;
+ doc.ShowSelectionLayer = is_lifted;
+ }
+
PintaCore.Workspace.Invalidate ();
}
- public void TakeSnapshot ()
+ public void TakeSnapshot (bool lift)
{
+ lifted = lift;
+ is_lifted = true;
+
+ if (lift) {
+ layer_index = doc.CurrentLayerIndex;
+ old_surface = doc.CurrentLayer.Surface.Clone ();
+ }
+
old_path = PintaCore.Layers.SelectionPath.Clone ();
old_offset = PintaCore.Layers.SelectionLayer.Offset;
}
diff --git a/Pinta.Core/HistoryItems/SelectionHistoryItem.cs b/Pinta.Core/HistoryItems/PasteHistoryItem.cs
similarity index 51%
copy from Pinta.Core/HistoryItems/SelectionHistoryItem.cs
copy to Pinta.Core/HistoryItems/PasteHistoryItem.cs
index b3a98ad..91fe431 100644
--- a/Pinta.Core/HistoryItems/SelectionHistoryItem.cs
+++ b/Pinta.Core/HistoryItems/PasteHistoryItem.cs
@@ -1,5 +1,5 @@
//
-// SelectionHistoryItem.cs
+// PasteHistoryItem.cs
//
// Author:
// Jonathan Pobst <monkey at jpobst.com>
@@ -26,54 +26,78 @@
using System;
using Cairo;
+using Mono.Unix;
+using Gtk;
namespace Pinta.Core
{
- public class SelectionHistoryItem : BaseHistoryItem
+ public class PasteHistoryItem : BaseHistoryItem
{
+ private Gdk.Pixbuf paste_image;
private Path old_path;
- private bool show_selection;
+ private bool old_show_selection;
- public override bool CausesDirty { get { return false; } }
+ public override bool CausesDirty { get { return true; } }
- public SelectionHistoryItem (string icon, string text) : base (icon, text)
+ public PasteHistoryItem (Gdk.Pixbuf pasteImage, Path oldPath, bool oldShowSelection)
{
+ Text = Catalog.GetString ("Paste");
+ Icon = Stock.Paste;
+
+ paste_image = pasteImage;
+ old_path = oldPath;
+ old_show_selection = oldShowSelection;
}
- public override void Undo ()
+ public override void Redo ()
{
+ Document doc = PintaCore.Workspace.ActiveDocument;
+
+ // Copy the paste to the temp layer
+ doc.CreateSelectionLayer ();
+ doc.ShowSelectionLayer = true;
+
+ Path p;
+
+ using (Cairo.Context g = new Cairo.Context (doc.SelectionLayer.Surface)) {
+ g.DrawPixbuf (paste_image, new Cairo.Point (0, 0));
+ p = g.CreateRectanglePath (new Rectangle (0, 0, paste_image.Width, paste_image.Height));
+ }
+
Swap ();
+
+ PintaCore.Workspace.Invalidate ();
+ PintaCore.Tools.SetCurrentTool (Catalog.GetString ("Move Selected Pixels"));
}
- public override void Redo ()
+ public override void Undo ()
{
Swap ();
+
+ PintaCore.Layers.DestroySelectionLayer ();
+ PintaCore.Workspace.Invalidate ();
}
public override void Dispose ()
{
- if (old_path != null)
- (old_path as IDisposable).Dispose ();
+ if (paste_image != null)
+ (paste_image as IDisposable).Dispose ();
}
private void Swap ()
{
- Path swap_path = PintaCore.Layers.SelectionPath;
- bool swap_show = PintaCore.Layers.ShowSelection;
+ // Swap the selection paths, and whether the
+ // selection path should be visible
+ Document doc = PintaCore.Workspace.ActiveDocument;
- PintaCore.Layers.SelectionPath = old_path;
- PintaCore.Layers.ShowSelection = show_selection;
+ Path swap_path = doc.SelectionPath;
+ bool swap_show_sel = doc.ShowSelection;
+
+ doc.SelectionPath = old_path;
+ doc.ShowSelection = old_show_selection;
old_path = swap_path;
- show_selection = swap_show;
-
- PintaCore.Workspace.Invalidate ();
- }
-
- public void TakeSnapshot ()
- {
- old_path = PintaCore.Layers.SelectionPath.Clone ();
- show_selection = PintaCore.Layers.ShowSelection;
+ old_show_selection = swap_show_sel;
}
}
}
diff --git a/Pinta.Core/HistoryItems/SimpleHistoryItem.cs b/Pinta.Core/HistoryItems/SimpleHistoryItem.cs
index 579c264..eadb13c 100644
--- a/Pinta.Core/HistoryItems/SimpleHistoryItem.cs
+++ b/Pinta.Core/HistoryItems/SimpleHistoryItem.cs
@@ -46,20 +46,16 @@ namespace Pinta.Core
public override void Undo ()
{
- // Grab the original surface
- ImageSurface surf = PintaCore.Layers[layer_index].Surface;
-
- // Undo to the "old" surface
- PintaCore.Layers[layer_index].Surface = old_surface;
-
- // Store the original surface for Redo
- old_surface = surf;
-
- PintaCore.Workspace.Invalidate ();
+ Swap ();
}
public override void Redo ()
{
+ Swap ();
+ }
+
+ private void Swap ()
+ {
// Grab the original surface
ImageSurface surf = PintaCore.Layers[layer_index].Surface;
@@ -86,7 +82,7 @@ namespace Pinta.Core
public void TakeSnapshotOfLayer (Layer layer)
{
- layer_index = PintaCore.Layers.IndexOf (layer);;
+ layer_index = PintaCore.Layers.IndexOf (layer);
old_surface = layer.Surface.Clone ();
}
}
diff --git a/Pinta.Core/ImageFormats/GdkPixbufFormat.cs b/Pinta.Core/ImageFormats/GdkPixbufFormat.cs
index 7a89b43..f3ce7ea 100644
--- a/Pinta.Core/ImageFormats/GdkPixbufFormat.cs
+++ b/Pinta.Core/ImageFormats/GdkPixbufFormat.cs
@@ -40,17 +40,20 @@ namespace Pinta.Core
this.filetype = filetype;
}
- public void Import (LayerManager layers, string fileName)
+ public void Import (string fileName)
{
+ // Handle any EXIF orientation flags
Pixbuf bg = new Pixbuf (fileName);
+ bg = bg.ApplyEmbeddedOrientation ();
+
Size imagesize = new Size (bg.Width, bg.Height);
- PintaCore.Workspace.CreateAndActivateDocument (fileName, imagesize);
- PintaCore.Workspace.ActiveDocument.HasFile = true;
- PintaCore.Workspace.ActiveDocument.ImageSize = imagesize;
- PintaCore.Workspace.ActiveWorkspace.CanvasSize = imagesize;
+ Document doc = PintaCore.Workspace.CreateAndActivateDocument (fileName, imagesize);
+ doc.HasFile = true;
+ doc.ImageSize = imagesize;
+ doc.Workspace.CanvasSize = imagesize;
- Layer layer = layers.AddNewLayer (Path.GetFileName (fileName));
+ Layer layer = doc.AddNewLayer (Path.GetFileName (fileName));
using (Cairo.Context g = new Cairo.Context (layer.Surface)) {
CairoHelper.SetSourcePixbuf (g, bg, 0, 0);
@@ -64,10 +67,10 @@ namespace Pinta.Core
{
pb.Save (fileName, fileType);
}
-
- public void Export (LayerManager layers, string fileName)
+
+ public void Export (Document document, string fileName)
{
- Cairo.ImageSurface surf = layers.GetFlattenedImage ();
+ Cairo.ImageSurface surf = document.GetFlattenedImage ();
Pixbuf pb = surf.ToPixbuf ();
DoSave(pb, fileName, filetype);
diff --git a/Pinta.Core/ImageFormats/IImageExporter.cs b/Pinta.Core/ImageFormats/IImageExporter.cs
index 28c129d..37b76ff 100644
--- a/Pinta.Core/ImageFormats/IImageExporter.cs
+++ b/Pinta.Core/ImageFormats/IImageExporter.cs
@@ -30,6 +30,6 @@ namespace Pinta.Core
{
public interface IImageExporter
{
- void Export (LayerManager layers, string fileName);
+ void Export (Document document, string fileName);
}
}
diff --git a/Pinta.Core/ImageFormats/IImageImporter.cs b/Pinta.Core/ImageFormats/IImageImporter.cs
index 731bfc8..405e9f3 100644
--- a/Pinta.Core/ImageFormats/IImageImporter.cs
+++ b/Pinta.Core/ImageFormats/IImageImporter.cs
@@ -30,6 +30,6 @@ namespace Pinta.Core
{
public interface IImageImporter
{
- void Import (LayerManager layers, string fileName);
+ void Import (string fileName);
}
}
diff --git a/Pinta.Core/ImageFormats/OraFormat.cs b/Pinta.Core/ImageFormats/OraFormat.cs
index e671c8f..704eac8 100644
--- a/Pinta.Core/ImageFormats/OraFormat.cs
+++ b/Pinta.Core/ImageFormats/OraFormat.cs
@@ -33,6 +33,7 @@ using Gdk;
using Cairo;
using ICSharpCode.SharpZipLib.Zip;
+using System.Collections.Generic;
namespace Pinta.Core
{
@@ -40,7 +41,7 @@ namespace Pinta.Core
{
private const int ThumbMaxSize = 256;
- public void Import (LayerManager layers, string fileName) {
+ public void Import (string fileName) {
ZipFile file = new ZipFile (fileName);
XmlDocument stackXml = new XmlDocument ();
stackXml.Load (file.GetInputStream (file.GetEntry ("stack.xml")));
@@ -48,6 +49,11 @@ namespace Pinta.Core
XmlElement imageElement = stackXml.DocumentElement;
int width = int.Parse (imageElement.GetAttribute ("w"));
int height = int.Parse (imageElement.GetAttribute ("h"));
+
+ Size imagesize = new Size (width, height);
+
+ Document doc = PintaCore.Workspace.CreateAndActivateDocument (fileName, imagesize);
+ doc.HasFile = true;
XmlElement stackElement = (XmlElement) stackXml.GetElementsByTagName ("stack")[0];
XmlNodeList layerElements = stackElement.GetElementsByTagName ("layer");
@@ -55,11 +61,8 @@ namespace Pinta.Core
if (layerElements.Count == 0)
throw new XmlException ("No layers found in OpenRaster file");
- layers.Clear ();
- PintaCore.History.Clear ();
- layers.DestroySelectionLayer ();
- PintaCore.Workspace.ImageSize = new Size (width, height);
- PintaCore.Workspace.CanvasSize = new Gdk.Size (width, height);
+ doc.ImageSize = imagesize;
+ doc.Workspace.CanvasSize = imagesize;
for (int i = 0; i < layerElements.Count; i++) {
XmlElement layerElement = (XmlElement) layerElements[i];
@@ -87,8 +90,9 @@ namespace Pinta.Core
}
}
- Layer layer = layers.CreateLayer (name, width, height);
- layers.Insert (layer, 0);
+ Layer layer = doc.CreateLayer (name);
+ doc.Insert (layer, 0);
+
layer.Opacity = double.Parse (GetAttribute (layerElement, "opacity", "1"), GetFormat ());
using (Pixbuf pb = new Pixbuf (tmp_file)) {
@@ -132,7 +136,7 @@ namespace Pinta.Core
return new Size ((int) ((double)width / height * ThumbMaxSize), ThumbMaxSize);
}
- private byte[] GetLayerXmlData (LayerManager layers) {
+ private byte[] GetLayerXmlData (List<Layer> layers) {
MemoryStream ms = new MemoryStream ();
XmlTextWriter writer = new XmlTextWriter (ms, System.Text.Encoding.UTF8);
writer.Formatting = Formatting.Indented;
@@ -161,7 +165,8 @@ namespace Pinta.Core
return ms.ToArray ();
}
- public void Export (LayerManager layers, string fileName) {
+ public void Export (Document document, string fileName)
+ {
ZipOutputStream stream = new ZipOutputStream (new FileStream (fileName, FileMode.Create));
ZipEntry mimetype = new ZipEntry ("mimetype");
mimetype.CompressionMethod = CompressionMethod.Stored;
@@ -170,8 +175,8 @@ namespace Pinta.Core
byte[] databytes = System.Text.Encoding.ASCII.GetBytes ("image/openraster");
stream.Write (databytes, 0, databytes.Length);
- for (int i = 0; i < layers.Count; i++) {
- Pixbuf pb = layers[i].Surface.ToPixbuf ();
+ for (int i = 0; i < document.Layers.Count; i++) {
+ Pixbuf pb = document.Layers[i].Surface.ToPixbuf ();
byte[] buf = pb.SaveToBuffer ("png");
(pb as IDisposable).Dispose ();
@@ -180,10 +185,10 @@ namespace Pinta.Core
}
stream.PutNextEntry (new ZipEntry ("stack.xml"));
- databytes = GetLayerXmlData (layers);
+ databytes = GetLayerXmlData (document.Layers);
stream.Write (databytes, 0, databytes.Length);
- ImageSurface flattened = layers.GetFlattenedImage();
+ ImageSurface flattened = document.GetFlattenedImage ();
Pixbuf flattenedPb = flattened.ToPixbuf ();
Size newSize = GetThumbDimensions (flattenedPb.Width, flattenedPb.Height);
Pixbuf thumb = flattenedPb.ScaleSimple (newSize.Width, newSize.Height, InterpType.Bilinear);
diff --git a/Pinta.Core/ImageFormats/TgaExporter.cs b/Pinta.Core/ImageFormats/TgaExporter.cs
index 875b0a0..89576a3 100644
--- a/Pinta.Core/ImageFormats/TgaExporter.cs
+++ b/Pinta.Core/ImageFormats/TgaExporter.cs
@@ -82,8 +82,8 @@ namespace Pinta.Core
// For now, we only export in uncompressed ARGB32 format. If someone requests this functionality,
// we can always add more through an export dialog.
- public void Export (LayerManager layers, string fileName) {
- ImageSurface surf = layers.GetFlattenedImage (); // Assumes the surface is in ARGB32 format
+ public void Export (Document document, string fileName) {
+ ImageSurface surf = document.GetFlattenedImage (); // Assumes the surface is in ARGB32 format
BinaryWriter writer = new BinaryWriter (new FileStream (fileName, FileMode.Create, FileAccess.Write));
try {
diff --git a/Pinta.Core/Managers/ActionManager.cs b/Pinta.Core/Managers/ActionManager.cs
index e675fc9..6cd9f4a 100644
--- a/Pinta.Core/Managers/ActionManager.cs
+++ b/Pinta.Core/Managers/ActionManager.cs
@@ -112,12 +112,24 @@ namespace Pinta.Core
toolbar.AppendItem (File.Save.CreateToolBarItem ());
//toolbar.AppendItem (File.Print.CreateToolBarItem ());
toolbar.AppendItem (new SeparatorToolItem ());
- toolbar.AppendItem (Edit.Cut.CreateToolBarItem ());
- toolbar.AppendItem (Edit.Copy.CreateToolBarItem ());
- toolbar.AppendItem (Edit.Paste.CreateToolBarItem ());
- toolbar.AppendItem (new SeparatorToolItem ());
- toolbar.AppendItem (Edit.Undo.CreateToolBarItem ());
- toolbar.AppendItem (Edit.Redo.CreateToolBarItem ());
+
+ // Cut/Copy/Paste comes before Undo/Redo on Windows
+ if (PintaCore.System.OperatingSystem == OS.Windows) {
+ toolbar.AppendItem (Edit.Cut.CreateToolBarItem ());
+ toolbar.AppendItem (Edit.Copy.CreateToolBarItem ());
+ toolbar.AppendItem (Edit.Paste.CreateToolBarItem ());
+ toolbar.AppendItem (new SeparatorToolItem ());
+ toolbar.AppendItem (Edit.Undo.CreateToolBarItem ());
+ toolbar.AppendItem (Edit.Redo.CreateToolBarItem ());
+ } else {
+ toolbar.AppendItem (Edit.Undo.CreateToolBarItem ());
+ toolbar.AppendItem (Edit.Redo.CreateToolBarItem ());
+ toolbar.AppendItem (new SeparatorToolItem ());
+ toolbar.AppendItem (Edit.Cut.CreateToolBarItem ());
+ toolbar.AppendItem (Edit.Copy.CreateToolBarItem ());
+ toolbar.AppendItem (Edit.Paste.CreateToolBarItem ());
+ }
+
toolbar.AppendItem (new SeparatorToolItem ());
toolbar.AppendItem (Image.CropToSelection.CreateToolBarItem ());
toolbar.AppendItem (Edit.Deselect.CreateToolBarItem ());
diff --git a/Pinta.Core/HistoryItems/CompoundHistoryItem.cs b/Pinta.Core/Managers/FontManager.cs
similarity index 51%
copy from Pinta.Core/HistoryItems/CompoundHistoryItem.cs
copy to Pinta.Core/Managers/FontManager.cs
index 47581e2..3081af1 100644
--- a/Pinta.Core/HistoryItems/CompoundHistoryItem.cs
+++ b/Pinta.Core/Managers/FontManager.cs
@@ -1,8 +1,9 @@
//
-// CompoundHistoryItem.cs
+// FontManager.cs
//
-// Author:
-// Jonathan Pobst <monkey at jpobst.com>
+// Authors:
+// Olivier Dufour <olivier.duff at gmail.com>
+// Jonathan Pobst <monkey at jpobst.com>
//
// Copyright (c) 2010 Jonathan Pobst
//
@@ -26,50 +27,61 @@
using System;
using System.Collections.Generic;
+using System.Linq;
+using Gdk;
+using Pango;
namespace Pinta.Core
{
- public class CompoundHistoryItem : BaseHistoryItem
+ public class FontManager
{
- protected List<BaseHistoryItem> history_stack = new List<BaseHistoryItem> ();
+ private List<FontFamily> families;
- public CompoundHistoryItem () : base ()
- {
- }
-
- public CompoundHistoryItem (string icon, string text) : base (icon, text)
+ private List<int> default_font_sizes = new List<int> (new int[] { 6, 7, 8, 9, 10, 11, 12, 14, 16,
+ 18, 20, 22, 24, 26, 28, 32, 36, 40, 44,
+ 48, 54, 60, 66, 72, 80, 88, 96 });
+
+ public FontManager ()
{
+ families = new List<FontFamily> ();
+
+ using (Pango.Context c = PangoHelper.ContextGet ())
+ families.AddRange (c.Families);
}
-
- public void Push (BaseHistoryItem item)
+
+ public List<string> GetInstalledFonts ()
{
- history_stack.Add (item);
+ return families.Select (f => f.Name).ToList ();
}
-
- public override void Undo ()
+
+ public FontFamily GetFamily (string fontname)
{
- foreach (var item in history_stack)
- item.Undo ();
+ return families.Find (f => f.Name == fontname);
}
- public override void Redo ()
+ public List<int> GetSizes (FontFamily family)
{
- // We want to redo the actions in the
- // opposite order than the undo order
- for (int i = history_stack.Count - 1; i >= 0; i--)
- history_stack[i].Redo ();
+ return GetSizes (family.Faces[0]);
}
- public override void Dispose ()
+ unsafe public List<int> GetSizes (FontFace fontFace)
{
- foreach (var item in history_stack)
- item.Dispose ();
+ int sizes;
+ int nsizes;
+
+ // Query for supported sizes for this font
+ fontFace.ListSizes (out sizes, out nsizes);
+
+ if (nsizes == 0)
+ return default_font_sizes;
+
+ List<int> result = new List<int> ();
+
+ for (int i = 0; i < nsizes; i++)
+ result.Add (*(&sizes + 4 * i));
+
+ return result;
}
- public void TakeSnapshotOfImage ()
- {
- foreach (Layer item in PintaCore.Workspace.ActiveDocument.Layers)
- history_stack.Add (new SimpleHistoryItem (string.Empty, string.Empty, item.Surface.Clone (), PintaCore.Layers.IndexOf (item)));
- }
}
}
diff --git a/Pinta.Core/Managers/ImageConverterManager.cs b/Pinta.Core/Managers/ImageConverterManager.cs
index f450994..ebd2f16 100644
--- a/Pinta.Core/Managers/ImageConverterManager.cs
+++ b/Pinta.Core/Managers/ImageConverterManager.cs
@@ -41,7 +41,19 @@ namespace Pinta.Core
// Create all the formats supported by Gdk
foreach (var format in Pixbuf.Formats) {
string formatName = format.Name.ToLowerInvariant ();
- string[] extensions = (formatName == "jpeg") ? new string[] { "jpg", "jpeg" } : new string[] { formatName };
+ string[] extensions;
+
+ switch (formatName) {
+ case "jpeg":
+ extensions = new string[] { "jpg", "jpeg" };
+ break;
+ case "tiff":
+ extensions = new string[] { "tif", "tiff" };
+ break;
+ default:
+ extensions = new string[] { formatName };
+ break;
+ }
GdkPixbufFormat importer = new GdkPixbufFormat (format.Name.ToLowerInvariant ());
IImageExporter exporter;
@@ -65,6 +77,24 @@ namespace Pinta.Core
public IList<FormatDescriptor> Formats { get; private set; }
+ public FormatDescriptor GetDefaultFormat ()
+ {
+ string extension = PintaCore.Settings.GetSetting<string> ("default-image-type", "jpeg");
+
+ var fd = GetFormatByExtension (extension);
+
+ // We found the last one we used
+ if (fd != null)
+ return fd;
+
+ // Return any format we have
+ if (Formats.Count > 0)
+ return Formats[0];
+
+ // We don't have any formats
+ throw new InvalidOperationException ("There are no image formats supported.");
+ }
+
public IImageExporter GetExporterByExtension (string extension)
{
FormatDescriptor format = GetFormatByExtension (extension);
@@ -114,5 +144,14 @@ namespace Pinta.Core
string extension = Path.GetExtension (file);
return GetImporterByExtension (extension);
}
+
+ public void SetDefaultFormat (string extension)
+ {
+ // Normalize the extension
+ extension = extension.ToLowerInvariant ().TrimStart ('.').Trim ();
+
+ PintaCore.Settings.PutSetting ("default-image-type", extension);
+ PintaCore.Settings.SaveSettings ();
+ }
}
}
diff --git a/Pinta.Core/Managers/LivePreviewManager.cs b/Pinta.Core/Managers/LivePreviewManager.cs
index 91c9c77..17dc8be 100644
--- a/Pinta.Core/Managers/LivePreviewManager.cs
+++ b/Pinta.Core/Managers/LivePreviewManager.cs
@@ -84,7 +84,7 @@ namespace Pinta.Core
this.effect = effect;
// Handle selection path.
- PintaCore.Layers.FinishSelection ();
+ PintaCore.Tools.Commit ();
selection_path = (PintaCore.Layers.ShowSelection) ? PintaCore.Layers.SelectionPath : null;
render_bounds = selection_path.GetBounds ();
render_bounds = PintaCore.Workspace.ClampToImageSize (render_bounds);
@@ -245,9 +245,7 @@ namespace Pinta.Core
ctx.FillRule = Cairo.FillRule.EvenOdd;
ctx.Clip ();
- ctx.Operator = Cairo.Operator.Clear;
- ctx.Paint ();
- ctx.Operator = Cairo.Operator.Over;
+ ctx.Operator = Cairo.Operator.Source;
ctx.SetSourceSurface (live_preview_surface, (int)layer.Offset.X, (int)layer.Offset.Y);
ctx.Paint ();
diff --git a/Pinta.Core/Managers/SettingsManager.cs b/Pinta.Core/Managers/SettingsManager.cs
index 539e1e8..3ce3acf 100644
--- a/Pinta.Core/Managers/SettingsManager.cs
+++ b/Pinta.Core/Managers/SettingsManager.cs
@@ -71,7 +71,7 @@ namespace Pinta.Core
XmlDocument doc = new XmlDocument ();
doc.Load (filename);
- // Kinda cheating for now because I know there is only one thing stored in here
+ // Kinda cheating for now because I know there is only a few things stored in here
foreach (XmlElement setting in doc.DocumentElement.ChildNodes) {
switch (setting.GetAttribute ("type")) {
case "System.Int32":
@@ -80,6 +80,9 @@ namespace Pinta.Core
case "System.Boolean":
properties[setting.GetAttribute ("name")] = bool.Parse (setting.InnerText);
break;
+ case "System.String":
+ properties[setting.GetAttribute ("name")] = setting.InnerText;
+ break;
}
}
@@ -108,13 +111,18 @@ namespace Pinta.Core
private void LoadSettings ()
{
string settings_file = Path.Combine (GetUserSettingsDirectory (), "settings.xml");
- settings = Deserialize (settings_file);
+
+ try {
+ settings = Deserialize (settings_file);
+ } catch (Exception) {
+ // Will load with default settings
+ }
string palette_file = Path.Combine (GetUserSettingsDirectory (), "palette.txt");
try {
PintaCore.Palette.CurrentPalette.Load (palette_file);
- } catch (Exception e) {
+ } catch (Exception) {
// Retain the default palette
}
}
diff --git a/Pinta.Core/Managers/SystemManager.cs b/Pinta.Core/Managers/SystemManager.cs
index 6b198f2..43df9ee 100644
--- a/Pinta.Core/Managers/SystemManager.cs
+++ b/Pinta.Core/Managers/SystemManager.cs
@@ -28,18 +28,37 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.IO;
+using System.Runtime.InteropServices;
namespace Pinta.Core
{
public class SystemManager
{
+ private static OS operating_system;
+
public ImageConverterManager ImageFormats { get; private set; }
+ public FontManager Fonts { get; private set; }
public int RenderThreads { get; set; }
+ public OS OperatingSystem { get { return operating_system; } }
public SystemManager ()
{
ImageFormats = new ImageConverterManager ();
RenderThreads = Environment.ProcessorCount;
+ Fonts = new FontManager ();
+ }
+
+ static SystemManager ()
+ {
+ if (Path.DirectorySeparatorChar == '\\')
+ operating_system = OS.Windows;
+ else if (IsRunningOnMac ())
+ operating_system = OS.Mac;
+ else if (Environment.OSVersion.Platform == PlatformID.Unix)
+ operating_system = OS.X11;
+ else
+ operating_system = OS.Other;
}
public string GetExecutablePathName ()
@@ -49,5 +68,41 @@ namespace Pinta.Core
return executablePathName;
}
+
+ public static OS GetOperatingSystem ()
+ {
+ return operating_system;
+ }
+
+ //From Managed.Windows.Forms/XplatUI
+ [DllImport ("libc")]
+ static extern int uname (IntPtr buf);
+
+ static bool IsRunningOnMac ()
+ {
+ IntPtr buf = IntPtr.Zero;
+ try {
+ buf = Marshal.AllocHGlobal (8192);
+ // This is a hacktastic way of getting sysname from uname ()
+ if (uname (buf) == 0) {
+ string os = Marshal.PtrToStringAnsi (buf);
+ if (os == "Darwin")
+ return true;
+ }
+ } catch {
+ } finally {
+ if (buf != IntPtr.Zero)
+ Marshal.FreeHGlobal (buf);
+ }
+ return false;
+ }
+ }
+
+ public enum OS
+ {
+ Windows,
+ Mac,
+ X11,
+ Other
}
}
diff --git a/Pinta.Core/Managers/ToolManager.cs b/Pinta.Core/Managers/ToolManager.cs
index 55ceb7a..b478a81 100644
--- a/Pinta.Core/Managers/ToolManager.cs
+++ b/Pinta.Core/Managers/ToolManager.cs
@@ -55,11 +55,12 @@ namespace Pinta.Core
ToggleToolButton tb = (ToggleToolButton)sender;
BaseTool t = FindTool (tb.Label);
-
+
// Don't let the user unselect the current tool
if (t.Name == CurrentTool.Name) {
- //tb.Active = true;
- //return;
+ if (prev_index != index)
+ tb.Active = true;
+ return;
}
SetCurrentTool (t);
@@ -86,19 +87,24 @@ namespace Pinta.Core
get { return Tools[prev_index]; }
}
+ public void Commit ()
+ {
+ CurrentTool.DoCommit ();
+ }
+
public void SetCurrentTool (BaseTool tool)
{
int i = Tools.IndexOf (tool);
if (index == i)
return;
-
+
// Unload previous tool if needed
if (index >= 0) {
+ prev_index = index;
Tools[index].DoClearToolBar (PintaCore.Chrome.ToolToolBar);
Tools[index].DoDeactivated ();
Tools[index].ToolItem.Active = false;
- prev_index = index;
}
// Load new tool
diff --git a/Pinta.Core/Managers/WorkspaceManager.cs b/Pinta.Core/Managers/WorkspaceManager.cs
index 145ac1e..9ef735c 100644
--- a/Pinta.Core/Managers/WorkspaceManager.cs
+++ b/Pinta.Core/Managers/WorkspaceManager.cs
@@ -88,7 +88,7 @@ namespace Pinta.Core
Document doc = new Document (size);
if (string.IsNullOrEmpty (filename))
- doc.Filename = string.Format ("Unsaved Image {0}", new_file_name++);
+ doc.Filename = string.Format (Catalog.GetString ("Unsaved Image {0}"), new_file_name++);
else
doc.PathAndFileName = filename;
@@ -142,17 +142,19 @@ namespace Pinta.Core
ActiveWorkspace.Invalidate (rect);
}
- public Document NewDocument (Gdk.Size imageSize)
+ public Document NewDocument (Gdk.Size imageSize, bool transparent)
{
Document doc = CreateAndActivateDocument (null, imageSize);
doc.Workspace.CanvasSize = imageSize;
// Start with an empty white layer
Layer background = doc.AddNewLayer (Catalog.GetString ("Background"));
-
- using (Cairo.Context g = new Cairo.Context (background.Surface)) {
- g.SetSourceRGB (1, 1, 1);
- g.Paint ();
+
+ if (!transparent) {
+ using (Cairo.Context g = new Cairo.Context (background.Surface)) {
+ g.SetSourceRGB (1, 1, 1);
+ g.Paint ();
+ }
}
doc.Workspace.History.PushNewItem (new BaseHistoryItem (Stock.New, Catalog.GetString ("New Image")));
@@ -170,7 +172,7 @@ namespace Pinta.Core
try {
// Open the image and add it to the layers
IImageImporter importer = PintaCore.System.ImageFormats.GetImporterByFile (file);
- importer.Import (PintaCore.Layers, file);
+ importer.Import (file);
PintaCore.Workspace.ActiveDocument.PathAndFileName = file;
PintaCore.Workspace.ActiveWorkspace.History.PushNewItem (new BaseHistoryItem (Stock.Open, Catalog.GetString ("Open Image")));
@@ -211,7 +213,7 @@ namespace Pinta.Core
}
public bool ImageFitsInWindow {
- get { return ActiveWorkspace.CanvasFitsInWindow; }
+ get { return ActiveWorkspace.ImageFitsInWindow; }
}
internal void ResetTitle ()
@@ -244,6 +246,8 @@ namespace Pinta.Core
internal void SetActiveDocumentInternal (Document document)
{
+ PintaCore.Tools.Commit ();
+
int index = OpenDocuments.IndexOf (document);
active_document_index = index;
diff --git a/Pinta.Core/Pinta.Core.csproj b/Pinta.Core/Pinta.Core.csproj
index f17112a..6cac5ae 100644
--- a/Pinta.Core/Pinta.Core.csproj
+++ b/Pinta.Core/Pinta.Core.csproj
@@ -81,6 +81,7 @@
<Compile Include="Actions\EffectsActions.cs" />
<Compile Include="AssemblyInfo.cs" />
<Compile Include="Classes\Anchor.cs" />
+ <Compile Include="Classes\BaseExtension.cs" />
<Compile Include="Classes\DocumentWorkspaceHistory.cs" />
<Compile Include="Classes\Document.cs" />
<Compile Include="Classes\DocumentWorkspace.cs" />
@@ -107,6 +108,7 @@
<Compile Include="EventArgs\HistoryItemRemovedEventArgs.cs" />
<Compile Include="EventArgs\TextChangedEventArgs.cs" />
<Compile Include="Extensions\ToolBarSlider.cs" />
+ <Compile Include="HistoryItems\PasteHistoryItem.cs" />
<Compile Include="HistoryItems\ResizeHistoryItem.cs" />
<Compile Include="HistoryItems\FinishPixelsHistoryItem.cs" />
<Compile Include="HistoryItems\MovePixelsHistoryItem.cs" />
@@ -120,6 +122,7 @@
<Compile Include="HistoryItems\SimpleHistoryItem.cs" />
<Compile Include="Managers\ActionManager.cs" />
<Compile Include="Managers\ChromeManager.cs" />
+ <Compile Include="Managers\FontManager.cs" />
<Compile Include="Managers\ImageConverterManager.cs" />
<Compile Include="Managers\HistoryManager.cs" />
<Compile Include="Managers\LayerManager.cs" />
diff --git a/Pinta.Effects/Effects/OilPaintingEffect.cs b/Pinta.Effects/Effects/OilPaintingEffect.cs
index ce8e381..bc3f84e 100644
--- a/Pinta.Effects/Effects/OilPaintingEffect.cs
+++ b/Pinta.Effects/Effects/OilPaintingEffect.cs
@@ -165,7 +165,7 @@ namespace Pinta.Effects
{
int* ptr = (int*)dst;
- for (int i = 0; i < 1020 / 4; i++) {
+ for (ulong i = 0; i < length / 4; i++) {
*ptr = 0;
ptr++;
}
diff --git a/Pinta.Effects/Pinta.Effects.csproj b/Pinta.Effects/Pinta.Effects.csproj
index 0a584a3..58fdff1 100644
--- a/Pinta.Effects/Pinta.Effects.csproj
+++ b/Pinta.Effects/Pinta.Effects.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -46,7 +46,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>..\bin\Extensions\</OutputPath>
+ <OutputPath>..\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
diff --git a/Pinta.Effects/Properties/AssemblyInfo.cs b/Pinta.Effects/Properties/AssemblyInfo.cs
index 2b57240..d944996 100644
--- a/Pinta.Effects/Properties/AssemblyInfo.cs
+++ b/Pinta.Effects/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion ("0.5.0.0")]
-[assembly: AssemblyFileVersion ("0.5.0.0")]
+[assembly: AssemblyVersion ("0.6.0.0")]
+[assembly: AssemblyFileVersion ("0.6.0.0")]
diff --git a/Pinta.Gui.Widgets/AssemblyInfo.cs b/Pinta.Gui.Widgets/AssemblyInfo.cs
index 005f9f3..0171729 100644
--- a/Pinta.Gui.Widgets/AssemblyInfo.cs
+++ b/Pinta.Gui.Widgets/AssemblyInfo.cs
@@ -42,7 +42,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("0.5.0.0")]
+[assembly: AssemblyVersion("0.6.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta.Gui.Widgets/Widgets/Canvas/PintaCanvas.cs b/Pinta.Gui.Widgets/Widgets/Canvas/PintaCanvas.cs
index dba3a47..831dadd 100644
--- a/Pinta.Gui.Widgets/Widgets/Canvas/PintaCanvas.cs
+++ b/Pinta.Gui.Widgets/Widgets/Canvas/PintaCanvas.cs
@@ -176,8 +176,14 @@ namespace Pinta.Gui.Widgets
g.FillPreserve ();
}
- g.SetDash (new double[] { 2 / scale, 4 / scale }, 0);
g.LineWidth = 1 / scale;
+
+ // Draw a white line first so it shows up on dark backgrounds
+ g.Color = new Cairo.Color (1, 1, 1);
+ g.StrokePreserve ();
+
+ // Draw a black dashed line over the white line
+ g.SetDash (new double[] { 2 / scale, 4 / scale }, 0);
g.Color = new Cairo.Color (0, 0, 0);
g.Stroke ();
@@ -195,11 +201,11 @@ namespace Pinta.Gui.Widgets
switch (evnt.Direction) {
case ScrollDirection.Down:
case ScrollDirection.Right:
- PintaCore.Actions.View.ZoomOut.Activate ();
+ PintaCore.Workspace.ActiveWorkspace.ZoomOutFromMouseScroll (new Cairo.PointD (evnt.X, evnt.Y));
return true;
case ScrollDirection.Left:
case ScrollDirection.Up:
- PintaCore.Actions.View.ZoomIn.Activate ();
+ PintaCore.Workspace.ActiveWorkspace.ZoomInFromMouseScroll (new Cairo.PointD (evnt.X, evnt.Y));
return true;
}
}
diff --git a/Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs b/Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs
index 2b7a468..61c516b 100644
--- a/Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs
+++ b/Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs
@@ -27,6 +27,7 @@
using System;
using Cairo;
using Pinta.Core;
+using Mono.Unix;
namespace Pinta.Gui.Widgets
{
@@ -71,7 +72,7 @@ namespace Pinta.Gui.Widgets
}
if (primary_rect.ContainsPoint (ev.X, ev.Y)) {
- Gtk.ColorSelectionDialog csd = new Gtk.ColorSelectionDialog ("Choose Primary Color");
+ Gtk.ColorSelectionDialog csd = new Gtk.ColorSelectionDialog (Catalog.GetString ("Choose Primary Color"));
csd.ColorSelection.PreviousColor = PintaCore.Palette.PrimaryColor.ToGdkColor ();
csd.ColorSelection.CurrentColor = PintaCore.Palette.PrimaryColor.ToGdkColor ();
csd.ColorSelection.CurrentAlpha = PintaCore.Palette.PrimaryColor.GdkColorAlpha ();
@@ -85,7 +86,7 @@ namespace Pinta.Gui.Widgets
csd.Destroy ();
} else if (secondary_rect.ContainsPoint (ev.X, ev.Y)) {
- Gtk.ColorSelectionDialog csd = new Gtk.ColorSelectionDialog ("Choose Secondary Color");
+ Gtk.ColorSelectionDialog csd = new Gtk.ColorSelectionDialog (Catalog.GetString ("Choose Secondary Color"));
csd.ColorSelection.PreviousColor = PintaCore.Palette.SecondaryColor.ToGdkColor ();
csd.ColorSelection.CurrentColor = PintaCore.Palette.SecondaryColor.ToGdkColor ();
csd.ColorSelection.CurrentAlpha = PintaCore.Palette.SecondaryColor.GdkColorAlpha ();
@@ -108,7 +109,7 @@ namespace Pinta.Gui.Widgets
else if (ev.Button == 1)
PintaCore.Palette.PrimaryColor = palette[pal];
else {
- Gtk.ColorSelectionDialog csd = new Gtk.ColorSelectionDialog ("Choose Palette Color");
+ Gtk.ColorSelectionDialog csd = new Gtk.ColorSelectionDialog (Catalog.GetString ("Choose Palette Color"));
csd.ColorSelection.PreviousColor = palette[pal].ToGdkColor ();
csd.ColorSelection.CurrentColor = palette[pal].ToGdkColor ();
csd.ColorSelection.CurrentAlpha = palette[pal].GdkColorAlpha ();
diff --git a/Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs b/Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs
index c09ad19..9098f9d 100644
--- a/Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs
+++ b/Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs
@@ -143,7 +143,7 @@ namespace Pinta.Gui.Widgets {
// Container child table1.Gtk.Table+TableChild
this.label2 = new Gtk.Label();
this.label2.Name = "label2";
- this.label2.LabelProp = Mono.Unix.Catalog.GetString("X:");
+ this.label2.LabelProp = "X:";
this.table1.Add(this.label2);
Gtk.Table.TableChild w23 = ((Gtk.Table.TableChild)(this.table1[this.label2]));
w23.XOptions = ((Gtk.AttachOptions)(4));
@@ -151,7 +151,7 @@ namespace Pinta.Gui.Widgets {
// Container child table1.Gtk.Table+TableChild
this.label3 = new Gtk.Label();
this.label3.Name = "label3";
- this.label3.LabelProp = Mono.Unix.Catalog.GetString("Y:");
+ this.label3.LabelProp = "Y:";
this.table1.Add(this.label3);
Gtk.Table.TableChild w24 = ((Gtk.Table.TableChild)(this.table1[this.label3]));
w24.TopAttach = ((uint)(1));
diff --git a/Pinta.Install.proj b/Pinta.Install.proj
index 9da884e..489f138 100644
--- a/Pinta.Install.proj
+++ b/Pinta.Install.proj
@@ -4,7 +4,7 @@
<!-- Set some paths -->
<PropertyGroup>
<OutputPath>bin</OutputPath>
- <InstallPrefix Condition="'$(InstallPrefix)'==''">/usr/local</InstallPrefix>
+ <InstallPrefix>/usr/local</InstallPrefix>
</PropertyGroup>
<!-- All of our translation files (po) -->
@@ -12,6 +12,9 @@
<Translation Include="po/messages-ar.po">
<Code>ar</Code>
</Translation>
+ <Translation Include="po/messages-br.po">
+ <Code>br</Code>
+ </Translation>
<Translation Include="po/messages-ca.po">
<Code>ca</Code>
</Translation>
@@ -27,12 +30,21 @@
<Translation Include="po/messages-el.po">
<Code>el</Code>
</Translation>
+ <Translation Include="po/messages-en_GB.po">
+ <Code>en_GB</Code>
+ </Translation>
<Translation Include="po/messages-es.po">
<Code>es</Code>
</Translation>
+ <Translation Include="po/messages-eu.po">
+ <Code>eu</Code>
+ </Translation>
<Translation Include="po/messages-fi.po">
<Code>fi</Code>
</Translation>
+ <Translation Include="po/messages-fo.po">
+ <Code>fo</Code>
+ </Translation>
<Translation Include="po/messages-fr.po">
<Code>fr</Code>
</Translation>
@@ -48,6 +60,9 @@
<Translation Include="po/messages-hr.po">
<Code>hr</Code>
</Translation>
+ <Translation Include="po/messages-hy.po">
+ <Code>hy</Code>
+ </Translation>
<Translation Include="po/messages-id.po">
<Code>id</Code>
</Translation>
@@ -66,6 +81,9 @@
<Translation Include="po/messages-nb.po">
<Code>nb</Code>
</Translation>
+ <Translation Include="po/messages-nl.po">
+ <Code>nl</Code>
+ </Translation>
<Translation Include="po/messages-pl.po">
<Code>pl</Code>
</Translation>
@@ -126,11 +144,13 @@
<ItemGroup>
<BinFile Include="$(OutputPath)/*.exe" />
<BinFile Include="$(OutputPath)/*.dll" />
+ <ExtensionFile Include="$(OutputPath)/Extensions/*.dll" />
</ItemGroup>
<!-- Install everything for Pinta -->
<Target Name="Install">
<Copy SourceFiles="@(BinFile)" DestinationFolder="$(InstallPrefix)/lib/pinta" />
+ <Copy SourceFiles="@(ExtensionFile)" DestinationFolder="$(InstallPrefix)/lib/pinta/Extensions" />
<MakeDir Directories="$(InstallPrefix)/bin" />
<Copy SourceFiles="$(OutputPath)/locale/%(Translation.Code)/LC_MESSAGES/pinta.mo" DestinationFolder="$(InstallPrefix)/share/locale/%(Translation.Code)/LC_MESSAGES" />
<Copy SourceFiles="xdg/pinta.1" DestinationFolder="$(InstallPrefix)/share/man/man1" />
diff --git a/Pinta.Resources/AssemblyInfo.cs b/Pinta.Resources/AssemblyInfo.cs
index 3b5711c..8c9ecbe 100644
--- a/Pinta.Resources/AssemblyInfo.cs
+++ b/Pinta.Resources/AssemblyInfo.cs
@@ -17,7 +17,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("0.5.0.0")]
+[assembly: AssemblyVersion("0.6.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta.Tools/BaseBrushTool.cs b/Pinta.Tools/BaseBrushTool.cs
index 4e4ae26..b344bc8 100644
--- a/Pinta.Tools/BaseBrushTool.cs
+++ b/Pinta.Tools/BaseBrushTool.cs
@@ -79,7 +79,7 @@ namespace Pinta.Tools
tb.AppendItem (brush_width_minus);
if (brush_width == null)
- brush_width = new ToolBarComboBox (50, 1, true, "1", "2", "3", "4", "5", "6", "7", "8", "9",
+ brush_width = new ToolBarComboBox (65, 1, true, "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "20", "25", "30", "35",
"40", "45", "50", "55");
@@ -124,6 +124,10 @@ namespace Pinta.Tools
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
{
+ // If we are already drawing, ignore any additional mouse down events
+ if (mouse_button > 0)
+ return;
+
Document doc = PintaCore.Workspace.ActiveDocument;
surface_modified = false;
diff --git a/Pinta.Tools/CloneStampTool.cs b/Pinta.Tools/CloneStampTool.cs
index 180e37c..a674afc 100644
--- a/Pinta.Tools/CloneStampTool.cs
+++ b/Pinta.Tools/CloneStampTool.cs
@@ -68,8 +68,8 @@ namespace Pinta.Tools
if (offset.IsNotSet ())
offset = new Point ((int)point.X - origin.X, (int)point.Y - origin.Y);
- PintaCore.Layers.ToolLayer.Clear ();
- PintaCore.Layers.ToolLayer.Hidden = false;
+ doc.ToolLayer.Clear ();
+ doc.ToolLayer.Hidden = false;
surface_modified = false;
undo_surface = doc.CurrentLayer.Surface.Clone ();
diff --git a/Pinta.Tools/EraserTool.cs b/Pinta.Tools/EraserTool.cs
index e627e42..826b8bd 100644
--- a/Pinta.Tools/EraserTool.cs
+++ b/Pinta.Tools/EraserTool.cs
@@ -44,7 +44,7 @@ namespace Pinta.Tools
#region Properties
public override string Name { get { return Catalog.GetString ("Eraser"); } }
public override string Icon { get { return "Tools.Eraser.png"; } }
- public override string StatusBarText { get { return Catalog.GetString ("Click and drag to erase a portion of the image."); } }
+ public override string StatusBarText { get { return Catalog.GetString ("Left click to erase to transparent, right click to erase to secondary color. "); } }
public override Gdk.Key ShortcutKey { get { return Gdk.Key.E; } }
public override int Priority { get { return 27; } }
#endregion
@@ -77,12 +77,17 @@ namespace Pinta.Tools
g.FillRule = FillRule.EvenOdd;
g.Clip ();
- g.Antialias = Antialias.Subpixel;
+ g.Antialias = UseAntialiasing ? Antialias.Subpixel : Antialias.None;
g.MoveTo (last_point.X, last_point.Y);
g.LineTo (x, y);
-
- g.Operator = Operator.Clear;
+
+ // Right-click is erase to background color, left-click is transparent
+ if (mouse_button == 3)
+ g.Color = PintaCore.Palette.SecondaryColor;
+ else
+ g.Operator = Operator.Clear;
+
g.LineWidth = BrushWidth;
g.LineJoin = LineJoin.Round;
g.LineCap = LineCap.Round;
diff --git a/Pinta.Tools/FloodTool.cs b/Pinta.Tools/FloodTool.cs
index 4181c80..8cb7e3c 100644
--- a/Pinta.Tools/FloodTool.cs
+++ b/Pinta.Tools/FloodTool.cs
@@ -56,6 +56,7 @@ namespace Pinta.Tools
#region Protected Properties
protected bool IsContinguousMode { get { return (bool)mode_button.SelectedItem.Tag; } }
protected float Tolerance { get { return (float)(tolerance_slider.Slider.Value / 100); } }
+ protected virtual bool CalculatePolygonSet { get { return true; } }
protected bool LimitToSelection {
get { return limitToSelection; }
@@ -114,7 +115,7 @@ namespace Pinta.Tools
base.OnMouseDown (canvas, args, point);
- Gdk.Region currentRegion = Gdk.Region.Rectangle (doc.SelectionPath.GetBounds ());
+ Gdk.Region currentRegion = Gdk.Region.Rectangle (doc.GetSelectedBounds (true));
// See if the mouse click is valid
if (!currentRegion.PointIn (pos.X, pos.Y) && limitToSelection) {
@@ -130,18 +131,20 @@ namespace Pinta.Tools
int tol = (int)(Tolerance * Tolerance * 256);
Rectangle boundingBox;
- surface.Flush ();
-
if (IsContinguousMode)
FillStencilFromPoint (surface, stencilBuffer, pos, tol, out boundingBox, currentRegion, limitToSelection);
else
FillStencilByColor (surface, stencilBuffer, surface.GetColorBgra (pos.X, pos.Y), tol, out boundingBox, currentRegion, LimitToSelection);
- surface.MarkDirty ();
stencil = stencilBuffer;
-
- Point[][] polygonSet = stencilBuffer.CreatePolygonSet (boundingBox, 0, 0);
- OnFillRegionComputed (polygonSet);
+ OnFillRegionComputed (stencilBuffer);
+
+ // If a derived tool is only going to use the stencil,
+ // don't waste time building the polygon set
+ if (CalculatePolygonSet) {
+ Point[][] polygonSet = stencilBuffer.CreatePolygonSet (boundingBox, 0, 0);
+ OnFillRegionComputed (polygonSet);
+ }
}
#endregion
@@ -352,7 +355,8 @@ namespace Pinta.Tools
boundingBox = new Rectangle (left, top, right - left + 1, bottom - top + 1);
}
- protected abstract void OnFillRegionComputed (Point[][] polygonSet);
+ protected virtual void OnFillRegionComputed (Point[][] polygonSet) {}
+ protected virtual void OnFillRegionComputed (IBitVector2D stencil) {}
#endregion
}
}
diff --git a/Pinta.Tools/GradientTool.cs b/Pinta.Tools/GradientTool.cs
index 216ff2d..4e1167f 100644
--- a/Pinta.Tools/GradientTool.cs
+++ b/Pinta.Tools/GradientTool.cs
@@ -31,15 +31,6 @@ using Mono.Unix;
namespace Pinta.Tools
{
- public enum eGradientType
- {
- Linear,
- LinearReflected,
- Diamond,
- Radial,
- Conical
- }
-
//[System.ComponentModel.Composition.Export (typeof (BaseTool))]
public class GradientTool : BaseTool
{
@@ -74,10 +65,9 @@ namespace Pinta.Tools
}
public override Gdk.Key ShortcutKey { get { return Gdk.Key.G; } }
- protected override bool ShowAlphaBlendingButton { get { return true; } }
public override int Priority { get { return 23; } }
- #region mouse
+ #region Mouse Handlers
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
{
Document doc = PintaCore.Workspace.ActiveDocument;
@@ -86,7 +76,6 @@ namespace Pinta.Tools
if (tracking)
return;
- base.OnMouseDown (canvas, args, point);
startpoint = point;
tracking = true;
button = args.Event.Button;
@@ -100,7 +89,6 @@ namespace Pinta.Tools
if (!tracking || args.Event.Button != button)
return;
- base.OnMouseUp (canvas, args, point);
tracking = false;
doc.History.PushNewItem (new SimpleHistoryItem (Icon, Name, undo_surface, doc.CurrentLayerIndex));
}
@@ -109,44 +97,24 @@ namespace Pinta.Tools
{
Document doc = PintaCore.Workspace.ActiveDocument;
- base.OnMouseMove (o, args, point);
if (tracking) {
+ GradientRenderer gr = CreateGradientRenderer ();
- UserBlendOps.NormalBlendOp normalBlendOp = new UserBlendOps.NormalBlendOp();
- GradientRenderer gr = null;
- switch (GradientType) {
- case eGradientType.Linear:
- gr = new GradientRenderers.LinearClamped (GradientColorMode == GradientColorMode.Transparency, normalBlendOp);
- break;
- case eGradientType.LinearReflected:
- gr = new GradientRenderers.LinearReflected (GradientColorMode == GradientColorMode.Transparency, normalBlendOp);
- break;
- case eGradientType.Radial:
- gr = new GradientRenderers.Radial (GradientColorMode == GradientColorMode.Transparency, normalBlendOp);
- break;
- case eGradientType.Diamond:
- gr = new GradientRenderers.LinearDiamond (GradientColorMode == GradientColorMode.Transparency, normalBlendOp);
- break;
- case eGradientType.Conical:
- gr = new GradientRenderers.Conical (GradientColorMode == GradientColorMode.Transparency, normalBlendOp);
- break;
- }
- if (button == 3) {//right
+ if (button == 3) { // Right-click
gr.StartColor = PintaCore.Palette.SecondaryColor.ToColorBgra ();
- gr.EndColor = PintaCore.Palette.PrimaryColor.ToColorBgra ();
- }
- else {//1 left
+ gr.EndColor = PintaCore.Palette.PrimaryColor.ToColorBgra ();
+ } else { //1 Left-click
gr.StartColor = PintaCore.Palette.PrimaryColor.ToColorBgra ();
- gr.EndColor = PintaCore.Palette.SecondaryColor.ToColorBgra ();
+ gr.EndColor = PintaCore.Palette.SecondaryColor.ToColorBgra ();
}
- gr.StartPoint = startpoint;
- gr.EndPoint = point;
+ gr.StartPoint = startpoint;
+ gr.EndPoint = point;
gr.AlphaBlending = UseAlphaBlending;
gr.BeforeRender ();
- Gdk.Rectangle selection_bounds = doc.SelectionPath.GetBounds ();
+ Gdk.Rectangle selection_bounds = doc.GetSelectedBounds (true);
ImageSurface scratch_layer = doc.ToolLayer.Surface;
gr.Render (scratch_layer, new Gdk.Rectangle[] { selection_bounds });
@@ -156,17 +124,40 @@ namespace Pinta.Tools
g.Paint ();
}
+ doc.ToolLayer.Clear ();
+
selection_bounds.Inflate (5, 5);
doc.Workspace.Invalidate (selection_bounds);
}
}
+
+ private GradientRenderer CreateGradientRenderer ()
+ {
+ var normalBlendOp = new UserBlendOps.NormalBlendOp ();
+ bool alpha_only = SelectedGradientColorMode == GradientColorMode.Transparency;
+
+ switch (SelectedGradientType) {
+ case GradientType.Linear:
+ return new GradientRenderers.LinearClamped (alpha_only, normalBlendOp);
+ case GradientType.LinearReflected:
+ return new GradientRenderers.LinearReflected (alpha_only, normalBlendOp);
+ case GradientType.Radial:
+ return new GradientRenderers.Radial (alpha_only, normalBlendOp);
+ case GradientType.Diamond:
+ return new GradientRenderers.LinearDiamond (alpha_only, normalBlendOp);
+ case GradientType.Conical:
+ return new GradientRenderers.Conical (alpha_only, normalBlendOp);
+ }
+
+ throw new ArgumentOutOfRangeException ("Unknown gradient type.");
+ }
#endregion
- #region toolbar
+ #region ToolBar
private ToolBarLabel gradient_label;
private ToolBarDropDownButton gradient_button;
- private ToolBarLabel mode_label;
- private ToolBarDropDownButton mode_button;
+ //private ToolBarLabel mode_label;
+ //private ToolBarDropDownButton mode_button;
protected override void OnBuildToolBar (Gtk.Toolbar tb)
{
@@ -180,39 +171,52 @@ namespace Pinta.Tools
if (gradient_button == null) {
gradient_button = new ToolBarDropDownButton ();
- gradient_button.AddItem (Catalog.GetString ("Linear Gradient"), "Toolbar.LinearGradient.png", eGradientType.Linear);
- gradient_button.AddItem (Catalog.GetString ("Linear Reflected Gradient"), "Toolbar.LinearReflectedGradient.png", eGradientType.LinearReflected);
- gradient_button.AddItem (Catalog.GetString ("Linear Diamond Gradient"), "Toolbar.DiamondGradient.png", eGradientType.Diamond);
- gradient_button.AddItem (Catalog.GetString ("Radial Gradient"), "Toolbar.RadialGradient.png", eGradientType.Radial);
- gradient_button.AddItem (Catalog.GetString ("Conical Gradient"), "Toolbar.ConicalGradient.png", eGradientType.Conical);
+ gradient_button.AddItem (Catalog.GetString ("Linear Gradient"), "Toolbar.LinearGradient.png", GradientType.Linear);
+ gradient_button.AddItem (Catalog.GetString ("Linear Reflected Gradient"), "Toolbar.LinearReflectedGradient.png", GradientType.LinearReflected);
+ gradient_button.AddItem (Catalog.GetString ("Linear Diamond Gradient"), "Toolbar.DiamondGradient.png", GradientType.Diamond);
+ gradient_button.AddItem (Catalog.GetString ("Radial Gradient"), "Toolbar.RadialGradient.png", GradientType.Radial);
+ gradient_button.AddItem (Catalog.GetString ("Conical Gradient"), "Toolbar.ConicalGradient.png", GradientType.Conical);
}
tb.AppendItem (gradient_button);
- tb.AppendItem (new Gtk.SeparatorToolItem ());
+ // Hide TransparentMode. The core issue is we can't just paint it on top of the
+ // current layer because it's transparent. Will require significant effort to support.
- if (mode_label == null)
- mode_label = new ToolBarLabel (string.Format (" {0}: ", Catalog.GetString ("Mode")));
+ //tb.AppendItem (new Gtk.SeparatorToolItem ());
- tb.AppendItem (mode_label);
+ //if (mode_label == null)
+ // mode_label = new ToolBarLabel (string.Format (" {0}: ", Catalog.GetString ("Mode")));
- if (mode_button == null) {
- mode_button = new ToolBarDropDownButton ();
+ //tb.AppendItem (mode_label);
- mode_button.AddItem (Catalog.GetString ("Color Mode"), "Toolbar.ColorMode.png", GradientColorMode.Color);
- mode_button.AddItem (Catalog.GetString ("Transparency Mode"), "Toolbar.TransparentMode.png", GradientColorMode.Transparency);
- }
+ //if (mode_button == null) {
+ // mode_button = new ToolBarDropDownButton ();
+
+ // mode_button.AddItem (Catalog.GetString ("Color Mode"), "Toolbar.ColorMode.png", GradientColorMode.Color);
+ // mode_button.AddItem (Catalog.GetString ("Transparency Mode"), "Toolbar.TransparentMode.png", GradientColorMode.Transparency);
+ //}
- tb.AppendItem (mode_button);
+ //tb.AppendItem (mode_button);
}
- public eGradientType GradientType {
- get { return (eGradientType)gradient_button.SelectedItem.Tag; }
+ private GradientType SelectedGradientType {
+ get { return (GradientType)gradient_button.SelectedItem.Tag; }
}
-
- public GradientColorMode GradientColorMode {
- get { return (GradientColorMode)gradient_button.SelectedItem.Tag; }
+
+ private GradientColorMode SelectedGradientColorMode {
+ // get { return (GradientColorMode)mode_button.SelectedItem.Tag; }
+ get { return GradientColorMode.Color; }
}
#endregion
+
+ enum GradientType
+ {
+ Linear,
+ LinearReflected,
+ Diamond,
+ Radial,
+ Conical
+ }
}
}
diff --git a/Pinta.Tools/MoveSelectedTool.cs b/Pinta.Tools/MoveSelectedTool.cs
index 84fff71..7d94de8 100644
--- a/Pinta.Tools/MoveSelectedTool.cs
+++ b/Pinta.Tools/MoveSelectedTool.cs
@@ -56,13 +56,17 @@ namespace Pinta.Tools
#region Mouse Handlers
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
{
+ // If we are already drawing, ignore any additional mouse down events
+ if (is_dragging)
+ return;
+
Document doc = PintaCore.Workspace.ActiveDocument;
origin_offset = point;
is_dragging = true;
- hist = new MovePixelsHistoryItem (Icon, Name);
- hist.TakeSnapshot ();
+ hist = new MovePixelsHistoryItem (Icon, Name, doc);
+ hist.TakeSnapshot (!doc.ShowSelectionLayer);
if (!doc.ShowSelectionLayer) {
// Copy the selection to the temp layer
@@ -130,6 +134,11 @@ namespace Pinta.Tools
}
#endregion
+ protected override void OnCommit ()
+ {
+ PintaCore.Workspace.ActiveDocument.FinishSelection ();
+ }
+
protected override void OnDeactivated ()
{
base.OnDeactivated ();
diff --git a/Pinta.Tools/MoveSelectionTool.cs b/Pinta.Tools/MoveSelectionTool.cs
index ce58ed3..a15001e 100644
--- a/Pinta.Tools/MoveSelectionTool.cs
+++ b/Pinta.Tools/MoveSelectionTool.cs
@@ -56,6 +56,10 @@ namespace Pinta.Tools
#region Mouse Handlers
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
{
+ // If we are already drawing, ignore any additional mouse down events
+ if (is_dragging)
+ return;
+
origin_offset = point;
is_dragging = true;
diff --git a/Pinta.Tools/PaintBucketTool.cs b/Pinta.Tools/PaintBucketTool.cs
index 89db842..36a9ae1 100644
--- a/Pinta.Tools/PaintBucketTool.cs
+++ b/Pinta.Tools/PaintBucketTool.cs
@@ -47,6 +47,7 @@ namespace Pinta.Tools
}
public override Gdk.Key ShortcutKey { get { return Gdk.Key.F; } }
public override int Priority { get { return 21; } }
+ protected override bool CalculatePolygonSet { get { return false; } }
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, PointD point)
{
@@ -57,28 +58,38 @@ namespace Pinta.Tools
base.OnMouseDown (canvas, args, point);
}
-
- protected unsafe override void OnFillRegionComputed (Point[][] polygonSet)
+
+ protected unsafe override void OnFillRegionComputed (IBitVector2D stencil)
{
Document doc = PintaCore.Workspace.ActiveDocument;
+ ImageSurface surf = doc.ToolLayer.Surface;
+ surf.Clear ();
SimpleHistoryItem hist = new SimpleHistoryItem (Icon, Name);
hist.TakeSnapshotOfLayer (doc.CurrentLayer);
- using (var g = doc.CreateClippedContext ()) {
- // Reset FillRule to the default
- g.FillRule = FillRule.Winding;
+ ColorBgra color = fill_color.ToColorBgra ();
+ ColorBgra* dstPtr = (ColorBgra*)surf.DataPtr;
+ int width = surf.Width;
- using (Path poly = g.CreatePolygonPath (polygonSet))
- g.AppendPath (poly);
+ surf.Flush ();
- g.Antialias = Antialias.Subpixel;
+ // Color in any pixel that the stencil says we need to fill
+ for (int x = 0; x < stencil.Width; x++)
+ for (int y = 0; y < stencil.Height; y++)
+ if (stencil.GetUnchecked (x, y))
+ surf.SetColorBgra (dstPtr, width, color, x, y);
- g.Color = fill_color;
- g.Fill ();
+ surf.MarkDirty ();
+
+ // Transfer the temp layer to the real one,
+ // respecting any selection area
+ using (var g = doc.CreateClippedContext ()) {
+ g.SetSource (surf);
+ g.Paint ();
}
- doc.History.PushNewItem (hist);
+ doc.History.PushNewItem (hist);
doc.Workspace.Invalidate ();
}
}
diff --git a/Pinta.Tools/PanTool.cs b/Pinta.Tools/PanTool.cs
index 9d8677a..d3b957d 100644
--- a/Pinta.Tools/PanTool.cs
+++ b/Pinta.Tools/PanTool.cs
@@ -54,6 +54,10 @@ namespace Pinta.Tools
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, PointD point)
{
+ // If we are already panning, ignore any additional mouse down events
+ if (active)
+ return;
+
Document doc = PintaCore.Workspace.ActiveDocument;
// Don't scroll if the whole canvas fits (no scrollbars)
diff --git a/Pinta.Tools/PencilTool.cs b/Pinta.Tools/PencilTool.cs
index ab2f8ae..4cbd00c 100644
--- a/Pinta.Tools/PencilTool.cs
+++ b/Pinta.Tools/PencilTool.cs
@@ -112,8 +112,8 @@ namespace Pinta.Tools
if (first_pixel) {
// Does Cairo really not support a single-pixel-long single-pixel-wide line?
surf.Flush ();
- int shiftedX = (int) (point.X - 0.5);
- int shiftedY = (int) (point.Y - 0.5);
+ int shiftedX = (int)point.X;
+ int shiftedY = (int)point.Y;
ColorBgra source = surf.GetColorBgra (shiftedX, shiftedY);
source = UserBlendOps.NormalBlendOp.ApplyStatic (source, tool_color.ToColorBgra ());
surf.SetColorBgra (source, shiftedX, shiftedY);
diff --git a/Pinta.Tools/Pinta.Tools.csproj b/Pinta.Tools/Pinta.Tools.csproj
index 980f1c8..800cc8b 100644
--- a/Pinta.Tools/Pinta.Tools.csproj
+++ b/Pinta.Tools/Pinta.Tools.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -46,7 +46,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>..\bin\Extensions\</OutputPath>
+ <OutputPath>..\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -93,7 +93,11 @@
<Compile Include="RoundedRectangleTool.cs" />
<Compile Include="SelectTool.cs" />
<Compile Include="ShapeTool.cs" />
- <Compile Include="TextTool.cs" />
+ <Compile Include="TextTool\Position.cs" />
+ <Compile Include="TextTool\TextAlignment.cs" />
+ <Compile Include="TextTool\EditingMode.cs" />
+ <Compile Include="TextTool\TextEngine.cs" />
+ <Compile Include="TextTool\TextTool.cs" />
<Compile Include="CloneStampTool.cs" />
<Compile Include="ZoomTool.cs" />
<Compile Include="Brushes\PaintBrush.cs" />
diff --git a/Pinta.Tools/Properties/AssemblyInfo.cs b/Pinta.Tools/Properties/AssemblyInfo.cs
index 7b65008..f33a298 100644
--- a/Pinta.Tools/Properties/AssemblyInfo.cs
+++ b/Pinta.Tools/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion ("0.5.0.0")]
-[assembly: AssemblyFileVersion ("0.5.0.0")]
+[assembly: AssemblyVersion ("0.6.0.0")]
+[assembly: AssemblyFileVersion ("0.6.0.0")]
diff --git a/Pinta.Tools/RoundedRectangleTool.cs b/Pinta.Tools/RoundedRectangleTool.cs
index 3ab62ae..f2ce3ee 100644
--- a/Pinta.Tools/RoundedRectangleTool.cs
+++ b/Pinta.Tools/RoundedRectangleTool.cs
@@ -92,7 +92,7 @@ namespace Pinta.Tools
tb.AppendItem (radius_minus);
if (radius == null)
- radius = new ToolBarComboBox (50, 2, true, "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
+ radius = new ToolBarComboBox (65, 2, true, "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "20", "25", "30", "35",
"40", "45", "50", "55");
diff --git a/Pinta.Tools/ShapeTool.cs b/Pinta.Tools/ShapeTool.cs
index eefb530..b7d81a2 100644
--- a/Pinta.Tools/ShapeTool.cs
+++ b/Pinta.Tools/ShapeTool.cs
@@ -108,7 +108,7 @@ namespace Pinta.Tools
tb.AppendItem (brush_width_minus);
if (brush_width == null)
- brush_width = new ToolBarComboBox (50, 1, true, "1", "2", "3", "4", "5", "6", "7", "8", "9",
+ brush_width = new ToolBarComboBox (65, 1, true, "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "14", "15", "20", "25", "30", "35",
"40", "45", "50", "55");
@@ -159,6 +159,10 @@ namespace Pinta.Tools
#region Mouse Handlers
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
{
+ // If we are already drawing, ignore any additional mouse down events
+ if (is_drawing)
+ return;
+
Document doc = PintaCore.Workspace.ActiveDocument;
shape_origin = point;
diff --git a/Pinta.Tools/TextTool.cs b/Pinta.Tools/TextTool.cs
deleted file mode 100644
index 525f257..0000000
--- a/Pinta.Tools/TextTool.cs
+++ /dev/null
@@ -1,1715 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////////
-// Paint.NET //
-// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
-// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
-// See license-pdn.txt for full licensing and attribution details. //
-// //
-// Ported to Pinta by: Olivier Dufour <olivier.duff at gmail.com> //
-/////////////////////////////////////////////////////////////////////////////////
-
-using System;
-using System.Collections.Generic;
-using Gdk;
-using Gtk;
-using Pinta.Core;
-using Mono.Unix;
-
-namespace Pinta.Tools
-{
- ////[System.ComponentModel.Composition.Export (typeof (BaseTool))]
- public class TextTool : BaseTool
- {
- private enum EditingMode
- {
- NotEditing,
- EmptyEdit,
- Editing
- }
-
- private enum TextAlignment
- {
- Right,
- Center,
- Left
- }
-
- public override string Name {
- get { return Catalog.GetString ("Text"); }
- }
- public override string Icon {
- get { return "Tools.Text.png"; }
- }
-
- public override string StatusBarText {
- get { return Catalog.GetString ("Left click to place cursor, then type desired text. Text color is primary color."); }
- }
- public override Gdk.Key ShortcutKey { get { return Gdk.Key.T; } }
- public override int Priority { get { return 37; } }
-
- //protected override bool ShowAntialiasingButton {
- // get { return true; }
- //}
-
- //private string statusBarTextFormat = PdnResources.GetString("TextTool.StatusText.TextInfo.Format");
- private Cairo.PointD startMouseXY;
- private Point startClickPoint;
- private bool tracking;
-
- //private MoveNubRenderer moveNub;
- private int ignoreRedraw;
- private EditingMode mode;
- private List<string> lines;
- private int linePos;
- private int textPos;
- private Point clickPoint;
- private IrregularSurface saved;
- private const int cursorInterval = 300;
- private bool pulseEnabled;
- private System.DateTime startTime;
- private bool lastPulseCursorState;
- private bool enableNub = true;
-
- private CompoundHistoryItem currentHA;
-
- private bool controlKeyDown = false;
- private DateTime controlKeyDownTime = DateTime.MinValue;
- private readonly TimeSpan controlKeyDownThreshold = new TimeSpan (0, 0, 0, 0, 400);
-
- /*public override Gdk.Cursor DefaultCursor {
- get {
- return new Gdk.Cursor(;
- }
- }*/
-
- protected override void OnActivated ()
- {
- //PdnBaseForm.RegisterFormHotKey(Gdk.Key.Back, OnBackspaceTyped);
-
- base.OnActivated ();
-
- PintaCore.Palette.PrimaryColorChanged += HandlePintaCorePalettePrimaryColorChanged;
-
- //this.textToolCursor = new Gdk.Cursor (PintaCore.Chrome.DrawingArea.Display, PintaCore.Resources.GetIcon ("Tools.Text.png"), 0, 0);
-
- //this.Cursor = this.textToolCursor;
-
-
- mode = EditingMode.NotEditing;
-
- //font = AppEnvironment.FontInfo.CreateFont();
- //alignment = AppEnvironment.TextAlignment;
-
-
- }
-
- //this.threadPool = new System.Threading.ThreadPool ();
-
-/*this.moveNub = new MoveNubRenderer(this.RendererList);
- this.moveNub.Shape = MoveNubShape.Compass;
- this.moveNub.Size = new SizeF(10, 10);
- this.moveNub.Visible = false;
- this.RendererList.Add(this.moveNub, false);
- */
-
- #region ToolBar
-
- private ToolBarLabel font_label;
- private ToolBarComboBox font_combo;
- private ToolBarComboBox size_combo;
- private ToolBarToggleButton bold_btn;
- private ToolBarToggleButton italic_btn;
- private ToolBarToggleButton underscore_btn;
- private ToolBarToggleButton left_alignment_btn;
- private ToolBarToggleButton center_alignment_btn;
- private ToolBarToggleButton Right_alignment_btn;
- private ToolBarLabel spacer_label;
-
- protected void RenderFont (Gtk.CellLayout layout, Gtk.CellRenderer renderer, Gtk.TreeModel model, Gtk.TreeIter iter)
- {
- string fontName = (string)model.GetValue (iter, 0);
- Gtk.CellRendererText cell = renderer as Gtk.CellRendererText;
- cell.Text = fontName;
- cell.Font = string.Format ("{0} 10", fontName);
- cell.Family = fontName;
- }
-
- protected override void OnBuildToolBar (Gtk.Toolbar tb)
- {
- //TODO
- //fontSmoothing
-
- base.OnBuildToolBar (tb);
-
- if (font_label == null)
- font_label = new ToolBarLabel (string.Format (" {0}: ", Catalog.GetString ("Font")));
-
- tb.AppendItem (font_label);
-
- using (Pango.Context c = PangoHelper.ContextGet ()) {
- List<Pango.FontFamily> fonts = new List<Pango.FontFamily> (c.Families);
-
-
- List<string> entries = new List<string> ();
- fonts.ForEach (f => entries.Add (f.Name));
- entries.Sort ();
-
- //by default Arial!
- int index = entries.IndexOf ("Arial");
- if (index < 0)
- index = 0;
- //FIXME: I put a try to handle a bug when I am debugging on monodevelop there is a an exception
- //this exception do not occure when I put a try catch ;(
- try {
- if (font_combo == null) {
- font_combo = new ToolBarComboBox (150, index, false, entries.ToArray ());
- font_combo.ComboBox.Changed += HandleFontChanged;
- font_combo.ComboBox.SetCellDataFunc (font_combo.CellRendererText, new CellLayoutDataFunc (RenderFont));
- }
-
- tb.AppendItem (font_combo);
-
- if (spacer_label == null)
- spacer_label = new ToolBarLabel (" ");
-
- tb.AppendItem (spacer_label);
-
- //size depend on font and modifier (italic, bold,...)
- Pango.FontFamily fam = fonts.Find (f => f.Name == font_combo.ComboBox.ActiveText);
-
- entries = new List<string> ();
- foreach (int i in GetSizeList (fam.Faces[0])) {
- entries.Add (i.ToString ());
- }
-
- //by default 11!
- index = entries.IndexOf ("11");
- if (index < 0)
- index = 0;
-
- if (size_combo == null) {
- size_combo = new ToolBarComboBox (50, index, true, entries.ToArray ());
-
- size_combo.ComboBox.Changed += HandleSizeChanged;
- (size_combo.ComboBox as Gtk.ComboBoxEntry).Entry.FocusOutEvent += new Gtk.FocusOutEventHandler (HandleFontSizeFocusOut);
- (size_combo.ComboBox as Gtk.ComboBoxEntry).Entry.FocusInEvent += new Gtk.FocusInEventHandler (HandleFontSizeFocusIn);
- }
-
- tb.AppendItem (size_combo);
- } catch (Exception e) {
- Console.WriteLine (e.ToString ());
- }
- }
- tb.AppendItem (new SeparatorToolItem ());
-
- if (bold_btn == null) {
- bold_btn = new ToolBarToggleButton ("Toolbar.Bold.png", Catalog.GetString ("Bold"), Catalog.GetString ("Bold"));
- bold_btn.Toggled += HandleBoldButtonToggled;
- }
-
- tb.AppendItem (bold_btn);
-
- if (italic_btn == null) {
- italic_btn = new ToolBarToggleButton ("Toolbar.Italic.png", Catalog.GetString ("Italic"), Catalog.GetString ("Italic"));
- italic_btn.Toggled += HandleItalicButtonToggled;
- ;
- }
-
- tb.AppendItem (italic_btn);
-
- if (underscore_btn == null) {
- underscore_btn = new ToolBarToggleButton ("Toolbar.Underline.png", Catalog.GetString ("Underline"), Catalog.GetString ("Underline"));
- underscore_btn.Toggled += HandleUnderscoreButtonToggled;
- }
-
- tb.AppendItem (underscore_btn);
-
- tb.AppendItem (new SeparatorToolItem ());
-
- if (left_alignment_btn == null) {
- left_alignment_btn = new ToolBarToggleButton ("Toolbar.LeftAlignment.png", Catalog.GetString ("Left Align"), Catalog.GetString ("Left Align"));
- left_alignment_btn.Active = true;
- left_alignment_btn.Toggled += HandleLeftAlignmentButtonToggled;
- ;
- }
-
- tb.AppendItem (left_alignment_btn);
-
- if (center_alignment_btn == null) {
- center_alignment_btn = new ToolBarToggleButton ("Toolbar.CenterAlignment.png", Catalog.GetString ("Center Align"), Catalog.GetString ("Center Align"));
- center_alignment_btn.Toggled += HandleCenterAlignmentButtonToggled;
- ;
- }
-
- tb.AppendItem (center_alignment_btn);
-
- if (Right_alignment_btn == null) {
- Right_alignment_btn = new ToolBarToggleButton ("Toolbar.RightAlignment.png", Catalog.GetString ("Right Align"), Catalog.GetString ("Right Align"));
- Right_alignment_btn.Toggled += HandleRightAlignmentButtonToggled;
- ;
- }
-
- tb.AppendItem (Right_alignment_btn);
- }
-
- string temp_size;
- void HandleFontSizeFocusIn (object o, FocusInEventArgs args)
- {
- size_combo.ComboBox.Changed -= HandleSizeChanged;
- temp_size = size_combo.ComboBox.ActiveText;
- }
-
- void HandleFontSizeFocusOut (object o, FocusOutEventArgs args)
- {
- string text = size_combo.ComboBox.ActiveText;
- int size;
-
- if (!int.TryParse (text, out size)) {
- (size_combo.ComboBox as Gtk.ComboBoxEntry).Entry.Text = temp_size;
- return;
- }
-
- PintaCore.Chrome.DrawingArea.GrabFocus ();
- if (mode != EditingMode.NotEditing) {
- this.sizes = null;
- RedrawText (true);
- }
- size_combo.ComboBox.Changed += HandleSizeChanged;
- }
-
- void HandleFontChanged (object sender, EventArgs e)
- {
- PintaCore.Chrome.DrawingArea.GrabFocus ();
- UpdateFontSizes ();
- if (mode != EditingMode.NotEditing) {
- this.sizes = null;
- RedrawText (true);
- }
- }
-
- void UpdateFontSizes ()
- {
- List<int> lst;
- string oldval = size_combo.ComboBox.ActiveText;
- ListStore model = (ListStore)size_combo.ComboBox.Model;
- model.Clear ();
- using (Pango.Context c = PangoHelper.ContextGet ()) {
- List<Pango.FontFamily> fonts = new List<Pango.FontFamily> (c.Families);
- Pango.FontFamily fam = fonts.Find (f => f.Name == font_combo.ComboBox.ActiveText);
- lst = GetSizeList (fam.Faces[0]);
- }
- foreach (int i in lst)
- size_combo.ComboBox.AppendText (i.ToString ());
-
- int index = lst.IndexOf (int.Parse (oldval));
- if (index == -1)
- index = 0;
-
- size_combo.ComboBox.Active = index;
- }
-
- void HandleSizeChanged (object sender, EventArgs e)
- {
- PintaCore.Chrome.DrawingArea.GrabFocus ();
- if (mode != EditingMode.NotEditing) {
- this.sizes = null;
- RedrawText (true);
- }
- }
-
- private Pango.FontFamily FontFamily {
- get {
- List<Pango.FontFamily> fonts = new List<Pango.FontFamily> (PintaCore.Chrome.DrawingArea.PangoContext.Families);
- return fonts.Find (f => f.Name == font_combo.ComboBox.ActiveText);
- }
- }
-
-
- private int FontSize {
- get { return int.Parse (size_combo.ComboBox.ActiveText); }
- }
-
- private TextAlignment Alignment {
- get {
- if (Right_alignment_btn.Active)
- return TextAlignment.Right;
- else if (center_alignment_btn.Active)
- return TextAlignment.Center;
- else
- return TextAlignment.Left;
- }
- }
-
- private Cairo.FontSlant FontSlant {
- get {
- if (italic_btn.Active)
- return Cairo.FontSlant.Italic;
- else
- return Cairo.FontSlant.Normal;
- }
- }
-
- private Cairo.FontWeight FontWeight {
- get {
- if (bold_btn.Active)
- return Cairo.FontWeight.Bold;
- else
- return Cairo.FontWeight.Normal;
- }
- }
-
- private string Font {
- get { return font_combo.ComboBox.ActiveText; }
- }
-
- private Cairo.TextExtents TextExtents (Cairo.Context g, string str)
- {
- g.SelectFontFace (font_combo.ComboBox.ActiveText, FontSlant, FontWeight);
- g.SetFontSize (FontSize);
-
- return g.TextExtents (str);
- }
-
- private Cairo.FontExtents FontExtents (Cairo.Context g, string str)
- {
- g.SelectFontFace (font_combo.ComboBox.ActiveText, FontSlant, FontWeight);
- g.SetFontSize (FontSize);
-
- return g.FontExtents;
- }
-
- private int FontHeight {
- get { return StringSize ("a").Height; }
- }
-
-
- void HandlePintaCorePalettePrimaryColorChanged (object sender, EventArgs e)
- {
- if (mode != EditingMode.NotEditing) {
- RedrawText (true);
- }
- }
-
- void HandleLeftAlignmentButtonToggled (object sender, EventArgs e)
- {
- if (left_alignment_btn.Active) {
- Right_alignment_btn.Active = false;
- center_alignment_btn.Active = false;
- } else if (!Right_alignment_btn.Active && !center_alignment_btn.Active) {
- left_alignment_btn.Active = true;
- }
- if (mode != EditingMode.NotEditing) {
- this.sizes = null;
- RedrawText (true);
- }
- }
-
- void HandleCenterAlignmentButtonToggled (object sender, EventArgs e)
- {
- if (center_alignment_btn.Active) {
- Right_alignment_btn.Active = false;
- left_alignment_btn.Active = false;
- } else if (!Right_alignment_btn.Active && !left_alignment_btn.Active) {
- center_alignment_btn.Active = true;
- }
- if (mode != EditingMode.NotEditing) {
- this.sizes = null;
- RedrawText (true);
- }
- }
-
- void HandleRightAlignmentButtonToggled (object sender, EventArgs e)
- {
- if (Right_alignment_btn.Active) {
- center_alignment_btn.Active = false;
- left_alignment_btn.Active = false;
- } else if (!center_alignment_btn.Active && !left_alignment_btn.Active) {
- Right_alignment_btn.Active = true;
- }
- if (mode != EditingMode.NotEditing) {
- this.sizes = null;
- RedrawText (true);
- }
- }
-
-
- void HandleUnderscoreButtonToggled (object sender, EventArgs e)
- {
- if (mode != EditingMode.NotEditing) {
- RedrawText (true);
- }
- }
-
- void HandleItalicButtonToggled (object sender, EventArgs e)
- {
- if (mode != EditingMode.NotEditing) {
- RedrawText (true);
- }
- }
-
- void HandleBoldButtonToggled (object sender, EventArgs e)
- {
- if (mode != EditingMode.NotEditing) {
- RedrawText (true);
- }
- }
-
- unsafe private List<int> GetSizeList (Pango.FontFace fontFace)
- {
- List<int> result = new List<int> ();
- int sizes;
- int nsizes;
- fontFace.ListSizes (out sizes, out nsizes);
- if (nsizes == 0)
- result.AddRange (new int[] { 6, 7, 8, 9, 10, 11, 12, 14, 15, 16,
- 18, 20, 22, 24, 26, 28, 32, 36, 40, 44,
- 48, 54, 60, 66, 72, 80, 88, 96 });
- else {
- for (int i = 0; i < nsizes; i++) {
- result.Add (*(&sizes + 4 * i));
- }
- }
- return result;
- }
-
- #endregion
-
- protected override void OnDeactivated ()
- {
- //PdnBaseForm.UnregisterFormHotKey(Gdk.Key.Back, OnBackspaceTyped);
-
- base.OnDeactivated ();
- PintaCore.Palette.PrimaryColorChanged -= HandlePintaCorePalettePrimaryColorChanged;
-
- switch (mode) {
- case EditingMode.Editing:
- SaveHistoryMemento ();
- break;
-
- case EditingMode.EmptyEdit:
- RedrawText (false);
- break;
-
- case EditingMode.NotEditing:
- break;
- default:
-
- throw new System.ComponentModel.InvalidEnumArgumentException ("Invalid Editing Mode");
- }
-
- if (saved != null) {
- saved.Dispose ();
- saved = null;
- }
-
- StopEditing ();
- //this.threadPool = null;
- }
- /*
- this.RendererList.Remove(this.moveNub);
- this.moveNub.Dispose();
- this.moveNub = null;
-
- if (this.textToolCursor != null)
- {
- this.textToolCursor.Dispose();
- this.textToolCursor = null;
- }
- */
-
- private void StopEditing ()
- {
- PintaCore.Layers.ToolLayer.Clear ();
- PintaCore.Layers.ToolLayer.Hidden = true;
- mode = EditingMode.NotEditing;
- pulseEnabled = false;
- lines = null;
- //this.moveNub.Visible = false;
- }
-
- private void StartEditing ()
- {
- this.linePos = 0;
- this.textPos = 0;
- this.lines = new List<string> ();
- this.sizes = null;
- this.lines.Add (string.Empty);
- this.startTime = DateTime.Now;
- this.mode = EditingMode.EmptyEdit;
- this.pulseEnabled = true;
- PintaCore.Layers.ToolLayer.Hidden = false;
- //UpdateStatusText();
- }
- /*
- private void UpdateStatusText()
- {
- string text;
- ImageResource image;
-
- if (this.tracking)
- {
- text = GetStatusBarXYText();
- image = Image;
- }
- else
- {
- text = PdnResources.GetString("TextTool.StatusText.StartTyping");
- image = null;
- }
-
- SetStatus(image, text);
- }
- */
- private void PerformEnter ()
- {
- string currentLine = (string)this.lines[this.linePos];
-
- if (this.textPos == currentLine.Length) {
- // If we are at the end of a line, insert an empty line at the next line
- this.lines.Insert (this.linePos + 1, string.Empty);
- } else {
- this.lines.Insert (this.linePos + 1, currentLine.Substring (textPos, currentLine.Length - this.textPos));
- this.lines[this.linePos] = ((string)this.lines[this.linePos]).Substring (0, this.textPos);
- }
-
- this.linePos++;
- this.textPos = 0;
- this.sizes = null;
-
- }
-
- private void PerformBackspace ()
- {
- if (textPos == 0 && linePos > 0) {
- int ntp = ((string)lines[linePos - 1]).Length;
-
- lines[linePos - 1] = ((string)lines[linePos - 1]) + ((string)lines[linePos]);
- lines.RemoveAt (linePos);
- linePos--;
- textPos = ntp;
- sizes = null;
- } else if (textPos > 0) {
- string ln = (string)lines[linePos];
-
- // If we are at the end of a line, we don't need to place a compound string
- if (textPos == ln.Length) {
- lines[linePos] = ln.Substring (0, ln.Length - 1);
- } else {
- lines[linePos] = ln.Substring (0, textPos - 1) + ln.Substring (textPos);
- }
-
- textPos--;
- sizes = null;
- }
- }
-
- private void PerformControlBackspace ()
- {
- if (textPos == 0 && linePos > 0) {
- PerformBackspace ();
- } else if (textPos > 0) {
- string currentLine = (string)lines[linePos];
- int ntp = textPos;
-
- if (System.Char.IsLetterOrDigit (currentLine[ntp - 1])) {
- while (ntp > 0 && (System.Char.IsLetterOrDigit (currentLine[ntp - 1]))) {
- ntp--;
- }
- } else if (System.Char.IsWhiteSpace (currentLine[ntp - 1])) {
- while (ntp > 0 && (System.Char.IsWhiteSpace (currentLine[ntp - 1]))) {
- ntp--;
- }
- } else if (System.Char.IsPunctuation (currentLine[ntp - 1])) {
- while (ntp > 0 && (System.Char.IsPunctuation (currentLine[ntp - 1]))) {
- ntp--;
- }
- } else {
- ntp--;
- }
-
- lines[linePos] = currentLine.Substring (0, ntp) + currentLine.Substring (textPos);
- textPos = ntp;
- sizes = null;
- }
- }
-
- private void PerformDelete ()
- {
- // Where are we?!
- if ((linePos == lines.Count - 1) && (textPos == ((string)lines[lines.Count - 1]).Length)) {
- // If the cursor is at the end of the text block
- return;
- } else if (textPos == ((string)lines[linePos]).Length) {
- // End of a line, must merge strings
- lines[linePos] = ((string)lines[linePos]) + ((string)lines[linePos + 1]);
- lines.RemoveAt (linePos + 1);
- } else {
- // Middle of a line somewhere
- lines[linePos] = ((string)lines[linePos]).Substring (0, textPos) + ((string)lines[linePos]).Substring (textPos + 1);
- }
-
- // Check for state change
- if (lines.Count == 1 && ((string)lines[0]) == "") {
- mode = EditingMode.EmptyEdit;
- }
-
- sizes = null;
- }
-
- private void PerformControlDelete ()
- {
- // where are we?!
- if ((linePos == lines.Count - 1) && (textPos == ((string)lines[lines.Count - 1]).Length)) {
- // If the cursor is at the end of the text block
- return;
- } else if (textPos == ((string)lines[linePos]).Length) {
- // End of a line, must merge strings
- lines[linePos] = ((string)lines[linePos]) + ((string)lines[linePos + 1]);
- lines.RemoveAt (linePos + 1);
- } else {
- // Middle of a line somewhere
- int ntp = textPos;
- string currentLine = (string)lines[linePos];
-
- if (System.Char.IsLetterOrDigit (currentLine[ntp])) {
- while (ntp < currentLine.Length && (System.Char.IsLetterOrDigit (currentLine[ntp]))) {
- currentLine = currentLine.Remove (ntp, 1);
- }
- } else if (System.Char.IsWhiteSpace (currentLine[ntp])) {
- while (ntp < currentLine.Length && (System.Char.IsWhiteSpace (currentLine[ntp]))) {
- currentLine = currentLine.Remove (ntp, 1);
- }
- } else if (System.Char.IsPunctuation (currentLine[ntp])) {
- while (ntp < currentLine.Length && (System.Char.IsPunctuation (currentLine[ntp]))) {
- currentLine = currentLine.Remove (ntp, 1);
- }
- } else {
- ntp--;
- }
-
- lines[linePos] = currentLine;
- }
-
- // Check for state change
- if (lines.Count == 1 && ((string)lines[0]) == "") {
- mode = EditingMode.EmptyEdit;
- }
-
- sizes = null;
- }
-
- private void PerformLeft ()
- {
- if (textPos > 0) {
- textPos--;
- } else if (textPos == 0 && linePos > 0) {
- linePos--;
- textPos = ((string)lines[linePos]).Length;
- }
- }
-
- private void PerformControlLeft ()
- {
- if (textPos > 0) {
- int ntp = textPos;
- string currentLine = (string)lines[linePos];
-
- if (System.Char.IsLetterOrDigit (currentLine[ntp - 1])) {
- while (ntp > 0 && (System.Char.IsLetterOrDigit (currentLine[ntp - 1]))) {
- ntp--;
- }
- } else if (System.Char.IsWhiteSpace (currentLine[ntp - 1])) {
- while (ntp > 0 && (System.Char.IsWhiteSpace (currentLine[ntp - 1]))) {
- ntp--;
- }
- } else if (ntp > 0 && System.Char.IsPunctuation (currentLine[ntp - 1])) {
- while (ntp > 0 && System.Char.IsPunctuation (currentLine[ntp - 1])) {
- ntp--;
- }
- } else {
- ntp--;
- }
-
- textPos = ntp;
- } else if (textPos == 0 && linePos > 0) {
- linePos--;
- textPos = ((string)lines[linePos]).Length;
- }
- }
-
- private void PerformRight ()
- {
- if (textPos < ((string)lines[linePos]).Length) {
- textPos++;
- } else if (textPos == ((string)lines[linePos]).Length && linePos < lines.Count - 1) {
- linePos++;
- textPos = 0;
- }
- }
-
- private void PerformControlRight ()
- {
- if (textPos < ((string)lines[linePos]).Length) {
- int ntp = textPos;
- string currentLine = (string)lines[linePos];
-
- if (System.Char.IsLetterOrDigit (currentLine[ntp])) {
- while (ntp < currentLine.Length && (System.Char.IsLetterOrDigit (currentLine[ntp]))) {
- ntp++;
- }
- } else if (System.Char.IsWhiteSpace (currentLine[ntp])) {
- while (ntp < currentLine.Length && (System.Char.IsWhiteSpace (currentLine[ntp]))) {
- ntp++;
- }
- } else if (ntp > 0 && System.Char.IsPunctuation (currentLine[ntp])) {
- while (ntp < currentLine.Length && System.Char.IsPunctuation (currentLine[ntp])) {
- ntp++;
- }
- } else {
- ntp++;
- }
-
- textPos = ntp;
- } else if (textPos == ((string)lines[linePos]).Length && linePos < lines.Count - 1) {
- linePos++;
- textPos = 0;
- }
- }
-
- private void PerformUp ()
- {
- Point p = TextPositionToPoint (new Position (linePos, textPos));
- p.Y -= this.sizes[0].Height;
- //font.Height;
- Position np = PointToTextPosition (p);
- linePos = np.Line;
- textPos = np.Offset;
- }
-
- private void PerformDown ()
- {
- if (linePos == lines.Count - 1) {
- // last line -> don't do squat
- } else {
- Point p = TextPositionToPoint (new Position (linePos, textPos));
- p.Y += this.sizes[0].Height;
- //font.Height;
- Position np = PointToTextPosition (p);
- linePos = np.Line;
- textPos = np.Offset;
- }
- }
-
- private Point GetUpperLeft (Size sz, int line)
- {
- Point p = clickPoint;
- p.Y = (int)(p.Y - (0.5 * sz.Height) + (line * sz.Height));
-
- switch (Alignment) {
- case TextAlignment.Center:
- p.X = (int)(p.X - (0.5) * sz.Width);
- break;
-
- case TextAlignment.Right:
- p.X = (int)(p.X - sz.Width);
- break;
- }
-
- return p;
- }
-
- private Size StringSize (string s)
- {
- // We measure using a 1x1 device context to avoid performance problems that arise otherwise with large images.
- Cairo.ImageSurface surf = PintaCore.Layers.ToolLayer.Surface;
- Cairo.TextExtents te;
- using (Cairo.Context g = new Cairo.Context (surf)) {
- te = TextExtents (g, s);
- }
- return new Size ((int)te.Width, (int)te.Height);
- }
-
- private sealed class Position
- {
- private int line;
- public int Line {
- get { return line; }
-
- set {
- if (value >= 0) {
- line = value;
- } else {
- line = 0;
- }
- }
- }
-
- private int offset;
- public int Offset {
- get { return offset; }
-
- set {
- if (value >= 0) {
- offset = value;
- } else {
- offset = 0;
- }
- }
- }
-
- public Position (int line, int offset)
- {
- this.line = line;
- this.offset = offset;
- }
- }
-
- private void SaveHistoryMemento ()
- {
- pulseEnabled = false;
- RedrawText (false);
-
- if (saved != null) {
- Region hitTest = Region.Rectangle (PintaCore.Layers.SelectionPath.GetBounds ());
- hitTest.Intersect (saved.Region);
-
- if (hitTest.Clipbox.Width != 0 && hitTest.Clipbox.Height != 0) {
- ClippedSurfaceHistoryItem bha = new ClippedSurfaceHistoryItem (Icon, Name, saved, PintaCore.Layers.CurrentLayerIndex);
-
- if (this.currentHA == null) {
- PintaCore.History.PushNewItem (bha);
- } else {
- this.currentHA.Push (bha);
- this.currentHA = null;
- }
- }
-
- hitTest.Dispose ();
- saved.Dispose ();
- saved = null;
- }
- }
-
- private void DrawText (Cairo.ImageSurface dst, string textFont, string text, Point pt, Size measuredSize, bool antiAliasing, Cairo.Color color)
- {
- Rectangle dstRect = new Rectangle (pt, measuredSize);
- //Rectangle dstRectClipped = Rectangle.Intersect(dstRect, ScratchSurface.Bounds);
- /*
- if (dstRectClipped.Width == 0 || dstRectClipped.Height == 0)
- {
- return;
- }
- */
- using (Cairo.ImageSurface surface = new Cairo.ImageSurface (Cairo.Format.Argb32, 8, 8)) {
- using (Cairo.Context context = new Cairo.Context (surface)) {
- context.FillRectangle (new Cairo.Rectangle (0, 0, surface.Width, surface.Height), color);
- }
-
- DrawText (dst, textFont, text, pt, measuredSize, antiAliasing, surface);
- }
- }
-
- unsafe private void DrawText (Cairo.ImageSurface dst, string textFont, string text, Point pt, Size measuredSize, bool antiAliasing, Cairo.ImageSurface brush8x8)
- {
- Point pt2 = pt;
- Size measuredSize2 = measuredSize;
- int offset = FontHeight;
- pt.X -= offset;
- measuredSize.Width += 2 * offset;
- Rectangle dstRect = new Rectangle (pt, measuredSize);
- Rectangle dstRectClipped = Rectangle.Intersect (dstRect, PintaCore.Layers.ToolLayer.Surface.GetBounds ());
- PintaCore.Layers.ToolLayer.Clear ();
-
- if (dstRectClipped.Width == 0 || dstRectClipped.Height == 0) {
- return;
- }
-
- // We only use the first 8,8 of brush
- using (Cairo.Context toolctx = new Cairo.Context (PintaCore.Layers.ToolLayer.Surface)) {
- //toolctx.FillRectangle (new Cairo.Rectangle(0, 0, 800, 600), new Cairo.Color (0, 0, 0));
- toolctx.FillRectangle (dstRect.ToCairoRectangle (), new Cairo.Color (1, 1, 1));
- Cairo.ImageSurface surf = PintaCore.Layers.ToolLayer.Surface;
- //TODO find how create a surface a of a particular area of a bigger surface!
- //for moment work with the whole surface!
- if (measuredSize.Width > 0 && measuredSize.Height > 0) {
- //dstRectClipped
- using (Cairo.Context ctx = new Cairo.Context (PintaCore.Layers.ToolLayer.Surface)) {
- Cairo.TextExtents te = TextExtents (ctx, text);
- //new Cairo.PointD(dstRect.X - dstRectClipped.X + offset, dstRect.Y - dstRectClipped.Y),
- ctx.DrawText (new Cairo.PointD (dstRect.X + offset - te.XBearing, dstRect.Y - te.YBearing), textFont, FontSlant, FontWeight, FontSize, PintaCore.Palette.PrimaryColor, text, antiAliasing);
-
- if (underscore_btn.Active) {
- int lineSize = 1;
- Cairo.FontExtents fe = FontExtents (ctx, text);
- ctx.DrawLine (new Cairo.PointD (pt2.X, dstRect.Bottom + fe.Descent), new Cairo.PointD (dstRect.Right - offset, dstRect.Bottom + fe.Descent), PintaCore.Palette.PrimaryColor, lineSize);
- }
- }
- PintaCore.Workspace.Invalidate ();
- }
-
- // Mask out anything that isn't within the user's clip region (selected region)
- using (Region clip = Region.Rectangle (PintaCore.Layers.SelectionPath.GetBounds ())) {
- clip.Xor (Region.Rectangle (dstRectClipped));
- // invert
- clip.Intersect (Region.Rectangle (new Rectangle (pt, measuredSize)));
- toolctx.FillRegion (clip, new Cairo.Color (1, 1, 1, 1));
- }
-
- int skipX;
-
- if (pt.X < 0) {
- skipX = -pt.X;
- } else {
- skipX = 0;
- }
-
- int xEnd = Math.Min (dst.Width, pt.X + measuredSize.Width);
-
- bool blending = true;
- dst.Flush ();
- //if (dst.IsColumnVisible(pt.X + skipX))
- //{
- for (int y = pt.Y; y < pt.Y + measuredSize.Height; ++y) {
- //if (!dst.IsRowVisible(y))
- //{
- // continue;
- //}
-
- ColorBgra* dstPtr = dst.GetPointAddressUnchecked (pt.X + skipX, y);
- ColorBgra* srcPtr = PintaCore.Layers.ToolLayer.Surface.GetPointAddress (pt.X + skipX, y);
- ColorBgra* brushPtr = brush8x8.GetRowAddressUnchecked (y & 7);
-
- for (int x = pt.X + skipX; x < xEnd; ++x) {
- ColorBgra srcPixel = *srcPtr;
- ColorBgra dstPixel = *dstPtr;
- ColorBgra brushPixel = brushPtr[x & 7];
-
- int alpha = ((255 - srcPixel.R) * brushPixel.A) / 255;
- // we could use srcPixel.R, .G, or .B -- the choice here is arbitrary
- brushPixel.A = (byte)alpha;
-
- // could use R, G, or B -- arbitrary choice
- if (srcPtr->R == 255) {
- // do nothing -- leave dst alone
- } else if (alpha == 255 || !blending) {
- // copy it straight over
- *dstPtr = brushPixel;
- } else {
- // do expensive blending
- *dstPtr = UserBlendOps.NormalBlendOp.ApplyStatic (dstPixel, brushPixel);
- }
-
- ++dstPtr;
- ++srcPtr;
- }
- }
- //}
- dst.MarkDirty ();
- }
- }
-
- /// <summary>
- /// Redraws the Text on the screen
- /// </summary>
- /// <remarks>
- /// assumes that the <b>font</b> and the <b>alignment</b> are already set
- /// </remarks>
- /// <param name="cursorOn"></param>
- private void RedrawText (bool cursorOn)
- {
- Cairo.ImageSurface surf = PintaCore.Layers.CurrentLayer.Surface;
- using (Cairo.Context context = new Cairo.Context (surf)) {
- if (this.ignoreRedraw > 0) {
- return;
- }
-
- if (saved != null) {
- saved.Draw (surf);
- PintaCore.Workspace.Invalidate (saved.Region.Clipbox);
- saved.Dispose ();
- saved = null;
- }
-
- // Save the Space behind the lines
- Rectangle[] rects = new Rectangle[lines.Count + 1];
- Point[] localUls = new Point[lines.Count];
-
- // All Lines
- bool recalcSizes = false;
-
- if (this.sizes == null) {
- recalcSizes = true;
- this.sizes = new Size[lines.Count + 1];
- }
-
- if (recalcSizes) {
- for (int i = 0; i < lines.Count; ++i) {
- this.MeasureText (i);
- }
- }
-
- for (int i = 0; i < lines.Count; ++i) {
- Point upperLeft = GetUpperLeft (sizes[i], i);
- localUls[i] = upperLeft;
- Rectangle rect = new Rectangle (upperLeft, sizes[i]);
- rects[i] = rect;
- }
-
- // The Cursor Line
- string cursorLine = ((string)lines[linePos]).Substring (0, textPos);
- Size cursorLineSize;
- Point cursorUL;
- Rectangle cursorRect;
- bool emptyCursorLineFlag;
-
- if (cursorLine.Length == 0) {
- emptyCursorLineFlag = true;
- Size fullLineSize = sizes[linePos];
- cursorLineSize = new Size (2, FontHeight);
- cursorUL = GetUpperLeft (fullLineSize, linePos);
- cursorRect = new Rectangle (cursorUL, cursorLineSize);
- } else if (cursorLine.Length == ((string)lines[linePos]).Length) {
- emptyCursorLineFlag = false;
- cursorLineSize = sizes[linePos];
- cursorUL = localUls[linePos];
- cursorRect = new Rectangle (cursorUL, cursorLineSize);
- } else {
- emptyCursorLineFlag = false;
- cursorLineSize = StringSize (cursorLine);
- cursorUL = localUls[linePos];
- cursorRect = new Rectangle (cursorUL, cursorLineSize);
- }
-
- rects[lines.Count] = cursorRect;
-
- // Account for overhang on italic or fancy fonts
- int offset = FontHeight;
- for (int i = 0; i < rects.Length; ++i) {
- rects[i].X -= offset;
- rects[i].Width += 2 * offset;
- }
-
- // Set the saved region
- saved = new IrregularSurface (surf, Utility.InflateRectangles (rects, 3));
-
- // Draw the Lines
- this.uls = localUls;
-
- for (int i = 0; i < lines.Count; i++)
- this.RenderText (surf, i);
-
- // Draw the Cursor
- if (cursorOn) {
- using (Cairo.Context toolctx = new Cairo.Context (PintaCore.Layers.ToolLayer.Surface)) {
- if (emptyCursorLineFlag) {
- toolctx.FillRectangle (cursorRect.ToCairoRectangle (), PintaCore.Palette.PrimaryColor);
- } else {
- toolctx.DrawLine (new Cairo.PointD (cursorRect.Right, cursorRect.Top), new Cairo.PointD (cursorRect.Right, cursorRect.Bottom), PintaCore.Palette.PrimaryColor, 1);
- }
- }
- }
-
- //PlaceMoveNub();
- //UpdateStatusText();
- PintaCore.Workspace.Invalidate (saved.Region.Clipbox);
- //Update();
- }
- }
- /*
- private string GetStatusBarXYText()
- {
- string unitsAbbreviationXY;
- string xString;
- string yString;
-
- Document.CoordinatesToStrings(AppWorkspace.Units, this.uls[0].X, this.uls[0].Y, out xString, out yString, out unitsAbbreviationXY);
-
- string statusBarText = string.Format(
- this.statusBarTextFormat,
- xString,
- unitsAbbreviationXY,
- yString,
- unitsAbbreviationXY);
-
- return statusBarText;
- }
- */
- // Only used when measuring via background threads
- private void MeasureText (int lineNumber)
- {
- this.sizes[lineNumber] = StringSize ((string)lines[lineNumber]);
- }
-
- // Only used when rendering via background threads
- private Point[] uls;
-
- private Size[] sizes;
-
- private void RenderText (Cairo.ImageSurface surf, int lineNumber)
- {
- DrawText (surf, this.Font, (string)this.lines[lineNumber], this.uls[lineNumber], this.sizes[lineNumber], UseAlphaBlending, PintaCore.Palette.PrimaryColor);
- }
- /*
- private void PlaceMoveNub()
- {
- if (this.uls != null && this.uls.Length > 0)
- {
- Point pt = this.uls[uls.Length - 1];
- pt.X += this.sizes[uls.Length - 1].Width;
- pt.Y += this.sizes[uls.Length - 1].Height;
- pt.X += (int)(10.0 / DocumentWorkspace.ScaleFactor.Ratio);
- pt.Y += (int)(10.0 / DocumentWorkspace.ScaleFactor.Ratio);
-
- pt.X = (int)Math.Round(Math.Min(this.ra.Surface.Width - this.moveNub.Size.Width, pt.X));
- pt.X = (int)Math.Round(Math.Max(this.moveNub.Size.Width, pt.X));
- pt.Y = (int)Math.Round(Math.Min(this.ra.Surface.Height - this.moveNub.Size.Height, pt.Y));
- pt.Y = (int)Math.Round(Math.Max(this.moveNub.Size.Height, pt.Y));
-
- this.moveNub.Location = pt;
- }
- }
- */
-
- protected override void OnKeyDown (DrawingArea canvas, KeyPressEventArgs args)
- {
- bool flag = OnKeyPress (args.Event.Key, args.Event.State);
- if (flag) {
- args.RetVal = flag;
- return;
- }
-
- switch (args.Event.Key) {
- case /*case Gdk.Key.space:
- if (mode != EditingMode.NotEditing)
- {
- // Prevent pan cursor from flicking to 'hand w/ the X' whenever use types a space in their text
- args.RetVal = true;
- }
- break;
- */Gdk.Key.Control_L:
- case Gdk.Key.Control_R:
- if (!this.controlKeyDown) {
- this.controlKeyDown = true;
- this.controlKeyDownTime = DateTime.Now;
- }
- break;
-
- // Make sure these are not used to scroll the document around
- case Gdk.Key.Home:
- case Gdk.Key.End:
- case Gdk.Key.Next:
- case Gdk.Key.Prior:
- if (this.mode != EditingMode.NotEditing) {
- args.RetVal = OnKeyPress (args.Event.Key, args.Event.State);
- }
- break;
-
- case Gdk.Key.Tab:
- if ((args.Event.State & Gdk.ModifierType.ControlMask) == 0) {
- if (this.mode != EditingMode.NotEditing) {
- args.RetVal = OnKeyPress (args.Event.Key, args.Event.State);
- }
- }
- break;
-
- case Gdk.Key.BackSpace:
- case Gdk.Key.Delete:
- if (this.mode != EditingMode.NotEditing) {
- args.RetVal = OnKeyPress (args.Event.Key, args.Event.State);
- }
- break;
- }
-
- // Ensure text is on screen when they are typing
-
- /*if (this.mode != EditingMode.NotEditing)
- {
- Point p = TextPositionToPoint(new Position(linePos, textPos));
- Point left = TextPositionToPoint(new Position(linePos, 0));
- Rectangle bounds = PintaCore.Chrome.DrawingArea.Allocation;
- bounds.Inflate (-FontHeight, -FontHeight);
-
- if (!bounds.Contains(p) || bounds.Contains(left))
- {
- Point newCenterPt = bounds.Center();
-
- // horizontally off
- if (p.X > bounds.Right)
- {
- newCenterPt.X += p.X - bounds.Right;
- }
- else if (left.X < bounds.Left)
- {
- newCenterPt.X += left.X - bounds.Left;
- }
-
- // vertically off
- if (p.Y > bounds.Bottom)
- {
- newCenterPt.Y += p.Y - bounds.Bottom;
- }
- else if (p.Y < bounds.Top) {
- newCenterPt.Y += p.Y - bounds.Top;
- }
-
- PintaCore.Workspace.RecenterView(newCenterPt.X, newCenterPt.Y);
- }
- }*/
-
- //base.OnKeyDown (e);
- //replace with:
-this.OnKeyPress (canvas, args);
- }
-
- protected override void OnKeyUp (DrawingArea canvas, KeyReleaseEventArgs args)
- {
- switch (args.Event.Key) {
- case Gdk.Key.Control_L:
- case Gdk.Key.Control_R:
- TimeSpan heldDuration = (DateTime.Now - this.controlKeyDownTime);
-
- // If the user taps Ctrl, then we should toggle the visiblity of the moveNub
- if (heldDuration < this.controlKeyDownThreshold) {
- this.enableNub = !this.enableNub;
- }
-
- this.controlKeyDown = false;
- break;
- }
-
- base.OnKeyUp (canvas, args);
- }
-
- protected void OnKeyPress (DrawingArea canvas, KeyPressEventArgs args)
- {
- switch (args.Event.Key) {
- case Gdk.Key.KP_Enter:
- case Gdk.Key.Return:
- if (tracking) {
- args.RetVal = true;
- }
- break;
-
- case Gdk.Key.Escape:
- if (tracking) {
- args.RetVal = true;
- } else {
- if (mode == EditingMode.Editing) {
- SaveHistoryMemento ();
- } else if (mode == EditingMode.EmptyEdit) {
- RedrawText (false);
- }
-
- if (mode != EditingMode.NotEditing) {
- args.RetVal = true;
- StopEditing ();
- }
- }
-
- break;
- }
- bool handled = false;
- if (args.RetVal != null && args.RetVal is bool)
- handled = (bool)args.RetVal;
-
- if (!handled && mode != EditingMode.NotEditing && !tracking) {
- args.RetVal = true;
-
- if (mode == EditingMode.EmptyEdit) {
- mode = EditingMode.Editing;
- CompoundHistoryItem cha = new CompoundHistoryItem (Icon, Name);
- this.currentHA = cha;
- PintaCore.History.PushNewItem (cha);
- }
-
- if ((args.Event.State & ModifierType.ControlMask) == 0 && args.Event.Key != Gdk.Key.Control_L && args.Event.Key != Gdk.Key.Control_R) {
- uint ch = Gdk.Keyval.ToUnicode(args.Event.KeyValue);
-
- if (ch != 0) {
- InsertCharIntoString (ch);
- textPos++;
- RedrawText (true);
- }
- }
- }
-
- //base.OnKeyPress (args.Event.Key, args.Event.State);
- }
-
- protected bool OnKeyPress (Gdk.Key key, Gdk.ModifierType modifier)
- {
- bool keyHandled = true;
-
- if (tracking) {
- keyHandled = false;
- } else if ((modifier & Gdk.ModifierType.Mod1Mask) != 0) {
- // ignore so they can use Alt+#### to type special characters
- } else if (mode != EditingMode.NotEditing) {
- switch (key) {
- case Gdk.Key.BackSpace:
- if ((modifier & Gdk.ModifierType.ControlMask) != 0) {
- PerformControlBackspace ();
- } else {
- PerformBackspace ();
- }
-
- break;
-
- case Gdk.Key.Delete:
- if ((modifier & Gdk.ModifierType.ControlMask) != 0) {
- PerformControlDelete ();
- } else {
- PerformDelete ();
- }
-
- break;
-
- case Gdk.Key.KP_Enter:
- case Gdk.Key.Return:
- PerformEnter ();
- break;
-
- case Gdk.Key.Left:
- if ((modifier & Gdk.ModifierType.ControlMask) != 0) {
- PerformControlLeft ();
- } else {
- PerformLeft ();
- }
-
- break;
-
- case Gdk.Key.Right:
- if ((modifier & Gdk.ModifierType.ControlMask) != 0) {
- PerformControlRight ();
- } else {
- PerformRight ();
- }
-
- break;
-
- case Gdk.Key.Up:
- PerformUp ();
- break;
-
- case Gdk.Key.Down:
- PerformDown ();
- break;
-
- case Gdk.Key.Home:
- if ((modifier & Gdk.ModifierType.ControlMask) != 0) {
- linePos = 0;
- }
-
- textPos = 0;
- break;
-
- case Gdk.Key.End:
- if ((modifier & Gdk.ModifierType.ControlMask) != 0) {
- linePos = lines.Count - 1;
- }
-
- textPos = ((string)lines[linePos]).Length;
- break;
- default:
-
- keyHandled = false;
- break;
- }
-
- this.startTime = DateTime.Now;
-
- if (this.mode != EditingMode.NotEditing && keyHandled) {
- RedrawText (true);
- }
- }
-
- return keyHandled;
- }
-
- private Point TextPositionToPoint (Position p)
- {
- Point pf = new Point (0, 0);
-
- Size sz = StringSize (((string)lines[p.Line]).Substring (0, p.Offset));
- Size fullSz = StringSize ((string)lines[p.Line]);
-
- switch (Alignment) {
- case TextAlignment.Left:
- pf = new Point (clickPoint.X + sz.Width, clickPoint.Y + (sz.Height * p.Line));
- break;
-
- case TextAlignment.Center:
- pf = new Point (clickPoint.X + (sz.Width - (fullSz.Width / 2)), clickPoint.Y + (sz.Height * p.Line));
- break;
-
- case TextAlignment.Right:
- pf = new Point (clickPoint.X + (sz.Width - fullSz.Width), clickPoint.Y + (sz.Height * p.Line));
- break;
- default:
-
- throw new System.ComponentModel.InvalidEnumArgumentException ("Invalid Alignment");
- }
-
- return pf;
- }
-
- private int FindOffsetPosition (float offset, string line, int lno)
- {
- for (int i = 0; i < line.Length; i++) {
- Point pf = TextPositionToPoint (new Position (lno, i));
- float dx = pf.X - clickPoint.X;
-
- if (dx >= offset) {
- return i;
- }
- }
-
- return line.Length;
- }
-
- private Position PointToTextPosition (Point pf)
- {
- int dx = pf.X - clickPoint.X;
- int dy = pf.Y - clickPoint.Y;
- int line = (int)Math.Floor (dy / (float)this.sizes[0].Height);
-
- if (line < 0) {
- line = 0;
- } else if (line >= lines.Count) {
- line = lines.Count - 1;
- }
-
- int offset = FindOffsetPosition (dx, (string)lines[line], line);
- Position p = new Position (line, offset);
-
- if (p.Offset >= ((string)lines[p.Line]).Length) {
- p.Offset = ((string)lines[p.Line]).Length;
- }
-
- return p;
- }
-
- protected override void OnMouseMove (object o, Gtk.MotionNotifyEventArgs args, Cairo.PointD point)
- {
- if (tracking) {
- Cairo.PointD delta = new Cairo.PointD (point.X - startMouseXY.X, point.Y - startMouseXY.Y);
- this.clickPoint = new Point ((int)(this.startClickPoint.X + delta.X), (int)(this.startClickPoint.Y + delta.Y));
- RedrawText (false);
- //UpdateStatusText();
- } else {
- /*bool touchingNub = this.moveNub.IsPointTouching(new Point(e.X, e.Y), false);
-
- if (touchingNub && this.moveNub.Visible)
- {
- this.Cursor = this.handCursor;
- }
- else
- {
- this.Cursor = this.textToolCursor;
- }*/
- }
-
- base.OnMouseMove (o, args, point);
- }
-
- protected override void OnMouseUp (Gtk.DrawingArea canvas, Gtk.ButtonReleaseEventArgs args, Cairo.PointD point)
- {
- if (tracking) {
- Cairo.PointD delta = new Cairo.PointD (point.X - startMouseXY.X, point.Y - startMouseXY.Y);
- this.clickPoint = new Point ((int)(this.startClickPoint.X + delta.X), (int)(this.startClickPoint.Y + delta.Y));
- RedrawText (false);
- tracking = false;
- //UpdateStatusText();
- }
-
- //base.OnMouseUp (e);
- }
-
- protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
- {
- base.OnMouseDown (canvas, args, point);
-
- //bool touchingMoveNub = this.moveNub.IsPointTouching(new Point(e.X, e.Y), false);
-
- //|| touchingMoveNub)) // = right click
- if (this.mode != EditingMode.NotEditing && (args.Event.Button == 3)) {
- this.tracking = true;
- this.startMouseXY = point;
- this.startClickPoint = this.clickPoint;
- //this.Cursor = this.handCursorMouseDown;
- //UpdateStatusText();
- } else if (args.Event.Button == 1) {
- if (saved != null) {
- Rectangle[] rects = saved.Region.GetRectangles ();
- Rectangle bounds = Utility.GetRegionBounds (rects, 0, rects.Length);
- bounds.Inflate (FontHeight, FontHeight);
-
- if (lines != null && bounds.Contains ((int)point.X, (int)point.Y)) {
- Position p = PointToTextPosition (new Point ((int)point.X, (int)(point.Y + (FontHeight / 2))));
- linePos = p.Line;
- textPos = p.Offset;
- RedrawText (true);
- return;
- }
- }
-
- switch (mode) {
- case EditingMode.Editing:
- SaveHistoryMemento ();
- StopEditing ();
- break;
-
- case EditingMode.EmptyEdit:
- RedrawText (false);
- StopEditing ();
- break;
- }
-
- clickPoint = new Point ((int)point.X, (int)point.Y);
- StartEditing ();
- RedrawText (true);
- }
- }
-
- /*protected override void OnPulse()
- {
- base.OnPulse();
-
- if (!pulseEnabled)
- {
- return;
- }
-
- TimeSpan ts = (DateTime.Now - startTime);
- long ms = Utility.TicksToMs(ts.Ticks);
-
- bool pulseCursorState;
-
- if (0 == ((ms / cursorInterval) % 2))
- {
- pulseCursorState = true;
- }
- else
- {
- pulseCursorState = false;
- }
-
- pulseCursorState &= this.Focused;
-
- if (IsFormActive)
- {
- pulseCursorState &= ((ModifierKeys & Gdk.Key.Control) == 0);
- }
-
- if (pulseCursorState != lastPulseCursorState)
- {
- RedrawText(pulseCursorState);
- lastPulseCursorState = pulseCursorState;
- }
-
- if (IsFormActive && (ModifierKeys & Gdk.Key.Control) != 0)
- {
- // hide the nub while Ctrl is held down
- this.moveNub.Visible = false;
- }
- else
- {
- this.moveNub.Visible = true;
- }
-
- // don't show the nub while the user is moving the text around
- this.moveNub.Visible &= !tracking;
-
- // don't show the nub when the user has tapped Ctrl
- this.moveNub.Visible &= this.enableNub;
-
- // Oscillate between 25% and 100% alpha over a period of 2 seconds
- // Alpha value of 100% is sustained for a large duration of this period
- const int period = 10000 * 2000; // 10000 ticks per ms, 2000ms per second
- long tick = ts.Ticks % period;
- double sin = Math.Sin(((double)tick / (double)period) * (2.0 * Math.PI));
- // sin is [-1, +1]
-
- sin = Math.Min(0.5, sin);
- // sin is [-1, +0.5]
-
- sin += 1.0;
- // sin is [0, 1.5]
-
- sin /= 2.0;
- // sin is [0, 0.75]
-
- sin += 0.25;
- // sin is [0.25, 1]
-
- if (this.moveNub != null)
- {
- int newAlpha = (int)(sin * 255.0);
- this.moveNub.Alpha = newAlpha;
- }
-
- PlaceMoveNub();
- }
-
- protected override void OnPasteQuery(IDataObject data, out bool canHandle)
- {
- base.OnPasteQuery(data, out canHandle);
-
- if (data.GetDataPresent(DataFormats.StringFormat, true) &&
- this.Active &&
- this.mode != EditingMode.NotEditing)
- {
- canHandle = true;
- }
- }
-
- protected override void OnPaste(IDataObject data, out bool handled)
- {
- base.OnPaste (data, out handled);
-
- if (data.GetDataPresent(DataFormats.StringFormat, true) &&
- this.Active &&
- this.mode != EditingMode.NotEditing)
- {
- ++this.ignoreRedraw;
- string text = (string)data.GetData(DataFormats.StringFormat, true);
-
- foreach (char c in text)
- {
- if (c == '\n')
- {
- this.PerformEnter();
- }
- else
- {
- this.PerformKeyPress(new KeyPressEventArgs(c));
- }
- }
-
- handled = true;
- --this.ignoreRedraw;
-
- this.RedrawText(false);
- }
- }*/
-
- private void InsertCharIntoString (uint c)
- {
- byte[] bytes = { (byte) c, (byte) (c >> 8), (byte) (c >> 16), (byte) (c >> 24) };
- string unicodeChar = System.Text.Encoding.UTF32.GetString (bytes);
-
- lines[linePos] = ((string)lines[linePos]).Insert (textPos, unicodeChar);
- this.sizes = null;
- }
-
- }
- /*public TextTool(DocumentWorkspace documentWorkspace)
- : base(documentWorkspace,
- ImageResource.Get("Icons.TextToolIcon.png"),
- PdnResources.GetString("TextTool.Name"),
- PdnResources.GetString("TextTool.HelpText"),
- 't',
- false,
- ToolBarConfigItems.Brush | ToolBarConfigItems.Text | ToolBarConfigItems.AlphaBlending | ToolBarConfigItems.Antialiasing)
- {
- }*/
-}
diff --git a/Pinta.Core/Effects/ColorTransferMode.cs b/Pinta.Tools/TextTool/EditingMode.cs
similarity index 56%
copy from Pinta.Core/Effects/ColorTransferMode.cs
copy to Pinta.Tools/TextTool/EditingMode.cs
index aaab696..dd32933 100644
--- a/Pinta.Core/Effects/ColorTransferMode.cs
+++ b/Pinta.Tools/TextTool/EditingMode.cs
@@ -1,17 +1,20 @@
-/////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////
// Paint.NET //
// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
// See license-pdn.txt for full licensing and attribution details. //
+// //
+// Ported to Pinta by: Olivier Dufour <olivier.duff at gmail.com> //
/////////////////////////////////////////////////////////////////////////////////
using System;
-namespace Pinta.Core
+namespace Pinta.Tools
{
- public enum ColorTransferMode
- {
- Rgb,
- Luminosity
- }
-}
\ No newline at end of file
+ enum EditingMode
+ {
+ NotEditing,
+ EmptyEdit,
+ Editing
+ }
+}
diff --git a/Pinta.Tools/TextTool/Position.cs b/Pinta.Tools/TextTool/Position.cs
new file mode 100644
index 0000000..7c27102
--- /dev/null
+++ b/Pinta.Tools/TextTool/Position.cs
@@ -0,0 +1,35 @@
+/////////////////////////////////////////////////////////////////////////////////
+// Paint.NET //
+// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
+// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
+// See license-pdn.txt for full licensing and attribution details. //
+// //
+// Ported to Pinta by: Olivier Dufour <olivier.duff at gmail.com> //
+/////////////////////////////////////////////////////////////////////////////////
+
+using System;
+
+namespace Pinta.Tools
+{
+ sealed class Position
+ {
+ private int line;
+ private int offset;
+
+ public Position (int line, int offset)
+ {
+ this.line = line;
+ this.offset = offset;
+ }
+
+ public int Line {
+ get { return line; }
+ set { line = Math.Max (value, 0); }
+ }
+
+ public int Offset {
+ get { return offset; }
+ set { offset = Math.Max (value, 0); }
+ }
+ }
+}
diff --git a/Pinta.Core/Effects/ColorTransferMode.cs b/Pinta.Tools/TextTool/TextAlignment.cs
similarity index 56%
copy from Pinta.Core/Effects/ColorTransferMode.cs
copy to Pinta.Tools/TextTool/TextAlignment.cs
index aaab696..d3f2a18 100644
--- a/Pinta.Core/Effects/ColorTransferMode.cs
+++ b/Pinta.Tools/TextTool/TextAlignment.cs
@@ -1,17 +1,20 @@
-/////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////
// Paint.NET //
// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
// See license-pdn.txt for full licensing and attribution details. //
+// //
+// Ported to Pinta by: Olivier Dufour <olivier.duff at gmail.com> //
/////////////////////////////////////////////////////////////////////////////////
using System;
-namespace Pinta.Core
+namespace Pinta.Tools
{
- public enum ColorTransferMode
- {
- Rgb,
- Luminosity
- }
-}
\ No newline at end of file
+ enum TextAlignment
+ {
+ Right,
+ Center,
+ Left
+ }
+}
diff --git a/Pinta.Tools/TextTool/TextEngine.cs b/Pinta.Tools/TextTool/TextEngine.cs
new file mode 100644
index 0000000..b380da2
--- /dev/null
+++ b/Pinta.Tools/TextTool/TextEngine.cs
@@ -0,0 +1,426 @@
+/////////////////////////////////////////////////////////////////////////////////
+// Paint.NET //
+// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
+// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
+// See license-pdn.txt for full licensing and attribution details. //
+// //
+// Ported to Pinta by: Olivier Dufour <olivier.duff at gmail.com> //
+// Jonathan Pobst <monkey at jpobst.com> //
+/////////////////////////////////////////////////////////////////////////////////
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Gdk;
+using Pinta.Core;
+
+namespace Pinta.Tools
+{
+ class TextEngine
+ {
+ private Point origin;
+ private Pango.Layout layout;
+
+ private List<string> lines;
+ private int linePos;
+ private int textPos;
+ bool underline;
+
+ public TextEngine ()
+ {
+ lines = new List<string> ();
+
+ layout = new Pango.Layout (PintaCore.Chrome.DrawingArea.PangoContext);
+ }
+
+ #region Public Properties
+ public Position CurrentPosition {
+ get { return new Position (linePos, textPos); }
+ }
+
+ public EditingMode EditMode {
+ get {
+ if (lines.Count == 1 && lines[0] == string.Empty)
+ return EditingMode.EmptyEdit;
+
+ return EditingMode.Editing;
+ }
+ }
+
+ public int FontHeight { get { return GetCursorLocation ().Height; } }
+ public Pango.Layout Layout { get { return layout; } }
+ public int LineCount { get { return lines.Count; } }
+
+ public Point Origin {
+ get { return origin; }
+ set { origin = value; }
+ }
+ #endregion
+
+ #region Public Methods
+ public void Clear ()
+ {
+ lines.Clear ();
+ lines.Add (string.Empty);
+
+ linePos = 0;
+ textPos = 0;
+ origin = Point.Zero;
+
+ Recalculate ();
+ }
+
+ public Rectangle GetCursorLocation ()
+ {
+ Pango.Rectangle weak, strong;
+
+ int index = PositionToIndex (CurrentPosition);
+
+ layout.GetCursorPos (index, out strong, out weak);
+
+ int x = Pango.Units.ToPixels (strong.X) + origin.X;
+ int y = Pango.Units.ToPixels (strong.Y) + origin.Y;
+ int w = Pango.Units.ToPixels (strong.Width);
+ int h = Pango.Units.ToPixels (strong.Height);
+
+ return new Rectangle (x, y, w, h);
+ }
+
+ public Rectangle GetLayoutBounds ()
+ {
+ Pango.Rectangle ink, logical;
+ layout.GetPixelExtents (out ink, out logical);
+
+ Rectangle r = new Rectangle (ink.X + origin.X, ink.Y + origin.Y, ink.Width, ink.Height);
+ return r;
+ }
+
+ public Position PointToTextPosition (Point point)
+ {
+ int index, trailing;
+ int x = Pango.Units.FromPixels (point.X - origin.X);
+ int y = Pango.Units.FromPixels (point.Y - origin.Y);
+
+ layout.XyToIndex (x, y, out index, out trailing);
+
+ return IndexToPosition (index + trailing);
+ }
+
+ public override string ToString ()
+ {
+ StringBuilder sb = new StringBuilder ();
+
+ foreach (string s in lines)
+ sb.AppendLine (s);
+
+ return sb.ToString ();
+ }
+
+ public void SetAlignment (TextAlignment alignment)
+ {
+ switch (alignment) {
+ case TextAlignment.Right:
+ layout.Alignment = Pango.Alignment.Right;
+ break;
+ case TextAlignment.Center:
+ layout.Alignment = Pango.Alignment.Center;
+ break;
+ case TextAlignment.Left:
+ layout.Alignment = Pango.Alignment.Left;
+ break;
+ }
+ }
+
+ public void SetCursorPosition (Position position)
+ {
+ linePos = position.Line;
+ textPos = position.Offset;
+ }
+
+ public void SetFont (string face, int size, bool bold, bool italic, bool underline)
+ {
+ var font = Pango.FontDescription.FromString (string.Format ("{0} {1}", face, size));
+
+ font.Weight = bold ? Pango.Weight.Bold : Pango.Weight.Normal;
+ font.Style = italic ? Pango.Style.Italic : Pango.Style.Normal;
+
+ layout.FontDescription = font;
+
+ this.underline = underline;
+ Recalculate ();
+ }
+
+ public Point TextPositionToPoint (Position p)
+ {
+ int index = PositionToIndex (p);
+
+ var rect = layout.IndexToPos (index);
+
+ int x = Pango.Units.ToPixels (rect.X) + origin.X;
+ int y = Pango.Units.ToPixels (rect.Y) + origin.Y;
+
+ return new Point (x, y);
+ }
+
+ #endregion
+
+ #region Key Handlers
+ public void InsertCharIntoString (uint c)
+ {
+ byte[] bytes = { (byte)c, (byte)(c >> 8), (byte)(c >> 16), (byte)(c >> 24) };
+ string unicodeChar = System.Text.Encoding.UTF32.GetString (bytes);
+
+ lines[linePos] = lines[linePos].Insert (textPos, unicodeChar);
+ textPos++;
+ Recalculate ();
+ }
+
+ public void PerformEnter ()
+ {
+ string currentLine = lines[linePos];
+
+ if (textPos == currentLine.Length) {
+ // If we are at the end of a line, insert an empty line at the next line
+ lines.Insert (linePos + 1, string.Empty);
+ } else {
+ lines.Insert (linePos + 1, currentLine.Substring (textPos, currentLine.Length - textPos));
+ lines[linePos] = lines[linePos].Substring (0, textPos);
+ }
+
+ linePos++;
+ textPos = 0;
+ Recalculate ();
+ }
+
+ public void PerformBackspace ()
+ {
+ // We're at the beginning of a line and there's
+ // a line above us, go to the end of the prior line
+ if (textPos == 0 && linePos > 0) {
+ int ntp = lines[linePos - 1].Length;
+
+ lines[linePos - 1] = lines[linePos - 1] + lines[linePos];
+ lines.RemoveAt (linePos);
+ linePos--;
+ textPos = ntp;
+ Recalculate ();
+ } else if (textPos > 0) {
+ // We're in the middle of a line, delete the previous character
+ string ln = lines[linePos];
+
+ // If we are at the end of a line, we don't need to place a compound string
+ if (textPos == ln.Length)
+ lines[linePos] = ln.Substring (0, ln.Length - 1);
+ else
+ lines[linePos] = ln.Substring (0, textPos - 1) + ln.Substring (textPos);
+
+ textPos--;
+ Recalculate ();
+ }
+ }
+
+ public void PerformDelete ()
+ {
+ // Where are we?!
+ if ((linePos == lines.Count - 1) && (textPos == lines[lines.Count - 1].Length)) {
+ // The cursor is at the end of the text block
+ return;
+ } else if (textPos == lines[linePos].Length) {
+ // End of a line, must merge strings
+ lines[linePos] = lines[linePos] + lines[linePos + 1];
+ lines.RemoveAt (linePos + 1);
+ } else {
+ // Middle of a line somewhere
+ lines[linePos] = lines[linePos].Substring (0, textPos) + (lines[linePos]).Substring (textPos + 1);
+ }
+
+ Recalculate ();
+ }
+
+ public void PerformLeft (bool control)
+ {
+ if (control) {
+ PerformControlLeft ();
+ return;
+ }
+
+ // Move caret to the left, or to the previous line
+ if (textPos > 0)
+ textPos--;
+ else if (textPos == 0 && linePos > 0) {
+ linePos--;
+ textPos = lines[linePos].Length;
+ }
+ }
+
+ public void PerformControlLeft ()
+ {
+ // Move caret to the left to the beginning of the word/space/etc.
+ if (textPos > 0) {
+ int ntp = textPos;
+ string currentLine = lines[linePos];
+
+ if (System.Char.IsLetterOrDigit (currentLine[ntp - 1])) {
+ while (ntp > 0 && (System.Char.IsLetterOrDigit (currentLine[ntp - 1])))
+ ntp--;
+
+ } else if (System.Char.IsWhiteSpace (currentLine[ntp - 1])) {
+ while (ntp > 0 && (System.Char.IsWhiteSpace (currentLine[ntp - 1])))
+ ntp--;
+
+ } else if (ntp > 0 && System.Char.IsPunctuation (currentLine[ntp - 1])) {
+ while (ntp > 0 && System.Char.IsPunctuation (currentLine[ntp - 1]))
+ ntp--;
+
+ } else {
+ ntp--;
+ }
+
+ textPos = ntp;
+ } else if (textPos == 0 && linePos > 0) {
+ linePos--;
+ textPos = lines[linePos].Length;
+ }
+ }
+
+ public void PerformRight (bool control)
+ {
+ if (control) {
+ PerformControlRight ();
+ return;
+ }
+
+ // Move caret to the right, or to the next line
+ if (textPos < lines[linePos].Length) {
+ textPos++;
+ } else if (textPos == lines[linePos].Length && linePos < lines.Count - 1) {
+ linePos++;
+ textPos = 0;
+ }
+ }
+
+ public void PerformControlRight ()
+ {
+ // Move caret to the right to the end of the word/space/etc.
+ if (textPos < lines[linePos].Length) {
+ int ntp = textPos;
+ string currentLine = lines[linePos];
+
+ if (System.Char.IsLetterOrDigit (currentLine[ntp])) {
+ while (ntp < currentLine.Length && (System.Char.IsLetterOrDigit (currentLine[ntp])))
+ ntp++;
+
+ } else if (System.Char.IsWhiteSpace (currentLine[ntp])) {
+ while (ntp < currentLine.Length && (System.Char.IsWhiteSpace (currentLine[ntp])))
+ ntp++;
+
+ } else if (ntp > 0 && System.Char.IsPunctuation (currentLine[ntp])) {
+ while (ntp < currentLine.Length && System.Char.IsPunctuation (currentLine[ntp]))
+ ntp++;
+
+ } else {
+ ntp++;
+ }
+
+ textPos = ntp;
+ } else if (textPos == lines[linePos].Length && linePos < lines.Count - 1) {
+ linePos++;
+ textPos = 0;
+ }
+ }
+
+ public void PerformHome (bool control)
+ {
+ // For Ctrl-Home, we go to the top line
+ if (control)
+ linePos = 0;
+
+ // Go to the beginning of the line
+ textPos = 0;
+ }
+
+ public void PerformEnd (bool control)
+ {
+ // For Ctrl-End, we go to the last line
+ if (control)
+ linePos = lines.Count - 1;
+
+ // Go to the end of the line
+ textPos = lines[linePos].Length;
+ }
+
+ public void PerformUp ()
+ {
+ // Move to the letter above this one
+ Point point = TextPositionToPoint (CurrentPosition);
+
+ point.Y -= FontHeight;
+
+ Position pos = PointToTextPosition (point);
+ SetCursorPosition (pos);
+ }
+
+ public void PerformDown ()
+ {
+ if (CurrentPosition.Line == LineCount - 1) {
+ // Last line -> don't do squat
+ } else {
+ // Move to the letter below this one
+ Point point = TextPositionToPoint (CurrentPosition);
+
+ point.Y += FontHeight;
+
+ Position pos = PointToTextPosition (point);
+ SetCursorPosition (pos);
+ }
+ }
+ #endregion
+
+ #region Private Methods
+ private Position IndexToPosition (int index)
+ {
+ int current = 0;
+ int line = 0;
+ int offset = 0;
+
+ foreach (string s in lines) {
+ // It's past this line, move along
+ if (current + s.Length < index) {
+ current += s.Length + 1;
+ line++;
+ continue;
+ }
+
+ // It's in this line
+ offset = index - current;
+ return new Position (line, offset);
+ }
+
+ // It's below all of our lines, return the end of the last line
+ return new Position (lines.Count - 1, lines[lines.Count - 1].Length);
+ }
+
+ private int PositionToIndex (Position p)
+ {
+ int index = 0;
+
+ for (int i = 0; i < p.Line; i++)
+ index += lines[i].Length + 1;
+
+ index += p.Offset;
+
+ return index;
+ }
+
+ private void Recalculate ()
+ {
+ string markup = ToString ();
+
+ if (underline)
+ markup = string.Format ("<u>{0}</u>", markup);
+
+ layout.SetMarkup (markup);
+ }
+ #endregion
+ }
+}
diff --git a/Pinta.Tools/TextTool/TextTool.cs b/Pinta.Tools/TextTool/TextTool.cs
new file mode 100644
index 0000000..6c889f7
--- /dev/null
+++ b/Pinta.Tools/TextTool/TextTool.cs
@@ -0,0 +1,604 @@
+/////////////////////////////////////////////////////////////////////////////////
+// Paint.NET //
+// Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
+// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
+// See license-pdn.txt for full licensing and attribution details. //
+// //
+// Ported to Pinta by: Olivier Dufour <olivier.duff at gmail.com> //
+// Jonathan Pobst <monkey at jpobst.com> //
+/////////////////////////////////////////////////////////////////////////////////
+
+using System;
+using System.Collections.Generic;
+using Gdk;
+using Gtk;
+using Mono.Unix;
+using Pinta.Core;
+
+namespace Pinta.Tools
+{
+ //[System.ComponentModel.Composition.Export (typeof (BaseTool))]
+ public class TextTool : BaseTool
+ {
+ // Variables for dragging
+ private Cairo.PointD startMouseXY;
+ private Point startClickPoint;
+ private bool tracking;
+ private Gdk.Cursor cursor_hand;
+
+ private Point clickPoint;
+ private bool is_editing;
+ private Rectangle old_bounds = Rectangle.Zero;
+
+ private TextEngine engine;
+
+ public override string Name { get { return Catalog.GetString ("Text"); } }
+ public override string Icon { get { return "Tools.Text.png"; } }
+ public override Gdk.Key ShortcutKey { get { return Gdk.Key.T; } }
+ public override int Priority { get { return 37; } }
+
+ public override string StatusBarText {
+ get { return Catalog.GetString ("Left click to place cursor, then type desired text. Text color is primary color."); }
+ }
+
+ #region Constructor
+ public TextTool ()
+ {
+ cursor_hand = new Gdk.Cursor (PintaCore.Chrome.DrawingArea.Display, PintaCore.Resources.GetIcon ("Tools.Pan.png"), 0, 0);
+ engine = new TextEngine ();
+ }
+ #endregion
+
+ #region ToolBar
+ private ToolBarLabel font_label;
+ private ToolBarComboBox font_combo;
+ private ToolBarComboBox size_combo;
+ private ToolBarToggleButton bold_btn;
+ private ToolBarToggleButton italic_btn;
+ private ToolBarToggleButton underscore_btn;
+ private ToolBarToggleButton left_alignment_btn;
+ private ToolBarToggleButton center_alignment_btn;
+ private ToolBarToggleButton Right_alignment_btn;
+ private ToolBarLabel spacer_label;
+
+ protected void RenderFont (Gtk.CellLayout layout, Gtk.CellRenderer renderer, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ string fontName = (string)model.GetValue (iter, 0);
+ Gtk.CellRendererText cell = renderer as Gtk.CellRendererText;
+ cell.Text = fontName;
+ cell.Font = string.Format ("{0} 10", fontName);
+ cell.Family = fontName;
+ }
+
+ protected override void OnBuildToolBar (Gtk.Toolbar tb)
+ {
+ base.OnBuildToolBar (tb);
+
+ if (font_label == null)
+ font_label = new ToolBarLabel (string.Format (" {0}: ", Catalog.GetString ("Font")));
+
+ tb.AppendItem (font_label);
+
+ if (font_combo == null) {
+ var fonts = PintaCore.System.Fonts.GetInstalledFonts ();
+ fonts.Sort ();
+
+ // Default to Arial or first in list
+ int index = Math.Max (fonts.IndexOf ("Arial"), 0);
+
+ font_combo = new ToolBarComboBox (150, index, false, fonts.ToArray ());
+ font_combo.ComboBox.Changed += HandleFontChanged;
+ font_combo.ComboBox.SetCellDataFunc (font_combo.CellRendererText, new CellLayoutDataFunc (RenderFont));
+ }
+
+ tb.AppendItem (font_combo);
+
+ if (spacer_label == null)
+ spacer_label = new ToolBarLabel (" ");
+
+ tb.AppendItem (spacer_label);
+
+ if (size_combo == null) {
+ size_combo = new ToolBarComboBox (65, 0, true);
+
+ size_combo.ComboBox.Changed += HandleSizeChanged;
+ (size_combo.ComboBox as Gtk.ComboBoxEntry).Entry.FocusOutEvent += new Gtk.FocusOutEventHandler (HandleFontSizeFocusOut);
+ (size_combo.ComboBox as Gtk.ComboBoxEntry).Entry.FocusInEvent += new Gtk.FocusInEventHandler (HandleFontSizeFocusIn);
+ }
+
+ tb.AppendItem (size_combo);
+
+ tb.AppendItem (new SeparatorToolItem ());
+
+ if (bold_btn == null) {
+ bold_btn = new ToolBarToggleButton ("Toolbar.Bold.png", Catalog.GetString ("Bold"), Catalog.GetString ("Bold"));
+ bold_btn.Toggled += HandleBoldButtonToggled;
+ }
+
+ tb.AppendItem (bold_btn);
+
+ if (italic_btn == null) {
+ italic_btn = new ToolBarToggleButton ("Toolbar.Italic.png", Catalog.GetString ("Italic"), Catalog.GetString ("Italic"));
+ italic_btn.Toggled += HandleItalicButtonToggled;
+ }
+
+ tb.AppendItem (italic_btn);
+
+ if (underscore_btn == null) {
+ underscore_btn = new ToolBarToggleButton ("Toolbar.Underline.png", Catalog.GetString ("Underline"), Catalog.GetString ("Underline"));
+ underscore_btn.Toggled += HandleUnderscoreButtonToggled;
+ }
+
+ tb.AppendItem (underscore_btn);
+
+ tb.AppendItem (new SeparatorToolItem ());
+
+ if (left_alignment_btn == null) {
+ left_alignment_btn = new ToolBarToggleButton ("Toolbar.LeftAlignment.png", Catalog.GetString ("Left Align"), Catalog.GetString ("Left Align"));
+ left_alignment_btn.Active = true;
+ left_alignment_btn.Toggled += HandleLeftAlignmentButtonToggled;
+ }
+
+ tb.AppendItem (left_alignment_btn);
+
+ if (center_alignment_btn == null) {
+ center_alignment_btn = new ToolBarToggleButton ("Toolbar.CenterAlignment.png", Catalog.GetString ("Center Align"), Catalog.GetString ("Center Align"));
+ center_alignment_btn.Toggled += HandleCenterAlignmentButtonToggled;
+ }
+
+ tb.AppendItem (center_alignment_btn);
+
+ if (Right_alignment_btn == null) {
+ Right_alignment_btn = new ToolBarToggleButton ("Toolbar.RightAlignment.png", Catalog.GetString ("Right Align"), Catalog.GetString ("Right Align"));
+ Right_alignment_btn.Toggled += HandleRightAlignmentButtonToggled;
+ }
+
+ tb.AppendItem (Right_alignment_btn);
+
+ UpdateFontSizes ();
+ }
+
+ string temp_size;
+
+ private void HandleFontSizeFocusIn (object o, FocusInEventArgs args)
+ {
+ size_combo.ComboBox.Changed -= HandleSizeChanged;
+ temp_size = size_combo.ComboBox.ActiveText;
+ }
+
+ private void HandleFontSizeFocusOut (object o, FocusOutEventArgs args)
+ {
+ string text = size_combo.ComboBox.ActiveText;
+ int size;
+
+ if (!int.TryParse (text, out size)) {
+ (size_combo.ComboBox as Gtk.ComboBoxEntry).Entry.Text = temp_size;
+ return;
+ }
+
+ PintaCore.Chrome.DrawingArea.GrabFocus ();
+
+ UpdateFont ();
+
+ size_combo.ComboBox.Changed += HandleSizeChanged;
+ }
+
+ private void HandleFontChanged (object sender, EventArgs e)
+ {
+ PintaCore.Chrome.DrawingArea.GrabFocus ();
+
+ UpdateFontSizes ();
+ UpdateFont ();
+ }
+
+ private void UpdateFontSizes ()
+ {
+ string oldval = size_combo.ComboBox.ActiveText;
+
+ ListStore model = (ListStore)size_combo.ComboBox.Model;
+ model.Clear ();
+
+ List<int> sizes = PintaCore.System.Fonts.GetSizes (FontFamily);
+
+ foreach (int i in sizes)
+ size_combo.ComboBox.AppendText (i.ToString ());
+
+ int index;
+
+ if (string.IsNullOrEmpty (oldval))
+ index = sizes.IndexOf (12);
+ else
+ index = sizes.IndexOf (int.Parse (oldval));
+
+ if (index == -1)
+ index = 0;
+
+ size_combo.ComboBox.Active = index;
+ }
+
+ private void HandleSizeChanged (object sender, EventArgs e)
+ {
+ PintaCore.Chrome.DrawingArea.GrabFocus ();
+
+ UpdateFont ();
+ }
+
+ private Pango.FontFamily FontFamily {
+ get { return PintaCore.System.Fonts.GetFamily (font_combo.ComboBox.ActiveText); }
+ }
+
+
+ private int FontSize {
+ get { return int.Parse (size_combo.ComboBox.ActiveText); }
+ }
+
+ private TextAlignment Alignment {
+ get {
+ if (Right_alignment_btn.Active)
+ return TextAlignment.Right;
+ else if (center_alignment_btn.Active)
+ return TextAlignment.Center;
+ else
+ return TextAlignment.Left;
+ }
+ }
+
+ private string Font {
+ get { return font_combo.ComboBox.ActiveText; }
+ }
+
+ private void HandlePintaCorePalettePrimaryColorChanged (object sender, EventArgs e)
+ {
+ if (is_editing)
+ RedrawText (true, true);
+ }
+
+ private void HandleLeftAlignmentButtonToggled (object sender, EventArgs e)
+ {
+ if (left_alignment_btn.Active) {
+ Right_alignment_btn.Active = false;
+ center_alignment_btn.Active = false;
+ } else if (!Right_alignment_btn.Active && !center_alignment_btn.Active) {
+ left_alignment_btn.Active = true;
+ }
+
+ UpdateFont ();
+ }
+
+ private void HandleCenterAlignmentButtonToggled (object sender, EventArgs e)
+ {
+ if (center_alignment_btn.Active) {
+ Right_alignment_btn.Active = false;
+ left_alignment_btn.Active = false;
+ } else if (!Right_alignment_btn.Active && !left_alignment_btn.Active) {
+ center_alignment_btn.Active = true;
+ }
+
+ UpdateFont ();
+ }
+
+ private void HandleRightAlignmentButtonToggled (object sender, EventArgs e)
+ {
+ if (Right_alignment_btn.Active) {
+ center_alignment_btn.Active = false;
+ left_alignment_btn.Active = false;
+ } else if (!center_alignment_btn.Active && !left_alignment_btn.Active) {
+ Right_alignment_btn.Active = true;
+ }
+
+ UpdateFont ();
+ }
+
+ private void HandleUnderscoreButtonToggled (object sender, EventArgs e)
+ {
+ UpdateFont ();
+ }
+
+ private void HandleItalicButtonToggled (object sender, EventArgs e)
+ {
+ UpdateFont ();
+ }
+
+ private void HandleBoldButtonToggled (object sender, EventArgs e)
+ {
+ UpdateFont ();
+ }
+
+ private void UpdateFont ()
+ {
+ engine.SetAlignment (Alignment);
+ engine.SetFont (Font, FontSize, bold_btn.Active, italic_btn.Active, underscore_btn.Active);
+
+ if (is_editing)
+ RedrawText (true, true);
+ }
+ #endregion
+
+ #region Activation/Deactivation
+ protected override void OnActivated ()
+ {
+ base.OnActivated ();
+
+ // We may need to redraw our text when the color changes
+ PintaCore.Palette.PrimaryColorChanged += HandlePintaCorePalettePrimaryColorChanged;
+
+ // We always start off not in edit mode
+ is_editing = false;
+ }
+
+ protected override void OnCommit ()
+ {
+ StopEditing ();
+ }
+
+ protected override void OnDeactivated ()
+ {
+ base.OnDeactivated ();
+
+ // Stop listening for color change events
+ PintaCore.Palette.PrimaryColorChanged -= HandlePintaCorePalettePrimaryColorChanged;
+
+ StopEditing ();
+ }
+ #endregion
+
+ #region Mouse Handlers
+ protected override void OnMouseDown (DrawingArea canvas, ButtonPressEventArgs args, Cairo.PointD point)
+ {
+ Point pt = point.ToGdkPoint ();
+
+ // Grab focus so we can get keystrokes
+ PintaCore.Chrome.DrawingArea.GrabFocus ();
+
+ // If we're in editing mode, a right click
+ // allows you to move the text around
+ if (is_editing && (args.Event.Button == 3)) {
+ tracking = true;
+ startMouseXY = point;
+ startClickPoint = clickPoint;
+
+ SetCursor (cursor_hand);
+ return;
+ }
+
+ // The user clicked the left mouse button
+ if (args.Event.Button == 1) {
+ // If we're editing and the user clicked within the text,
+ // move the cursor to the click location
+ if (is_editing && old_bounds.ContainsCorrect (pt)) {
+ Position p = engine.PointToTextPosition (pt);
+ engine.SetCursorPosition (p);
+ RedrawText (true, true);
+ return;
+ }
+
+ // We're already editing and the user clicked outside the text,
+ // commit the user's work, and start a new edit
+ if (is_editing) {
+ switch (engine.EditMode) {
+ // We were editing, save and stop
+ case EditingMode.Editing:
+ StopEditing ();
+ break;
+
+ // We were editing, but nothing had been
+ // keyed. Stop editing.
+ case EditingMode.EmptyEdit:
+ StopEditing ();
+ break;
+ }
+ }
+
+ // Start editing at the cursor location
+ clickPoint = pt;
+ StartEditing ();
+ engine.Origin = clickPoint;
+ RedrawText (true, true);
+ PintaCore.Workspace.Invalidate ();
+ }
+ }
+
+ protected override void OnMouseMove (object o, MotionNotifyEventArgs args, Cairo.PointD point)
+ {
+ // If we're dragging the text around, do that
+ if (tracking) {
+ Cairo.PointD delta = new Cairo.PointD (point.X - startMouseXY.X, point.Y - startMouseXY.Y);
+
+ clickPoint = new Point ((int)(startClickPoint.X + delta.X), (int)(startClickPoint.Y + delta.Y));
+ engine.Origin = clickPoint;
+
+ RedrawText (true, true);
+ }
+ }
+
+ protected override void OnMouseUp (Gtk.DrawingArea canvas, Gtk.ButtonReleaseEventArgs args, Cairo.PointD point)
+ {
+ // If we were dragging the text around, finish that up
+ if (tracking) {
+ Cairo.PointD delta = new Cairo.PointD (point.X - startMouseXY.X, point.Y - startMouseXY.Y);
+
+ clickPoint = new Point ((int)(startClickPoint.X + delta.X), (int)(startClickPoint.Y + delta.Y));
+ engine.Origin = clickPoint;
+
+ RedrawText (false, true);
+ tracking = false;
+ SetCursor (null);
+ }
+ }
+ #endregion
+
+ #region Keyboard Handlers
+ protected override void OnKeyDown (DrawingArea canvas, KeyPressEventArgs args)
+ {
+ Gdk.ModifierType modifier = args.Event.State;
+
+ // If we are dragging the text, we
+ // aren't going to handle key presses
+ if (tracking)
+ return;
+
+ // Ignore anything with Alt pressed
+ if ((modifier & Gdk.ModifierType.Mod1Mask) != 0)
+ return;
+
+ // Assume that we are going to handle the key
+ bool keyHandled = true;
+
+ if (is_editing) {
+ switch (args.Event.Key) {
+ case Gdk.Key.BackSpace:
+ engine.PerformBackspace ();
+ break;
+
+ case Gdk.Key.Delete:
+ engine.PerformDelete ();
+ break;
+
+ case Gdk.Key.KP_Enter:
+ case Gdk.Key.Return:
+ engine.PerformEnter ();
+ break;
+
+ case Gdk.Key.Left:
+ engine.PerformLeft ((modifier & Gdk.ModifierType.ControlMask) != 0);
+ break;
+
+ case Gdk.Key.Right:
+ engine.PerformRight ((modifier & Gdk.ModifierType.ControlMask) != 0);
+ break;
+
+ case Gdk.Key.Up:
+ engine.PerformUp ();
+ break;
+
+ case Gdk.Key.Down:
+ engine.PerformDown ();
+ break;
+
+ case Gdk.Key.Home:
+ engine.PerformHome ((modifier & Gdk.ModifierType.ControlMask) != 0);
+ break;
+
+ case Gdk.Key.End:
+ engine.PerformEnd ((modifier & Gdk.ModifierType.ControlMask) != 0);
+ break;
+
+ case Gdk.Key.Next:
+ case Gdk.Key.Prior:
+ break;
+
+ case Gdk.Key.Escape:
+ StopEditing ();
+ break;
+
+ default:
+ // Try to handle it as a character
+ uint ch = Gdk.Keyval.ToUnicode (args.Event.KeyValue);
+
+ if (ch != 0) {
+ engine.InsertCharIntoString (ch);
+ RedrawText (true, true);
+ } else {
+ // We didn't handle the key
+ keyHandled = false;
+ }
+
+ break;
+ }
+
+ // If we processed a key, update the display
+ if (keyHandled)
+ RedrawText (true, true);
+
+ }
+
+ args.RetVal = keyHandled;
+ }
+ #endregion
+
+ #region Start/Stop Editing
+ private void StartEditing ()
+ {
+ is_editing = true;
+ engine.Clear ();
+ PintaCore.Workspace.ActiveDocument.ToolLayer.Hidden = false;
+ }
+
+ private void StopEditing ()
+ {
+ // If we don't have an open document, some of this stuff will crash
+ if (!PintaCore.Workspace.HasOpenDocuments)
+ return;
+
+ if (!is_editing)
+ return;
+
+ Document doc = PintaCore.Workspace.ActiveDocument;
+
+ doc.ToolLayer.Clear ();
+ doc.ToolLayer.Hidden = true;
+
+ if (engine.EditMode == EditingMode.Editing) {
+ SimpleHistoryItem hist = new SimpleHistoryItem (Icon, Name);
+ hist.TakeSnapshotOfLayer (doc.CurrentLayerIndex);
+
+ // Redraw the text without the cursor,
+ // and on to the real layer
+ RedrawText (false, false);
+
+ doc.History.PushNewItem (hist);
+ }
+
+ engine.Clear ();
+ doc.Workspace.Invalidate (old_bounds);
+ old_bounds = Rectangle.Zero;
+ is_editing = false;
+ }
+ #endregion
+
+ #region Text Drawing Methods
+ private void RedrawText (bool showCursor, bool useToolLayer)
+ {
+ Cairo.ImageSurface surf;
+
+ if (!useToolLayer)
+ surf = PintaCore.Workspace.ActiveDocument.CurrentLayer.Surface;
+ else {
+ surf = PintaCore.Workspace.ActiveDocument.ToolLayer.Surface;
+ surf.Clear ();
+ }
+
+ using (var g = new Cairo.Context (surf)) {
+ g.Save ();
+
+ g.AppendPath (PintaCore.Workspace.ActiveDocument.SelectionPath);
+ g.FillRule = Cairo.FillRule.EvenOdd;
+ g.Clip ();
+
+ g.MoveTo (new Cairo.PointD (engine.Origin.X, engine.Origin.Y));
+ g.Color = PintaCore.Palette.PrimaryColor;
+
+ // Draw the text
+ Pango.CairoHelper.ShowLayout (g, engine.Layout);
+
+ if (showCursor) {
+ var loc = engine.GetCursorLocation ();
+
+ g.Antialias = Cairo.Antialias.None;
+ g.DrawLine (new Cairo.PointD (loc.X, loc.Y), new Cairo.PointD (loc.X, loc.Y + loc.Height), new Cairo.Color (0, 0, 0, 1), 1);
+ }
+
+ g.Restore ();
+ }
+
+ Rectangle r = engine.GetLayoutBounds ();
+ r.Inflate (10, 10);
+
+ PintaCore.Workspace.Invalidate (old_bounds);
+ PintaCore.Workspace.Invalidate (r);
+
+ old_bounds = r;
+ }
+ #endregion
+ }
+}
diff --git a/Pinta.Tools/ZoomTool.cs b/Pinta.Tools/ZoomTool.cs
index 673fd20..c7e4768 100644
--- a/Pinta.Tools/ZoomTool.cs
+++ b/Pinta.Tools/ZoomTool.cs
@@ -98,6 +98,10 @@ namespace Pinta.Tools
protected override void OnMouseDown (Gtk.DrawingArea canvas, Gtk.ButtonPressEventArgs args, Cairo.PointD point)
{
+ // If we are already tracking, ignore any additional mouse down events
+ if (mouseDown > 0)
+ return;
+
shape_origin = point;
switch (args.Event.Button) {
diff --git a/Pinta/AssemblyInfo.cs b/Pinta/AssemblyInfo.cs
index ec508a4..be72114 100644
--- a/Pinta/AssemblyInfo.cs
+++ b/Pinta/AssemblyInfo.cs
@@ -17,7 +17,7 @@ using System.Runtime.CompilerServices;
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion ("0.5.0.0")]
+[assembly: AssemblyVersion ("0.6.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
diff --git a/Pinta/DialogHandlers.cs b/Pinta/DialogHandlers.cs
index 261c1a8..76fd7a3 100644
--- a/Pinta/DialogHandlers.cs
+++ b/Pinta/DialogHandlers.cs
@@ -83,26 +83,41 @@ namespace Pinta
{
NewImageDialog dialog = new NewImageDialog ();
+ dialog.NewImageWidth = PintaCore.Settings.GetSetting<int> ("new-image-width", 800);
+ dialog.NewImageHeight = PintaCore.Settings.GetSetting<int> ("new-image-height", 600);
+
dialog.ParentWindow = main_window.GdkWindow;
dialog.WindowPosition = Gtk.WindowPosition.CenterOnParent;
int response = dialog.Run ();
- if (response == (int)Gtk.ResponseType.Ok)
- PintaCore.Workspace.NewDocument (new Gdk.Size (dialog.NewImageWidth, dialog.NewImageHeight));
+ if (response == (int)Gtk.ResponseType.Ok) {
+ PintaCore.Workspace.NewDocument (new Gdk.Size (dialog.NewImageWidth, dialog.NewImageHeight), false);
+
+ PintaCore.Settings.PutSetting ("new-image-width", dialog.NewImageWidth);
+ PintaCore.Settings.PutSetting ("new-image-height", dialog.NewImageHeight);
+ PintaCore.Settings.SaveSettings ();
+ }
dialog.Destroy ();
}
private void HandlePintaCoreActionsFileNewScreenshotActivated (object sender, EventArgs e)
{
+ int delay = PintaCore.Settings.GetSetting<int> ("screenshot-delay", 0);
+
SpinButtonEntryDialog dialog = new SpinButtonEntryDialog (Catalog.GetString ("Take Screenshot"),
- PintaCore.Chrome.MainWindow, Catalog.GetString ("Delay before taking a screenshot (seconds):"), 0, 300, 0);
+ PintaCore.Chrome.MainWindow, Catalog.GetString ("Delay before taking a screenshot (seconds):"), 0, 300, delay);
if (dialog.Run () == (int)Gtk.ResponseType.Ok) {
- GLib.Timeout.Add ((uint)dialog.GetValue () * 1000, () => {
+ delay = dialog.GetValue ();
+
+ PintaCore.Settings.PutSetting ("screenshot-delay", delay);
+ PintaCore.Settings.SaveSettings ();
+
+ GLib.Timeout.Add ((uint)delay * 1000, () => {
Screen screen = Screen.Default;
- Document doc = PintaCore.Workspace.NewDocument (new Size (screen.Width, screen.Height));
+ Document doc = PintaCore.Workspace.NewDocument (new Size (screen.Width, screen.Height), false);
using (Pixbuf pb = Pixbuf.FromDrawable (screen.RootWindow, screen.RootWindow.Colormap, 0, 0, 0, 0, screen.Width, screen.Height)) {
using (Cairo.Context g = new Cairo.Context (doc.Layers[0].Surface)) {
@@ -113,8 +128,12 @@ namespace Pinta
doc.IsDirty = true;
- if (!PintaCore.Chrome.MainWindow.IsActive)
+ if (!PintaCore.Chrome.MainWindow.IsActive) {
PintaCore.Chrome.MainWindow.UrgencyHint = true;
+
+ // Don't flash forever
+ GLib.Timeout.Add (3 * 1000, () => PintaCore.Chrome.MainWindow.UrgencyHint = false);
+ }
return false;
});
@@ -141,7 +160,7 @@ namespace Pinta
var message = string.Format (markup, primary, secondary);
var md = new MessageDialog (PintaCore.Chrome.MainWindow, DialogFlags.Modal,
- MessageType.Question, ButtonsType.None, true,
+ MessageType.Warning, ButtonsType.None, true,
message, System.IO.Path.GetFileName (PintaCore.Workspace.ActiveDocument.Filename));
md.AddButton (Catalog.GetString ("Close without saving"), ResponseType.No);
@@ -187,7 +206,7 @@ namespace Pinta
Gtk.Clipboard cb = Gtk.Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
if (cb.WaitIsImageAvailable ()) {
- PintaCore.Layers.FinishSelection ();
+ PintaCore.Tools.Commit ();
Gdk.Pixbuf image = cb.WaitForImage ();
@@ -215,7 +234,7 @@ namespace Pinta
Gdk.Pixbuf image = cb.WaitForImage ();
Gdk.Size size = new Gdk.Size (image.Width, image.Height);
- PintaCore.Workspace.NewDocument (size);
+ PintaCore.Workspace.NewDocument (size, true);
PintaCore.Actions.Edit.Paste.Activate ();
} else {
ClipboardEmptyError ();
@@ -523,7 +542,7 @@ namespace Pinta
if (hasFile)
fcd.Filter = PintaCore.System.ImageFormats.GetFormatByFile (document.Filename).Filter;
else
- fcd.Filter = PintaCore.System.ImageFormats.GetFormatByExtension ("jpeg").Filter;
+ fcd.Filter = PintaCore.System.ImageFormats.GetDefaultFormat ().Filter;
// Replace GTK's ConfirmOverwrite with our own, for UI consistency
fcd.ConfirmOverwrite += (eventSender, eventArgs) => {
@@ -548,9 +567,18 @@ namespace Pinta
continue;
}
+ // Always follow the extension rather than the file type drop down
+ // ie: if the user chooses to save a "jpeg" as "foo.png", we are going
+ // to assume they just didn't update the dropdown and really want png
+ var format_type = PintaCore.System.ImageFormats.GetFormatByFile (file);
+
+ if (format_type != null)
+ format = format_type;
+
lastDialogDir = fcd.CurrentFolder;
SaveFile (document, file, format);
RecentManager.Default.AddFull (fcd.Uri, recentData);
+ PintaCore.System.ImageFormats.SetDefaultFormat (Path.GetExtension (file));
document.HasFile = true;
document.PathAndFileName = file;
@@ -580,7 +608,10 @@ namespace Pinta
return false;
}
- format.Exporter.Export (PintaCore.Layers, file);
+ // Commit any pending changes
+ PintaCore.Tools.Commit ();
+
+ format.Exporter.Export (document, file);
document.Filename = Path.GetFileName (file);
document.IsDirty = false;
diff --git a/Pinta/Dialogs/AboutDialog.cs b/Pinta/Dialogs/AboutDialog.cs
index f725d45..5b2ffa9 100644
--- a/Pinta/Dialogs/AboutDialog.cs
+++ b/Pinta/Dialogs/AboutDialog.cs
@@ -59,14 +59,13 @@ namespace Pinta
internal uint TimerHandle;
string[] authors = new string[] {
- "Aaron Bockover",
"Jonathan Pobst",
- "Maia Kozheva",
- "Olivier Dufour",
- "Richard Cohn"
+ "Khairuddin Ni'am",
+ "Mathias Fussenegger",
};
string[] oldAuthors = new string[] {
+ "Aaron Bockover",
"Anirudh Sanjeev",
"Greg Lowe",
"Hanh Pham",
@@ -78,7 +77,8 @@ namespace Pinta
"Maia Kozheva",
"Marco Rolappe",
"Obinou Conseil",
- "Olivier Dufour"
+ "Olivier Dufour",
+ "Richard Cohn"
};
public ScrollBox ()
diff --git a/Pinta/Dialogs/AboutPintaTabPage.cs b/Pinta/Dialogs/AboutPintaTabPage.cs
index 24a7180..cd29d0f 100644
--- a/Pinta/Dialogs/AboutPintaTabPage.cs
+++ b/Pinta/Dialogs/AboutPintaTabPage.cs
@@ -39,7 +39,7 @@ namespace Pinta
label.Markup = String.Format (
"<b>{0}</b>\n {1}",
Catalog.GetString ("Version"),
- "0.5");
+ "0.6");
HBox hBoxVersion = new HBox ();
hBoxVersion.PackStart (label, false, false, 5);
@@ -54,7 +54,7 @@ namespace Pinta
label = null;
label = new Label ();
- label.Markup = string.Format ("<b>{0}</b>\n (c) 2010 {1}", Catalog.GetString ("Copyright"), Catalog.GetString ("by Pinta contributors"));
+ label.Markup = string.Format ("<b>{0}</b>\n (c) 2010-2011 {1}", Catalog.GetString ("Copyright"), Catalog.GetString ("by Pinta contributors"));
HBox hBoxCopyright = new HBox ();
hBoxCopyright.PackStart (label, false, false, 5);
this.PackStart (hBoxCopyright, false, true, 5);
diff --git a/Pinta/Dialogs/NewImageDialog.cs b/Pinta/Dialogs/NewImageDialog.cs
index b4331ae..f97ae4f 100644
--- a/Pinta/Dialogs/NewImageDialog.cs
+++ b/Pinta/Dialogs/NewImageDialog.cs
@@ -37,11 +37,19 @@ namespace Pinta
this.Build ();
this.Icon = Gtk.IconTheme.Default.LoadIcon ("gtk-new", 16, IconLookupFlags.UseBuiltin);
+ DefaultResponse = ResponseType.Ok;
AlternativeButtonOrder = new int[] { (int) ResponseType.Ok, (int) ResponseType.Cancel };
}
- public int NewImageWidth { get { return this.widthSpinner.ValueAsInt; } }
- public int NewImageHeight { get { return this.heightSpinner.ValueAsInt; } }
+ public int NewImageWidth {
+ get { return widthSpinner.ValueAsInt; }
+ set { widthSpinner.Value = value; }
+ }
+
+ public int NewImageHeight {
+ get { return heightSpinner.ValueAsInt; }
+ set { heightSpinner.Value = value; }
+ }
}
}
diff --git a/Pinta/Main.cs b/Pinta/Main.cs
index 93b3035..23adf27 100644
--- a/Pinta/Main.cs
+++ b/Pinta/Main.cs
@@ -43,8 +43,8 @@ namespace Pinta
string locale_dir;
bool devel_mode = File.Exists (Path.Combine (Path.Combine (app_dir, ".."), "Pinta.sln"));
- if (Platform.GetOS () != Platform.OS.X11 || devel_mode)
- locale_dir = Path.Combine (app_dir, "locale");
+ if (SystemManager.GetOperatingSystem () != OS.X11 || devel_mode)
+ locale_dir = Path.Combine (app_dir, "locale");
else {
// From MonoDevelop:
// Pinta is located at $prefix/lib/pinta
@@ -89,7 +89,7 @@ namespace Pinta
if (extra.Count > 0) {
// Not sure what this does for Mac, so I'm not touching it
- if (Platform.GetOS () == Platform.OS.Mac) {
+ if (PintaCore.System.OperatingSystem == OS.Mac) {
string arg = args[0];
if (args[0].StartsWith ("-psn_")) {
@@ -100,16 +100,16 @@ namespace Pinta
}
if (!string.IsNullOrEmpty (arg)) {
- PintaCore.Workspace.OpenFile (arg);
- PintaCore.Workspace.ActiveDocument.HasFile = true;
+ if (PintaCore.Workspace.OpenFile (arg))
+ PintaCore.Workspace.ActiveDocument.HasFile = true;
}
} else {
- PintaCore.Workspace.OpenFile (extra[0]);
- PintaCore.Workspace.ActiveDocument.HasFile = true;
+ if (PintaCore.Workspace.OpenFile (extra[0]))
+ PintaCore.Workspace.ActiveDocument.HasFile = true;
}
} else {
// Create a blank document
- PintaCore.Workspace.NewDocument (new Gdk.Size (800, 600));
+ PintaCore.Workspace.NewDocument (new Gdk.Size (800, 600), false);
}
Application.Run ();
diff --git a/Pinta/MainWindow.cs b/Pinta/MainWindow.cs
index e6a8c25..8ee6f94 100644
--- a/Pinta/MainWindow.cs
+++ b/Pinta/MainWindow.cs
@@ -74,11 +74,14 @@ namespace Pinta
LoadEffects ();
//CreateStatusBar ();
- this.Icon = PintaCore.Resources.GetIcon ("Pinta.png");
canvas.IsFocus = true;
UpdateRulerRange ();
+ PintaCore.Chrome.DrawingArea.SizeAllocated += delegate {
+ UpdateRulerRange ();
+ };
+
dialog_handler = new DialogHandlers (this);
PintaCore.Actions.View.ZoomToWindow.Activated += new EventHandler (ZoomToWindow_Activated);
PintaCore.Actions.View.ZoomToSelection.Activated += new EventHandler (ZoomToSelection_Activated);
@@ -122,7 +125,7 @@ namespace Pinta
this.DragDataReceived += MainWindow_DragDataReceived;
- if (Platform.GetOS () == Platform.OS.Mac) {
+ if (PintaCore.System.OperatingSystem == OS.Mac) {
try {
//enable the global key handler for keyboard shortcuts
IgeMacMenu.GlobalKeyHandlerEnabled = true;
@@ -333,6 +336,9 @@ namespace Pinta
//var container = new CompositionContainer (catalog);
//container.ComposeParts (extensions);
+
+ //foreach (var extension in extensions.Extensions)
+ // extension.Initialize ();
}
private void LoadPaintBrushes ()
@@ -359,7 +365,7 @@ namespace Pinta
fact.AddDefault ();
// Create a gtk action for each adjustment
- Gtk.Action act = new Gtk.Action (effect.GetType ().Name, effect.Text + (effect.IsConfigurable ? "..." : ""), string.Empty, effect.Icon);
+ Gtk.Action act = new Gtk.Action (effect.GetType ().Name, effect.Text + (effect.IsConfigurable ? Catalog.GetString ("...") : ""), string.Empty, effect.Icon);
PintaCore.Actions.Adjustments.Actions.Add (act);
act.Activated += delegate (object sender, EventArgs e) { PintaCore.LivePreview.Start (extensions.Effects.Where (t => t.GetType ().Name == (sender as Gtk.Action).Name).First ()); };
@@ -375,7 +381,7 @@ namespace Pinta
fact.AddDefault ();
// Create a gtk action and menu item for each effect
- Gtk.Action act = new Gtk.Action (effect.GetType ().Name, effect.Text + (effect.IsConfigurable ? "..." : ""), string.Empty, effect.Icon);
+ Gtk.Action act = new Gtk.Action (effect.GetType ().Name, effect.Text + (effect.IsConfigurable ? Catalog.GetString ("...") : ""), string.Empty, effect.Icon);
PintaCore.Actions.Effects.AddEffect (effect.EffectMenuCategory, act);
act.Activated += delegate (object sender, EventArgs e) { PintaCore.LivePreview.Start (extensions.Effects.Where (t => t.GetType ().Name == (sender as Gtk.Action).Name).First ()); };
}
@@ -431,7 +437,7 @@ namespace Pinta
// On non-Windows systems, we clip to sufficient size for
// "both-horiz" mode.
- if (Platform.GetOS () == Platform.OS.Windows)
+ if (PintaCore.System.OperatingSystem == OS.Windows)
tool_toolbar.HeightRequest = 28;
else
tool_toolbar.HeightRequest = 42;
@@ -476,8 +482,8 @@ namespace Pinta
Name = "main_toolbar",
ShowArrow = false,
};
-
- if (Platform.GetOS () == Platform.OS.Windows) {
+
+ if (PintaCore.System.OperatingSystem == OS.Windows) {
main_toolbar.ToolbarStyle = ToolbarStyle.Icons;
main_toolbar.IconSize = IconSize.SmallToolbar;
}
@@ -550,9 +556,10 @@ namespace Pinta
toolbox_item.Icon = PintaCore.Resources.GetIcon ("Tools.Pencil.png");
toolbox_item.Behavior |= DockItemBehavior.CantClose;
toolbox_item.DefaultWidth = 65;
-
- Gtk.Action show_toolbox = show_pad.AppendAction ("Tools", Catalog.GetString ("Tools"), null, "Tools.Pencil.png");
- show_toolbox.Activated += delegate { toolbox_item.Visible = true; };
+
+ Gtk.ToggleAction show_toolbox = show_pad.AppendToggleAction ("Tools", Catalog.GetString ("Tools"), null, "Tools.Pencil.png");
+ show_toolbox.Activated += delegate { toolbox_item.Visible = show_toolbox.Active; };
+ toolbox_item.VisibleChanged += delegate { show_toolbox.Active = toolbox_item.Visible; };
// Palette pad
DockItem palette_item = dock.AddItem ("Palette");
@@ -565,8 +572,9 @@ namespace Pinta
palette_item.Behavior |= DockItemBehavior.CantClose;
palette_item.DefaultWidth = 65;
- Gtk.Action show_palette = show_pad.AppendAction ("Palette", Catalog.GetString ("Palette"), null, "Pinta.png");
- show_palette.Activated += delegate { palette_item.Visible = true; };
+ Gtk.ToggleAction show_palette = show_pad.AppendToggleAction ("Palette", Catalog.GetString ("Palette"), null, "Pinta.png");
+ show_palette.Activated += delegate { palette_item.Visible = show_palette.Active; };
+ palette_item.VisibleChanged += delegate { show_palette.Active = palette_item.Visible; };
// Canvas pad
DockItem documentDockItem = dock.AddItem ("Canvas");
@@ -635,8 +643,9 @@ namespace Pinta
layers_tb.Add (PintaCore.Actions.Layers.MoveLayerUp.CreateDockToolBarItem ());
layers_tb.Add (PintaCore.Actions.Layers.MoveLayerDown.CreateDockToolBarItem ());
- Gtk.Action show_layers = show_pad.AppendAction ("Layers", Catalog.GetString ("Layers"), null, "Menu.Layers.MergeLayerDown.png");
- show_layers.Activated += delegate { layers_item.Visible = true; };
+ Gtk.ToggleAction show_layers = show_pad.AppendToggleAction ("Layers", Catalog.GetString ("Layers"), null, "Menu.Layers.MergeLayerDown.png");
+ show_layers.Activated += delegate { layers_item.Visible = show_layers.Active; };
+ layers_item.VisibleChanged += delegate { show_layers.Active = layers_item.Visible; };
// History pad
HistoryTreeView history = new HistoryTreeView ();
@@ -650,9 +659,9 @@ namespace Pinta
history_tb.Add (PintaCore.Actions.Edit.Undo.CreateDockToolBarItem ());
history_tb.Add (PintaCore.Actions.Edit.Redo.CreateDockToolBarItem ());
-
- Gtk.Action show_history = show_pad.AppendAction ("History", Catalog.GetString ("History"), null, "Menu.Layers.DuplicateLayer.png");
- show_history.Activated += delegate { history_item.Visible = true; };
+ Gtk.ToggleAction show_history = show_pad.AppendToggleAction ("History", Catalog.GetString ("History"), null, "Menu.Layers.DuplicateLayer.png");
+ show_history.Activated += delegate { history_item.Visible = show_history.Active; };
+ history_item.VisibleChanged += delegate { show_history.Active = history_item.Visible; };
container.PackStart (dock, true, true, 0);
@@ -665,6 +674,11 @@ namespace Pinta
dock.CreateLayout ("Default", false);
dock.CurrentLayout = "Default";
+
+ show_toolbox.Active = toolbox_item.Visible;
+ show_palette.Active = palette_item.Visible;
+ show_layers.Active = layers_item.Visible;
+ show_history.Active = history_item.Visible;
}
#endregion
diff --git a/Pinta/Pinta.csproj b/Pinta/Pinta.csproj
index 2894dd5..46b4144 100644
--- a/Pinta/Pinta.csproj
+++ b/Pinta/Pinta.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -79,6 +79,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
+ <PropertyGroup>
+ <ApplicationIcon>Pinta.ico</ApplicationIcon>
+ </PropertyGroup>
<ItemGroup>
<Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="System" />
@@ -140,7 +143,6 @@
<Compile Include="gtk-gui\Pinta.ResizeImageDialog.cs" />
<Compile Include="Dialogs\ResizeCanvasDialog.cs" />
<Compile Include="gtk-gui\Pinta.ResizeCanvasDialog.cs" />
- <Compile Include="Platform.cs" />
<Compile Include="IgeMacMenu.cs" />
<Compile Include="gtk-gui\Pinta.ProgressDialog.cs" />
<Compile Include="Dialogs\ProgressDialog.cs" />
@@ -182,4 +184,7 @@
<Name>Pinta.Tools</Name>
</ProjectReference>
</ItemGroup>
+ <ItemGroup>
+ <Content Include="Pinta.ico" />
+ </ItemGroup>
</Project>
\ No newline at end of file
diff --git a/Pinta/Platform.cs b/Pinta/Platform.cs
deleted file mode 100644
index 9d96901..0000000
--- a/Pinta/Platform.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// Platform.cs
-//
-// Author:
-// jurgenobernolte <${AuthorEmail}>
-//
-// Copyright (c) 2010 jurgenobernolte
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Pinta
-{
-
-
- public static class Platform
- {
- [DllImport("libc")]
- static extern int uname (IntPtr buf);
- private static bool isWindows;
- private static bool isMac;
- private static bool isX11;
-
- public enum OS
- {
- Windows,
- Mac,
- X11,
- Unknown
- }
-
- static Platform()
- {
- isWindows = System.IO.Path.DirectorySeparatorChar == '\\';
- isMac = !isWindows && IsRunningOnMac ();
- isX11 = !isMac && System.Environment.OSVersion.Platform == PlatformID.Unix;
- }
-
- public static OS GetOS ()
- {
- if (isWindows)
- return OS.Windows;
- if (isMac)
- return OS.Mac;
- if (isX11)
- return OS.X11;
- return OS.Unknown;
- }
-
- //From Managed.Windows.Forms/XplatUI
- static bool IsRunningOnMac ()
- {
- IntPtr buf = IntPtr.Zero;
- try {
- buf = Marshal.AllocHGlobal (8192);
- // This is a hacktastic way of getting sysname from uname ()
- if (uname (buf) == 0) {
- string os = Marshal.PtrToStringAnsi (buf);
- if (os == "Darwin")
- return true;
- }
- } catch {
- } finally {
- if (buf != IntPtr.Zero)
- Marshal.FreeHGlobal (buf);
- }
- return false;
- }
-
- }
-}
diff --git a/System.ComponentModel.Composition/AssemblyInfo.cs b/System.ComponentModel.Composition/AssemblyInfo.cs
deleted file mode 100644
index 6bb2f4a..0000000
--- a/System.ComponentModel.Composition/AssemblyInfo.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//------------------------------------------------------------
-[assembly: System.CLSCompliant(true)]
-[assembly: System.Reflection.AssemblyTitle("System.ComponentModel.Composition")]
-[assembly: System.Reflection.AssemblyCopyright("(c) Microsoft Corporation. All rights reserved.")]
-[assembly: System.Reflection.AssemblyVersion("2010.02.11")]
-[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.ComponentModel.Composition.UnitTests")]
-[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.ComponentModel.Composition.UnitTestFramework")]
diff --git a/System.ComponentModel.Composition/ComponentModel.csproj b/System.ComponentModel.Composition/ComponentModel.csproj
deleted file mode 100644
index eaecf91..0000000
--- a/System.ComponentModel.Composition/ComponentModel.csproj
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
- <CodeAnalysisRuleSet>Migrated rules for ComponentModel.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules />
- </PropertyGroup>
- <PropertyGroup>
- <OutputPath>..\..\bin</OutputPath>
- <DefineConstants>$(DefineConstants);TRACE</DefineConstants>
- <NoWarn>1570;1572;1573;1591;1699</NoWarn>
- </PropertyGroup>
- <PropertyGroup>
- <ProductVersion>10.0.20729</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</ProjectGuid>
- <ProjectClrTypes>FULLCLR;SILVERLIGHT</ProjectClrTypes>
- <OutputType>Library</OutputType>
- <RootNamespace>Microsoft.Internal</RootNamespace>
- <AssemblyName>System.ComponentModel.Composition</AssemblyName>
- <DocumentationFile>$(OutputPath)\System.ComponentModel.Composition.xml</DocumentationFile>
- <PublishUrl>publish\</PublishUrl>
- <Install>true</Install>
- <InstallFrom>Disk</InstallFrom>
- <UpdateEnabled>false</UpdateEnabled>
- <UpdateMode>Foreground</UpdateMode>
- <UpdateInterval>7</UpdateInterval>
- <UpdateIntervalUnits>Days</UpdateIntervalUnits>
- <UpdatePeriodically>false</UpdatePeriodically>
- <UpdateRequired>false</UpdateRequired>
- <MapFileExtensions>true</MapFileExtensions>
- <ApplicationRevision>0</ApplicationRevision>
- <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
- <IsWebBootstrapper>false</IsWebBootstrapper>
- <UseApplicationTrust>false</UseApplicationTrust>
- <BootstrapperEnabled>true</BootstrapperEnabled>
- </PropertyGroup>
- <PropertyGroup>
- <SignAssembly>true</SignAssembly>
- <NoStdLib>true</NoStdLib>
- </PropertyGroup>
- <PropertyGroup Condition="'$(USE_CUSTOM_KEY)' != 'true'">
- <CreateMetaAssembly>true</CreateMetaAssembly>
- <CreateRefAssembly>true</CreateRefAssembly>
- <PublishMetaAssemblyToSDK>true</PublishMetaAssemblyToSDK>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="mscorlib" />
- <Reference Include="System" />
- <Reference Include="System.Core" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="AssemblyInfo.cs" />
- <Compile Include="Microsoft\Internal\Assumes.cs" />
- <Compile Include="Microsoft\Internal\AttributeServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\ConditionalWeakTable.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.CollectionOfObject.cs" />
- <Compile Include="Microsoft\Internal\Collections\EnumerableCardinality.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionary.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionaryDebuggerProxy.cs" />
- <Compile Include="Microsoft\Internal\Collections\WeakReferenceCollection.cs" />
- <Compile Include="Microsoft\Internal\ContractServices.cs" />
- <Compile Include="Microsoft\Internal\Assumes.InternalErrorException.cs" />
- <Compile Include="Microsoft\Internal\SilverlightReflectionInvoke.cs" />
- <Compile Include="Microsoft\Internal\GenerationServices.cs" />
- <Compile Include="Microsoft\Internal\LazyServices.cs" />
- <Compile Include="Microsoft\Internal\Lock.cs" />
- <Compile Include="Microsoft\Internal\Lock.Reader.cs" />
- <Compile Include="Microsoft\Internal\Lock.Writer.cs" />
- <Compile Include="Microsoft\Internal\Requires.cs" />
- <Compile Include="Microsoft\Internal\Runtime\Serialization\SerializationServices.cs" />
- <Compile Include="Microsoft\Internal\StringComparers.cs" />
- <Compile Include="Microsoft\Internal\ReflectionServices.cs" />
- <Compile Include="Strings.Designer.cs">
- <AutoGen>True</AutoGen>
- <DesignTime>True</DesignTime>
- <DependentUpon>Strings.resx</DependentUpon>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </Compile>
- <Compile Include="SuppressMessages.cs" />
- <Compile Include="SuppressMessagesBaselined.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedModelDiscovery.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTrace.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceId.cs" />
- <Compile Include="System\ComponentModel\Composition\ConstraintServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionContractMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResultOfT.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.PartCreatorExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionLock.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceSource.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceSourceTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\SilverlightTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\InheritedExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.DisposableLazy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicComposition.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicCompositionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionConstants.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogChangeProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\IPartCreatorImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\IAttributedImport.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportCardinalityMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportManyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ErrorBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExceptionBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportCardinalityCheckResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogCollection.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.SingleExportComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionContainer.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.GetExportOverrides.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportsChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.RecompositionManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.EngineContext.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.PartManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\INotifyComposablePartCatalogChanged.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\TypeCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportingConstructorAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\IPartImportsSatisfiedNotification.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartException.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ContractBasedImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\Export.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportedDelegate.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ICompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportCardinality.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\SerializableCompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\DisposableReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\IReflectionPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\LazyMemberInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionImportDefinition.cs" />
- <Compile Include="Microsoft\Internal\ReflectionInvoke.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItemType.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\PartCreationPolicyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartNotDiscoverableAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ExportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionWritableMember.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewGenerator.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionField.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionProperty.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMethod.cs" />
- <Compile Include="System\ComponentModel\Composition\ChangeRejectedException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorId.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ContractNameServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CreationPolicy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionService.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataAttributeAttribute.cs" />
- <Compile Include="System\Lazy.cs" />
- <Compile Include="System\LazyOfTTMetadata.cs" />
- <Compile Include="System\Tuple.cs" />
- </ItemGroup>
- <ItemGroup Condition="'$(IsSilverLight)' != 'true'">
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs" />
- </ItemGroup>
- <ItemGroup Condition="'$(IsSilverLight)' == 'true'">
- <Compile Include="SilverlightAdditions.cs" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="Strings.resx">
- <SubType>Designer</SubType>
- <Generator>ResXFileCodeGenerator</Generator>
- <LastGenOutput>Strings.Designer.cs</LastGenOutput>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
- <Install>false</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
- <Visible>False</Visible>
- <ProductName>Windows Installer 3.1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
-</Project>
diff --git a/System.ComponentModel.Composition/Makefile.am b/System.ComponentModel.Composition/Makefile.am
deleted file mode 100644
index ef55508..0000000
--- a/System.ComponentModel.Composition/Makefile.am
+++ /dev/null
@@ -1,165 +0,0 @@
-include $(top_srcdir)/Makefile.include
-
-ASSEMBLY = System.Composition.ComponentModel
-TARGET = library
-
-REFERENCES = \
- -r:mscorlib \
- -r:System \
- -r:System.Core
-
-SOURCES = \
- AssemblyInfo.cs \
- Microsoft/Internal/Assumes.cs \
- Microsoft/Internal/AttributeServices.cs \
- Microsoft/Internal/Collections/CollectionServices.cs \
- Microsoft/Internal/Collections/ConditionalWeakTable.cs \
- Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs \
- Microsoft/Internal/Collections/EnumerableCardinality.cs \
- Microsoft/Internal/Collections/ReadOnlyDictionary.cs \
- Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs \
- Microsoft/Internal/Collections/WeakReferenceCollection.cs \
- Microsoft/Internal/ContractServices.cs \
- Microsoft/Internal/Assumes.InternalErrorException.cs \
- Microsoft/Internal/SilverlightReflectionInvoke.cs \
- Microsoft/Internal/GenerationServices.cs \
- Microsoft/Internal/LazyServices.cs \
- Microsoft/Internal/Lock.cs \
- Microsoft/Internal/Lock.Reader.cs \
- Microsoft/Internal/Lock.Writer.cs \
- Microsoft/Internal/Requires.cs \
- Microsoft/Internal/Runtime/Serialization/SerializationServices.cs \
- Microsoft/Internal/StringComparers.cs \
- Microsoft/Internal/ReflectionServices.cs \
- Strings.Designer.cs \
- SuppressMessages.cs \
- SuppressMessagesBaselined.cs \
- System/ComponentModel/Composition/AttributedModelServices.cs \
- System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs \
- System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs \
- System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs \
- System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs \
- System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs \
- System/ComponentModel/Composition/ConstraintServices.cs \
- System/ComponentModel/Composition/CompositionContractMismatchException.cs \
- System/ComponentModel/Composition/CompositionError.cs \
- System/ComponentModel/Composition/CompositionResultOfT.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs \
- System/ComponentModel/Composition/Hosting/CompositionLock.cs \
- System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs \
- System/ComponentModel/Composition/Diagnostics/TraceWriter.cs \
- System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs \
- System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs \
- System/ComponentModel/Composition/InheritedExportAttribute.cs \
- System/ComponentModel/Composition/ExportServices.DisposableLazy.cs \
- System/ComponentModel/Composition/Hosting/AtomicComposition.cs \
- System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs \
- System/ComponentModel/Composition/Hosting/CompositionConstants.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs \
- System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs \
- System/ComponentModel/Composition/IAttributedImport.cs \
- System/ComponentModel/Composition/ImportCardinalityMismatchException.cs \
- System/ComponentModel/Composition/ImportManyAttribute.cs \
- System/ComponentModel/Composition/ErrorBuilder.cs \
- System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs \
- System/ComponentModel/Composition/ExceptionBuilder.cs \
- System/ComponentModel/Composition/ExportCardinalityCheckResult.cs \
- System/ComponentModel/Composition/ExportServices.cs \
- System/ComponentModel/Composition/Hosting/AggregateCatalog.cs \
- System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs \
- System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs \
- System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs \
- System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs \
- System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs \
- System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs \
- System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs \
- System/ComponentModel/Composition/Hosting/CompositionBatch.cs \
- System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs \
- System/ComponentModel/Composition/Hosting/CompositionContainer.cs \
- System/ComponentModel/Composition/Hosting/CompositionServices.cs \
- System/ComponentModel/Composition/Hosting/ExportProvider.cs \
- System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs \
- System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs \
- System/ComponentModel/Composition/Hosting/ImportEngine.cs \
- System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs \
- System/ComponentModel/Composition/Hosting/TypeCatalog.cs \
- System/ComponentModel/Composition/ICompositionError.cs \
- System/ComponentModel/Composition/ImportingConstructorAttribute.cs \
- System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs \
- System/ComponentModel/Composition/MetadataServices.cs \
- System/ComponentModel/Composition/Primitives/ComposablePart.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs \
- System/ComponentModel/Composition/Primitives/ComposablePartException.cs \
- System/ComponentModel/Composition/Primitives/CompositionElement.cs \
- System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs \
- System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs \
- System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs \
- System/ComponentModel/Composition/Primitives/Export.cs \
- System/ComponentModel/Composition/Primitives/ExportDefinition.cs \
- System/ComponentModel/Composition/Primitives/ExportedDelegate.cs \
- System/ComponentModel/Composition/Primitives/ICompositionElement.cs \
- System/ComponentModel/Composition/Primitives/ImportCardinality.cs \
- System/ComponentModel/Composition/Primitives/ImportDefinition.cs \
- System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs \
- System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs \
- System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs \
- System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs \
- Microsoft/Internal/ReflectionInvoke.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs \
- System/ComponentModel/Composition/MetadataViewProvider.cs \
- System/ComponentModel/Composition/PartCreationPolicyAttribute.cs \
- System/ComponentModel/Composition/PartMetadataAttribute.cs \
- System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs \
- System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs \
- System/ComponentModel/Composition/ReflectionModel/ImportType.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs \
- System/ComponentModel/Composition/MetadataViewGenerator.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs \
- System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs \
- System/ComponentModel/Composition/ChangeRejectedException.cs \
- System/ComponentModel/Composition/CompositionException.cs \
- System/ComponentModel/Composition/CompositionErrorId.cs \
- System/ComponentModel/Composition/CompositionResult.cs \
- System/ComponentModel/Composition/ContractNameServices.cs \
- System/ComponentModel/Composition/CreationPolicy.cs \
- System/ComponentModel/Composition/ExportAttribute.cs \
- System/ComponentModel/Composition/ExportMetadataAttribute.cs \
- System/ComponentModel/Composition/ICompositionService.cs \
- System/ComponentModel/Composition/ImportAttribute.cs \
- System/ComponentModel/Composition/MetadataAttributeAttribute.cs \
- System/Lazy.cs \
- System/LazyOfTTMetadata.cs \
- System/Tuple.cs \
- System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs \
- System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs
-
-RESOURCES = \
- Strings.resx
-
-# ,System.ComponentModel.Composition.Strings.resources
-
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.InternalErrorException.cs b/System.ComponentModel.Composition/Microsoft/Internal/Assumes.InternalErrorException.cs
deleted file mode 100644
index 3059b63..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.InternalErrorException.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace Microsoft.Internal
-{
- partial class Assumes
- {
- // The exception that is thrown when an internal assumption failed.
- [Serializable]
- [SuppressMessage("Microsoft.Design", "CA1064:ExceptionsShouldBePublic")]
- private class InternalErrorException : Exception
- {
- public InternalErrorException(string message)
- : base(string.Format(CultureInfo.CurrentCulture, Strings.InternalExceptionMessage, message))
- {
- }
-
-#if !SILVERLIGHT
- [System.Security.SecuritySafeCritical]
- protected InternalErrorException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
-#endif
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.cs b/System.ComponentModel.Composition/Microsoft/Internal/Assumes.cs
deleted file mode 100644
index 2aa03cd..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Assumes.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace Microsoft.Internal
-{
- internal static partial class Assumes
- {
- [DebuggerStepThrough]
- internal static void NotNull<T>(T value)
- where T : class
- {
- IsTrue(value != null);
- }
-
- [DebuggerStepThrough]
- internal static void NotNull<T1, T2>(T1 value1, T2 value2)
- where T1 : class
- where T2 : class
- {
- NotNull(value1);
- NotNull(value2);
- }
-
- [DebuggerStepThrough]
- internal static void NotNull<T1, T2, T3>(T1 value1, T2 value2, T3 value3)
- where T1 : class
- where T2 : class
- where T3 : class
- {
- NotNull(value1);
- NotNull(value2);
- NotNull(value3);
- }
-
- [DebuggerStepThrough]
- internal static void NotNullOrEmpty<T>(T[] values)
- {
- Assumes.NotNull(values);
- Assumes.IsTrue(values.Length > 0);
- }
-
- [DebuggerStepThrough]
- internal static void NotNullOrEmpty(string value)
- {
- NotNull(value);
- IsTrue(value.Length > 0);
- }
-
- [DebuggerStepThrough]
- internal static void Null<T>(T value)
- where T : class
- {
- IsTrue(value == null);
- }
-
- [DebuggerStepThrough]
- internal static void IsFalse(bool condition)
- {
- if (condition)
- {
- Fail(null);
- }
- }
-
- [DebuggerStepThrough]
- internal static void IsTrue(bool condition)
- {
- if (!condition)
- {
- Fail(null);
- }
- }
-
- [DebuggerStepThrough]
- internal static void IsTrue(bool condition, [Localizable(false)]string message)
- {
- if (!condition)
- {
- Fail(message);
- }
- }
-
- [DebuggerStepThrough]
- internal static void Fail([Localizable(false)]string message)
- {
- throw new InternalErrorException(message);
- }
-
- [DebuggerStepThrough]
- internal static T NotReachable<T>()
- {
- throw new InternalErrorException("Code path should never be reached!");
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/AttributeServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/AttributeServices.cs
deleted file mode 100644
index 6b9f08b..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/AttributeServices.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-
-namespace Microsoft.Internal
-{
- internal static class AttributeServices
- {
- public static T[] GetAttributes<T>(this ICustomAttributeProvider attributeProvider) where T : class
- {
- return (T[])attributeProvider.GetCustomAttributes(typeof(T), false);
- }
-
- public static T[] GetAttributes<T>(this ICustomAttributeProvider attributeProvider, bool inherit) where T : class
- {
- return (T[])attributeProvider.GetCustomAttributes(typeof(T), inherit);
- }
-
- public static T GetFirstAttribute<T>(this ICustomAttributeProvider attributeProvider) where T : class
- {
- return GetAttributes<T>(attributeProvider).FirstOrDefault();
- }
-
- public static T GetFirstAttribute<T>(this ICustomAttributeProvider attributeProvider, bool inherit) where T : class
- {
- return GetAttributes<T>(attributeProvider, inherit).FirstOrDefault();
- }
-
- public static bool IsAttributeDefined<T>(this ICustomAttributeProvider attributeProvider) where T : class
- {
- return attributeProvider.IsDefined(typeof(T), false);
- }
-
- public static bool IsAttributeDefined<T>(this ICustomAttributeProvider attributeProvider, bool inherit) where T : class
- {
- return attributeProvider.IsDefined(typeof(T), inherit);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs
deleted file mode 100644
index e0617a5..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs
+++ /dev/null
@@ -1,145 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace Microsoft.Internal.Collections
-{
- internal static partial class CollectionServices
- {
- public static ICollection<object> GetCollectionWrapper(Type itemType, object collectionObject)
- {
- Assumes.NotNull(itemType, collectionObject);
-
- if (itemType == typeof(object))
- {
- return (ICollection<object>)collectionObject;
- }
-
- // Most common .Net collections implement IList as well so for those
- // cases we can optimize the wrapping instead of using reflection to create
- // a generic type.
- if (typeof(IList).IsAssignableFrom(collectionObject.GetType()))
- {
- return new CollectionOfObjectList((IList)collectionObject);
- }
-
- Type collectionType = typeof(CollectionOfObject<>).MakeGenericType(itemType);
-
- return (ICollection<object>)Activator.CreateInstance(collectionType, collectionObject);
- }
-
- private class CollectionOfObjectList : ICollection<object>
- {
- private readonly IList _list;
-
- public CollectionOfObjectList(IList list)
- {
- this._list = list;
- }
-
- public void Add(object item)
- {
- this._list.Add(item);
- }
-
- public void Clear()
- {
- this._list.Clear();
- }
-
- public bool Contains(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public void CopyTo(object[] array, int arrayIndex)
- {
- Assumes.NotReachable<object>();
- }
-
- public int Count
- {
- get { return Assumes.NotReachable<int>(); }
- }
-
- public bool IsReadOnly
- {
- get { return this._list.IsReadOnly; }
- }
-
- public bool Remove(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public IEnumerator<object> GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator<object>>();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator>();
- }
- }
-
- private class CollectionOfObject<T> : ICollection<object>
- {
- private readonly ICollection<T> _collectionOfT;
-
- public CollectionOfObject(object collectionOfT)
- {
- this._collectionOfT = (ICollection<T>)collectionOfT;
- }
-
- public void Add(object item)
- {
- this._collectionOfT.Add((T) item);
- }
-
- public void Clear()
- {
- this._collectionOfT.Clear();
- }
-
- public bool Contains(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public void CopyTo(object[] array, int arrayIndex)
- {
- Assumes.NotReachable<object>();
- }
-
- public int Count
- {
- get { return Assumes.NotReachable<int>(); }
- }
-
- public bool IsReadOnly
- {
- get { return this._collectionOfT.IsReadOnly; }
- }
-
- public bool Remove(object item)
- {
- return Assumes.NotReachable<bool>();
- }
-
- public IEnumerator<object> GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator<object>>();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return Assumes.NotReachable<IEnumerator>();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.cs
deleted file mode 100644
index 714c333..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/CollectionServices.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-
-namespace Microsoft.Internal.Collections
-{
- internal static partial class CollectionServices
- {
- private static readonly Type StringType = typeof(string);
- private static readonly Type IEnumerableType = typeof(IEnumerable);
- private static readonly Type IEnumerableOfTType = typeof(IEnumerable<>);
- private static readonly Type ICollectionOfTType = typeof(ICollection<>);
-
- public static bool IsEnumerableOfT(Type type)
- {
- if (type.IsGenericType)
- {
- Type genericType = type.GetGenericTypeDefinition();
-
- if (genericType == IEnumerableOfTType)
- {
- return true;
- }
- }
- return false;
- }
-
- public static Type GetEnumerableElementType(Type type)
- {
- if (type == StringType || !IEnumerableType.IsAssignableFrom(type))
- {
- return null;
- }
-
- Type closedType;
- if (ReflectionServices.TryGetGenericInterfaceType(type, IEnumerableOfTType, out closedType))
- {
- return closedType.GetGenericArguments()[0];
- }
-
- return null;
- }
-
- public static Type GetCollectionElementType(Type type)
- {
- Type closedType;
- if (ReflectionServices.TryGetGenericInterfaceType(type, ICollectionOfTType, out closedType))
- {
- return closedType.GetGenericArguments()[0];
- }
-
- return null;
- }
-
- public static ReadOnlyCollection<T> ToReadOnlyCollection<T>(this IEnumerable<T> source)
- {
- Assumes.NotNull(source);
-
- return new ReadOnlyCollection<T>(source.AsArray());
- }
-
- public static IEnumerable<T> WhereNotNull<T>(this IEnumerable<T> source) where T : class
- {
- Assumes.NotNull(source);
- return source.Where(NotNull); // Use non-generic NotNull for performance reasons
- }
-
- private static bool NotNull(object element)
- {
- return element != null;
- }
-
- public static IEnumerable<T> ConcatAllowingNull<T>(this IEnumerable<T> source, IEnumerable<T> second)
- {
- if (second == null || !second.FastAny())
- {
- return source;
- }
-
- if (source == null || !source.FastAny())
- {
- return second;
- }
-
- return source.Concat(second);
- }
-
- public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
- {
- foreach(T t in source)
- {
- action.Invoke(t);
- }
- }
-
- public static EnumerableCardinality GetCardinality<T>(this IEnumerable<T> source)
- {
- Assumes.NotNull(source);
-
- // Cast to ICollection instead of ICollection<T> for performance reasons.
- ICollection collection = source as ICollection;
- if (collection != null)
- {
- switch (collection.Count)
- {
- case 0:
- return EnumerableCardinality.Zero;
-
- case 1:
- return EnumerableCardinality.One;
-
- default:
- return EnumerableCardinality.TwoOrMore;
- }
- }
-
- using (var enumerator = source.GetEnumerator())
- {
- if (!enumerator.MoveNext())
- {
- return EnumerableCardinality.Zero;
- }
-
- if (!enumerator.MoveNext())
- {
- return EnumerableCardinality.One;
- }
-
- return EnumerableCardinality.TwoOrMore;
- }
- }
-
- public static bool FastAny<T>(this IEnumerable<T> source)
- {
- // Enumerable.Any<T> underneath doesn't cast to ICollection,
- // like it does with many of the other LINQ methods.
- // Below is significantly (4x) when mainly working with ICollection
- // sources and a little slower if working with mainly IEnumerable<T>
- // sources.
-
- // Cast to ICollection instead of ICollection<T> for performance reasons.
- ICollection collection = source as ICollection;
- if (collection != null)
- {
- return collection.Count > 0;
- }
-
- return source.Any();
- }
-
- public static Stack<T> Copy<T>(this Stack<T> stack)
- {
- Assumes.NotNull(stack);
-
- // Stack<T>.GetEnumerator walks from top to bottom
- // of the stack, whereas Stack<T>(IEnumerable<T>)
- // pushes to bottom from top, so we need to reverse
- // the stack to get them in the right order.
- return new Stack<T>(stack.Reverse());
- }
-
- public static T[] AsArray<T>(this IEnumerable<T> enumerable)
- {
- T[] array = enumerable as T[];
-
- if (array != null)
- {
- return array;
- }
-
- return enumerable.ToArray();
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ConditionalWeakTable.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/ConditionalWeakTable.cs
deleted file mode 100644
index f383014..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ConditionalWeakTable.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !CLR40
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace Microsoft.Internal.Collections
-{
- // This is a broken implementation of ConditionalWeakTable that allows us
- // to compile and work on versions of .Net eariler then 4.0. This class is
- // broken when there are circular dependencies between keys and values, which
- // can only be fixed by using some specific CLR 4.0 features.
- // For code samples of the broken behavior see ConditionalWeakTableTests.cs.
- internal class ConditionalWeakTable<TKey, TValue>
- where TKey : class
- where TValue : class
- {
- private readonly Dictionary<object, TValue> _table;
- private int _capacity = 4;
-
- public ConditionalWeakTable()
- {
- this._table = new Dictionary<object, TValue>();
- }
-
- public void Add(TKey key, TValue value)
- {
- CleanupDeadReferences();
- this._table.Add(CreateWeakKey(key), value);
- }
-
- public bool Remove(TKey key)
- {
- return this._table.Remove(key);
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- return this._table.TryGetValue(key, out value);
- }
-
- private void CleanupDeadReferences()
- {
- if (this._table.Count < _capacity)
- {
- return;
- }
-
- object[] deadKeys = this._table.Keys
- .Where(weakRef => !((EquivalentWeakReference)weakRef).IsAlive).ToArray();
-
- foreach (var deadKey in deadKeys)
- {
- this._table.Remove(deadKey);
- }
-
- if (this._table.Count >= _capacity)
- {
- _capacity *= 2;
- }
- }
-
- private static object CreateWeakKey(TKey key)
- {
- return new EquivalentWeakReference(key);
- }
-
- private class EquivalentWeakReference
- {
- private readonly WeakReference _weakReference;
- private readonly int _hashCode;
-
- public EquivalentWeakReference(object obj)
- {
- this._hashCode = obj.GetHashCode();
- this._weakReference = new WeakReference(obj);
- }
-
- public bool IsAlive
- {
- get
- {
- return this._weakReference.IsAlive;
- }
- }
-
- public override bool Equals(object obj)
- {
- EquivalentWeakReference weakRef = obj as EquivalentWeakReference;
-
- if (weakRef != null)
- {
- obj = weakRef._weakReference.Target;
- }
-
- if (obj == null)
- {
- return base.Equals(weakRef);
- }
-
- return object.Equals(this._weakReference.Target, obj);
- }
-
- public override int GetHashCode()
- {
- return this._hashCode;
- }
- }
- }
-}
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/EnumerableCardinality.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/EnumerableCardinality.cs
deleted file mode 100644
index b3be71c..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/EnumerableCardinality.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace Microsoft.Internal.Collections
-{
- internal enum EnumerableCardinality : int
- {
- Zero = 0,
- One = 1,
- TwoOrMore = 2,
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionary.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
deleted file mode 100644
index 8682565..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionary.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-
-namespace Microsoft.Internal.Collections
-{
- [DebuggerDisplay("Count = {Count}")]
- [DebuggerTypeProxy(typeof(ReadOnlyDictionaryDebuggerProxy<,>))]
- internal sealed partial class ReadOnlyDictionary<TKey, TValue> : IDictionary<TKey, TValue>
- {
- private readonly IDictionary<TKey, TValue> _innerDictionary;
-
- public ReadOnlyDictionary(IDictionary<TKey, TValue> dictionary)
- {
- this._innerDictionary = dictionary ?? new Dictionary<TKey, TValue>(0);
- }
-
- public int Count
- {
- get { return this._innerDictionary.Count; }
- }
-
- public bool IsReadOnly
- {
- get { return true; }
- }
-
- public ICollection<TKey> Keys
- {
- get { return this._innerDictionary.Keys; }
- }
-
- public TValue this[TKey key]
- {
- get { return this._innerDictionary[key]; }
- set { throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary); }
- }
-
- public ICollection<TValue> Values
- {
- get { return this._innerDictionary.Values; }
- }
-
- public bool Contains(KeyValuePair<TKey, TValue> item)
- {
- return this._innerDictionary.Contains(item);
- }
-
- public bool ContainsKey(TKey key)
- {
- return this._innerDictionary.ContainsKey(key);
- }
-
- public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
- {
- this._innerDictionary.CopyTo(array, arrayIndex);
- }
-
- public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
- {
- return this._innerDictionary.GetEnumerator();
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- return this._innerDictionary.TryGetValue(key, out value);
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this._innerDictionary.GetEnumerator();
- }
-
- void IDictionary<TKey, TValue>.Add(TKey key, TValue value)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> item)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- void ICollection<KeyValuePair<TKey, TValue>>.Clear()
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- bool IDictionary<TKey, TValue>.Remove(TKey key)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
-
- bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> item)
- {
- throw new NotSupportedException(Strings.NotSupportedReadOnlyDictionary);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
deleted file mode 100644
index 60eefa1..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/ReadOnlyDictionaryDebuggerProxy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-
-namespace Microsoft.Internal.Collections
-{
- // NOTE: This type cannot be a nested proxy of ReadOnlyDictionary due to a bug
- // in the Visual Studio Debugger which causes it to ignore nested generic proxies.
- internal class ReadOnlyDictionaryDebuggerProxy<TKey, TValue>
- {
- private readonly ReadOnlyDictionary<TKey, TValue> _dictionary;
-
- public ReadOnlyDictionaryDebuggerProxy(ReadOnlyDictionary<TKey, TValue> dictionary)
- {
- Requires.NotNull(dictionary, "dictionary");
-
- _dictionary = dictionary;
- }
-
- [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
- public KeyValuePair<TKey, TValue>[] Items
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying dictionary is respected.
- get { return this._dictionary.ToArray(); }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Collections/WeakReferenceCollection.cs b/System.ComponentModel.Composition/Microsoft/Internal/Collections/WeakReferenceCollection.cs
deleted file mode 100644
index 6895a63..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Collections/WeakReferenceCollection.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace Microsoft.Internal.Collections
-{
- internal class WeakReferenceCollection<T> where T : class
- {
- private readonly List<WeakReference> _items = new List<WeakReference>();
-
- public void Add(T item)
- {
- // Only cleanup right before we need to reallocate space.
- if (this._items.Capacity == this._items.Count)
- {
- this.CleanupDeadReferences();
- }
-
- this._items.Add(new WeakReference(item));
- }
-
- public void Remove(T item)
- {
- int index = IndexOf(item);
-
- if (index != -1)
- {
- this._items.RemoveAt(index);
- }
- }
-
- public bool Contains(T item)
- {
- return IndexOf(item) >= 0;
- }
-
- public void Clear()
- {
- this._items.Clear();
- }
-
- // Should be executed under at least a read lock.
- private int IndexOf(T item)
- {
- int count = this._items.Count;
- for (int i = 0; i < count; i++)
- {
- if (this._items[i].Target == item)
- {
- return i;
- }
- }
- return -1;
- }
-
- // Should be executed under a write lock
- private void CleanupDeadReferences()
- {
- int count = this._items.Count;
- for (int i = count - 1; i >= 0; i--)
- {
- if (this._items[i].Target == null)
- {
- this._items.RemoveAt(i);
- }
- }
- }
-
- public List<T> AliveItemsToList()
- {
- List<T> aliveItems = new List<T>();
-
- foreach (var weakItem in this._items)
- {
- T item = weakItem.Target as T;
-
- if (item != null)
- {
- aliveItems.Add(item);
- }
- }
-
- return aliveItems;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/ContractServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/ContractServices.cs
deleted file mode 100644
index 7a731b4..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/ContractServices.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.ComponentModel.Composition.Primitives;
-
-namespace Microsoft.Internal
-{
- internal class ContractServices
- {
- public static T Cast<T>(object o)
- {
- return (T)o;
- }
-
- public static bool TryCast(Type contractType, object value, out object result)
- {
- if (value == null)
- {
- result = null;
- return true;
- }
- if (contractType.IsInstanceOfType(value))
- {
- result = value;
- return true;
- }
-
- // We couldn't cast see if a delegate works for us.
- if (typeof(Delegate).IsAssignableFrom(contractType))
- {
- ExportedDelegate exportedDelegate = value as ExportedDelegate;
- if (exportedDelegate != null)
- {
- result = exportedDelegate.CreateDelegate(contractType);
- return (result != null);
- }
- }
-
- result = null;
- return false;
- }
- }
-}
-
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/GenerationServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/GenerationServices.cs
deleted file mode 100644
index 455b7ce..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/GenerationServices.cs
+++ /dev/null
@@ -1,333 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Reflection;
-using System.Reflection.Emit;
-
-namespace Microsoft.Internal
-{
- internal static class GenerationServices
- {
- // Type.GetTypeFromHandle
- private static readonly MethodInfo _typeGetTypeFromHandleMethod = typeof(Type).GetMethod("GetTypeFromHandle");
-
-
- // typeofs are pretty expensive, so we cache them statically
- private static readonly Type TypeType = typeof(System.Type);
- private static readonly Type StringType = typeof(System.String);
- private static readonly Type CharType = typeof(System.Char);
- private static readonly Type BooleanType = typeof(System.Boolean);
- private static readonly Type ByteType = typeof(System.Byte);
- private static readonly Type SByteType = typeof(System.SByte);
- private static readonly Type Int16Type = typeof(System.Int16);
- private static readonly Type UInt16Type = typeof(System.UInt16);
- private static readonly Type Int32Type = typeof(System.Int32);
- private static readonly Type UInt32Type = typeof(System.UInt32);
- private static readonly Type Int64Type = typeof(System.Int64);
- private static readonly Type UInt64Type = typeof(System.UInt64);
- private static readonly Type DoubleType = typeof(System.Double);
- private static readonly Type SingleType = typeof(System.Single);
- private static readonly Type IEnumerableTypeofT = typeof(System.Collections.Generic.IEnumerable<>);
- private static readonly Type IEnumerableType = typeof(System.Collections.IEnumerable);
-
- private static readonly MethodInfo ExceptionGetData = typeof(Exception).GetProperty("Data").GetGetMethod();
- private static readonly MethodInfo DictionaryAdd = typeof(IDictionary).GetMethod("Add");
- private static readonly ConstructorInfo ObjectCtor = typeof(object).GetConstructor(Type.EmptyTypes);
-
- public static ILGenerator CreateGeneratorForPublicConstructor(this TypeBuilder typeBuilder, Type[] ctrArgumentTypes)
- {
- ConstructorBuilder ctorBuilder = typeBuilder.DefineConstructor(
- MethodAttributes.Public,
- CallingConventions.Standard,
- ctrArgumentTypes);
-
- ILGenerator ctorIL = ctorBuilder.GetILGenerator();
- ctorIL.Emit(OpCodes.Ldarg_0);
- ctorIL.Emit(OpCodes.Call, ObjectCtor);
-
- return ctorIL;
- }
-
- /// Generates the code that loads the supplied value on the stack
- /// This is not as simple as it seems, as different instructions need to be generated depending
- /// on its type.
- /// We support:
- /// 1. All primitive types
- /// 2. Strings
- /// 3. Enums
- /// 4. typeofs
- /// 5. nulls
- /// 6. Enumerables
- /// 7. Delegates on static functions or any of the above
- /// Everything else cannot be represented as literals
- /// <param name="ilGenerator"></param>
- /// <param name="item"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void LoadValue(this ILGenerator ilGenerator, object value)
- {
- Assumes.NotNull(ilGenerator);
-
- //
- // Get nulls out of the way - they are basically typeless, so we just load null
- //
- if (value == null)
- {
- ilGenerator.LoadNull();
- return;
- }
-
- //
- // Prepare for literal loading - decide whether we should box, and handle enums properly
- //
- Type valueType = value.GetType();
- object rawValue = value;
- if (valueType.IsEnum)
- {
- // enums are special - we need to load the underlying constant on the stack
- rawValue = Convert.ChangeType(value, Enum.GetUnderlyingType(valueType), null);
- valueType = rawValue.GetType();
- }
-
- //
- // Generate IL depending on the valueType - this is messier than it should ever be, but sadly necessary
- //
- if (valueType == GenerationServices.StringType)
- {
- // we need to check for strings before enumerables, because strings are IEnumerable<char>
- ilGenerator.LoadString((string)rawValue);
- }
- else if (GenerationServices.TypeType.IsAssignableFrom(valueType))
- {
- ilGenerator.LoadTypeOf((Type)rawValue);
- }
- else if (GenerationServices.IEnumerableType.IsAssignableFrom(valueType))
- {
- // NOTE : strings and dictionaries are also enumerables, but we have already handled those
- ilGenerator.LoadEnumerable((IEnumerable) rawValue);
- }
- else if (
- (valueType == GenerationServices.CharType) ||
- (valueType == GenerationServices.BooleanType) ||
- (valueType == GenerationServices.ByteType) ||
- (valueType == GenerationServices.SByteType) ||
- (valueType == GenerationServices.Int16Type) ||
- (valueType == GenerationServices.UInt16Type) ||
- (valueType == GenerationServices.Int32Type)
- )
- {
- // NOTE : Everything that is 32 bit or less uses ldc.i4. We need to pass int32, even if the actual types is shorter - this is IL memory model
- // direct casting to (int) won't work, because the value is boxed, thus we need to use Convert.
- // Sadly, this will not work for all cases - namely large uint32 - because they can't semantically fit into 32 signed bits
- // We have a special case for that next
- ilGenerator.LoadInt((int)Convert.ChangeType(rawValue, typeof(int), CultureInfo.InvariantCulture));
- }
- else if (valueType == GenerationServices.UInt32Type)
- {
- // NOTE : This one is a bit tricky. Ldc.I4 takes an Int32 as an argument, although it really treats it as a 32bit number
- // That said, some UInt32 values are larger that Int32.MaxValue, so the Convert call above will fail, which is why
- // we need to treat this case individually and cast to uint, and then - unchecked - to int.
- ilGenerator.LoadInt(unchecked((int)((uint)rawValue)));
- }
- else if (valueType == GenerationServices.Int64Type)
- {
- ilGenerator.LoadLong((long)rawValue);
- }
- else if (valueType == GenerationServices.UInt64Type)
- {
- // NOTE : This one is a bit tricky. Ldc.I8 takes an Int64 as an argument, although it really treats it as a 64bit number
- // That said, some UInt64 values are larger that Int64.MaxValue, so the direct case we use above (or Convert, for that matter)will fail, which is why
- // we need to treat this case individually and cast to ulong, and then - unchecked - to long.
- ilGenerator.LoadLong(unchecked((long)((ulong)rawValue)));
- }
- else if (valueType == GenerationServices.SingleType)
- {
- ilGenerator.LoadFloat((float)rawValue);
- }
- else if (valueType == GenerationServices.DoubleType)
- {
- ilGenerator.LoadDouble((double)rawValue);
- }
- else
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.InvalidMetadataValue, value.GetType().FullName));
- }
- }
-
- /// Generates the code that adds an object to a dictionary stored in a local variable
- /// <param name="ilGenerator"></param>
- /// <param name="dictionary"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void AddItemToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary, object key, object value)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(dictionary);
- Assumes.NotNull(key);
- Assumes.NotNull(value);
-
- ilGenerator.Emit(OpCodes.Ldloc, dictionary);
- ilGenerator.LoadValue(key);
- ilGenerator.LoadValue(value);
- ilGenerator.Emit(OpCodes.Callvirt, DictionaryAdd);
- }
-
- /// Generates the code that adds an object from a local variable to a dictionary also stored in a local
- /// <param name="ilGenerator"></param>
- /// <param name="dictionary"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void AddLocalToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary, object key, LocalBuilder value)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(dictionary);
- Assumes.NotNull(key);
- Assumes.NotNull(value);
-
- ilGenerator.Emit(OpCodes.Ldloc, dictionary);
- ilGenerator.LoadValue(key);
- ilGenerator.Emit(OpCodes.Ldloc, value);
- ilGenerator.Emit(OpCodes.Callvirt, DictionaryAdd);
- }
-
- /// Generates the code to get the type of an object and store it in a local
- /// <param name="ilGenerator"></param>
- /// <param name="dictionary"></param>
- /// <param name="key"></param>
- /// <param name="value"></param>
- /// <returns></returns>
- public static void GetExceptionDataAndStoreInLocal(this ILGenerator ilGenerator, LocalBuilder exception, LocalBuilder dataStore)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(exception);
- Assumes.NotNull(dataStore);
-
- ilGenerator.Emit(OpCodes.Ldloc, exception);
- ilGenerator.Emit(OpCodes.Callvirt, ExceptionGetData);
- ilGenerator.Emit(OpCodes.Stloc, dataStore);
- }
-
- private static void LoadEnumerable(this ILGenerator ilGenerator, IEnumerable enumerable)
- {
- Assumes.NotNull(ilGenerator);
- Assumes.NotNull(enumerable);
-
- // We load enumerable as an array - this is the most compact and efficient way of representing it
- Type elementType = null;
- Type closedType = null;
- if (ReflectionServices.TryGetGenericInterfaceType(enumerable.GetType(), GenerationServices.IEnumerableTypeofT, out closedType))
- {
- elementType = closedType.GetGenericArguments()[0];
- }
- else
- {
- elementType = typeof(object);
- }
-
- //
- // elem[] array = new elem[<enumerable.Count()>]
- //
- Type generatedArrayType = elementType.MakeArrayType();
- LocalBuilder generatedArrayLocal = ilGenerator.DeclareLocal(generatedArrayType);
-
- ilGenerator.LoadInt(enumerable.Cast<object>().Count());
- ilGenerator.Emit(OpCodes.Newarr, elementType);
- ilGenerator.Emit(OpCodes.Stloc, generatedArrayLocal);
-
- int index = 0;
- foreach (object value in enumerable)
- {
- //
- //array[<index>] = value;
- //
- ilGenerator.Emit(OpCodes.Ldloc, generatedArrayLocal);
- ilGenerator.LoadInt(index);
- ilGenerator.LoadValue(value);
- if (GenerationServices.IsBoxingRequiredForValue(value) && !elementType.IsValueType)
- {
- ilGenerator.Emit(OpCodes.Box, value.GetType());
- }
- ilGenerator.Emit(OpCodes.Stelem, elementType);
- index++;
- }
-
- ilGenerator.Emit(OpCodes.Ldloc, generatedArrayLocal);
- }
-
- private static bool IsBoxingRequiredForValue(object value)
- {
- if (value == null)
- {
- return false;
- }
- else
- {
- return value.GetType().IsValueType;
- }
- }
-
-
- private static void LoadNull(this ILGenerator ilGenerator)
- {
- ilGenerator.Emit(OpCodes.Ldnull);
- }
-
- private static void LoadString(this ILGenerator ilGenerator, string s)
- {
- Assumes.NotNull(ilGenerator);
- if (s == null)
- {
- ilGenerator.LoadNull();
- }
- else
- {
- ilGenerator.Emit(OpCodes.Ldstr, s);
- }
- }
-
-
- private static void LoadInt(this ILGenerator ilGenerator, int value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_I4, value);
- }
-
- private static void LoadLong(this ILGenerator ilGenerator, long value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_I8, value);
- }
-
- private static void LoadFloat(this ILGenerator ilGenerator, float value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_R4, value);
- }
-
- private static void LoadDouble(this ILGenerator ilGenerator, double value)
- {
- Assumes.NotNull(ilGenerator);
- ilGenerator.Emit(OpCodes.Ldc_R8, value);
- }
-
- private static void LoadTypeOf(this ILGenerator ilGenerator, Type type)
- {
- Assumes.NotNull(ilGenerator);
- //typeofs() translate into ldtoken and Type::GetTypeFromHandle call
- ilGenerator.Emit(OpCodes.Ldtoken, type);
- ilGenerator.EmitCall(OpCodes.Call, GenerationServices._typeGetTypeFromHandleMethod, null);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/LazyServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/LazyServices.cs
deleted file mode 100644
index baff505..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/LazyServices.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Text;
-using System.Globalization;
-
-namespace Microsoft.Internal
-{
- internal static class LazyServices
- {
- public static Lazy<T> AsLazy<T>(this T t)
- where T : class
- {
- return new Lazy<T>(() => t, false);
- }
-
- public static T GetNotNullValue<T>(this Lazy<T> lazy, string argument)
- where T : class
- {
- Assumes.NotNull(lazy);
- T value = lazy.Value;
- if (value == null)
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.LazyServices_LazyResolvesToNull, typeof(T), argument));
- }
-
- return value;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Reader.cs b/System.ComponentModel.Composition/Microsoft/Internal/Lock.Reader.cs
deleted file mode 100644
index 1f62034..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Reader.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Microsoft.Internal
-{
- internal struct ReadLock : IDisposable
- {
- private readonly Lock _lock;
- private int _isDisposed;
-
- public ReadLock(Lock @lock)
- {
- this._isDisposed = 0;
- this._lock = @lock;
- this._lock.EnterReadLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._lock.ExitReadLock();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Writer.cs b/System.ComponentModel.Composition/Microsoft/Internal/Lock.Writer.cs
deleted file mode 100644
index 1e8aef0..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Lock.Writer.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Microsoft.Internal
-{
- internal struct WriteLock : IDisposable
- {
- private readonly Lock _lock;
- private int _isDisposed;
-
- public WriteLock(Lock @lock)
- {
- this._isDisposed = 0;
- this._lock = @lock;
- this._lock.EnterWriteLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._lock.ExitWriteLock();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Lock.cs b/System.ComponentModel.Composition/Microsoft/Internal/Lock.cs
deleted file mode 100644
index 7d2522d..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Lock.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace Microsoft.Internal
-{
- internal sealed class Lock : IDisposable
- {
-#if (!SILVERLIGHT)
- private ReaderWriterLockSlim _thisLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);
- private int _isDisposed = 0;
- public void EnterReadLock()
- {
- this._thisLock.EnterReadLock();
- }
-
- public void EnterWriteLock()
- {
- this._thisLock.EnterWriteLock();
- }
-
- public void ExitReadLock()
- {
- this._thisLock.ExitReadLock();
- }
-
- public void ExitWriteLock()
- {
- this._thisLock.ExitWriteLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._thisLock.Dispose();
- }
- }
-
-#else
- // ReaderWriterLockSlim is not yet implemented on SilverLight
- // Satisfies our requirements until it is implemented
- object _thisLock = new object();
-
- public Lock()
- {
- }
-
- public void EnterReadLock()
- {
- Monitor.Enter(this._thisLock);
- }
-
- public void EnterWriteLock()
- {
- Monitor.Enter(this._thisLock);
- }
-
- public void ExitReadLock()
- {
- Monitor.Exit(this._thisLock);
- }
-
- public void ExitWriteLock()
- {
- Monitor.Exit(this._thisLock);
- }
-
- public void Dispose()
- {
- }
-#endif
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionInvoke.cs b/System.ComponentModel.Composition/Microsoft/Internal/ReflectionInvoke.cs
deleted file mode 100644
index b6846ca..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionInvoke.cs
+++ /dev/null
@@ -1,114 +0,0 @@
-#if !SILVERLIGHT && CLR40
-
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-namespace Microsoft.Internal
-{
- internal static class ReflectionInvoke
- {
- private static readonly ReflectionPermission _memberAccess = new ReflectionPermission(ReflectionPermissionFlag.MemberAccess);
- private static readonly ReflectionPermission _restrictedMemberAccess = new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess);
-
- public static object SafeCreateInstance(this Type type, params object[] arguments)
- {
- DemandMemberAccessIfNeeded(type);
-
- return Activator.CreateInstance(type, arguments);
- }
-
- public static object SafeInvoke(this ConstructorInfo constructor, params object[] arguments)
- {
- DemandMemberAccessIfNeeded(constructor);
-
- return constructor.Invoke(arguments);
- }
-
- public static object SafeInvoke(this MethodInfo method, object instance, params object[] arguments)
- {
- DemandMemberAccessIfNeeded(method);
-
- return method.Invoke(instance, arguments);
- }
-
- public static object SafeGetValue(this FieldInfo field, object instance)
- {
- DemandMemberAccessIfNeeded(field);
-
- return field.GetValue(instance);
- }
-
- public static void SafeSetValue(this FieldInfo field, object instance, object value)
- {
- DemandMemberAccessIfNeeded(field);
-
- field.SetValue(instance, value);
- }
-
- public static void DemandMemberAccessIfNeeded(MethodInfo method)
- {
- if (!method.IsVisible())
- {
- DemandMemberAccess(method);
- }
- }
-
- private static void DemandMemberAccessIfNeeded(FieldInfo field)
- {
- if (!field.IsVisible())
- {
- DemandMemberAccess(field);
- }
- }
-
- public static void DemandMemberAccessIfNeeded(Type type)
- {
- // Consult UnderlyingSystemType this is the type that Activator.CreateInstance creates
- if (!type.UnderlyingSystemType.IsVisible)
- {
- DemandMemberAccess(type);
- }
- }
-
- private static void DemandMemberAccessIfNeeded(ConstructorInfo constructor)
- {
- if (!constructor.IsVisible())
- {
- DemandMemberAccess(constructor);
- }
- }
-
- private static void DemandMemberAccess(MemberInfo target)
- {
- try
- {
- _memberAccess.Demand();
- }
- catch (SecurityException)
- { // The caller doesn't have member access, but let's see whether they have access to
- // members of assemblies with less or equal permissions (this mimics Reflection's behavior)
-
- DemandRestrictedMemberAccess(target);
- }
- }
-
- private static void DemandRestrictedMemberAccess(MemberInfo target)
- {
- Assembly targetAssembly = target.Assembly();
-
- PermissionSet targetGrantSet = UnsafePermissionSet(targetAssembly);
- targetGrantSet.AddPermission(_restrictedMemberAccess);
- targetGrantSet.Demand();
- }
-
- [SecuritySafeCritical] // PermissionSet is [SecurityCritical]
- private static PermissionSet UnsafePermissionSet(Assembly assembly)
- {
- return assembly.PermissionSet;
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/ReflectionServices.cs
deleted file mode 100644
index d34d518..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/ReflectionServices.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-namespace Microsoft.Internal
-{
- internal static class ReflectionServices
- {
- public static Assembly Assembly(this MemberInfo member)
- {
- Type type = member as Type;
- if (type != null)
- {
- return type.Assembly;
- }
-
- return member.DeclaringType.Assembly;
- }
-
- public static bool IsVisible(this ConstructorInfo constructor)
- {
- return constructor.DeclaringType.IsVisible && constructor.IsPublic;
- }
-
- public static bool IsVisible(this FieldInfo field)
- {
- return field.DeclaringType.IsVisible && field.IsPublic;
- }
-
- public static bool IsVisible(this MethodInfo method)
- {
- if (!method.DeclaringType.IsVisible)
- return false;
-
- if (!method.IsPublic)
- return false;
-
- if (method.IsGenericMethod)
- {
- // Check type arguments, for example if we're passed 'Activator.CreateInstance<SomeMefInternalType>()'
- foreach (Type typeArgument in method.GetGenericArguments())
- {
- if (!typeArgument.IsVisible)
- return false;
- }
- }
-
- return true;
- }
-
- public static string GetDisplayName(Type declaringType, string name)
- {
- Assumes.NotNull(declaringType);
-
- return declaringType.GetDisplayName() + "." + name;
- }
-
- public static string GetDisplayName(this MemberInfo member)
- {
- Assumes.NotNull(member);
-
- switch (member.MemberType)
- {
- case MemberTypes.TypeInfo:
- case MemberTypes.NestedType:
- return ((Type)member).FullName;
- }
-
- return GetDisplayName(member.DeclaringType, member.Name);
- }
-
- internal static bool TryGetGenericInterfaceType(Type instanceType, Type targetOpenInterfaceType, out Type targetClosedInterfaceType)
- {
- // The interface must be open
- Assumes.IsTrue(targetOpenInterfaceType.IsInterface);
- Assumes.IsTrue(targetOpenInterfaceType.IsGenericTypeDefinition);
- Assumes.IsTrue(!instanceType.IsGenericTypeDefinition);
-
- // if instanceType is an interface, we must first check it directly
- if (instanceType.IsInterface &&
- instanceType.IsGenericType &&
- instanceType.GetGenericTypeDefinition() == targetOpenInterfaceType)
- {
- targetClosedInterfaceType = instanceType;
- return true;
- }
-
- try
- {
- // Purposefully not using FullName here because it results in a significantly
- // more expensive implementation of GetInterface, this does mean that we're
- // takign the chance that there aren't too many types which implement multiple
- // interfaces by the same name...
- Type targetInterface = instanceType.GetInterface(targetOpenInterfaceType.Name, false);
- if (targetInterface != null &&
- targetInterface.GetGenericTypeDefinition() == targetOpenInterfaceType)
- {
- targetClosedInterfaceType = targetInterface;
- return true;
- }
- }
- catch (AmbiguousMatchException)
- {
- // If there are multiple with the same name we should not pick any
- }
-
- targetClosedInterfaceType = null;
- return false;
- }
-
- internal static IEnumerable<PropertyInfo> GetAllProperties(this Type type)
- {
- return type.GetInterfaces().Concat(new Type[] { type }).SelectMany(itf => itf.GetProperties());
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Requires.cs b/System.ComponentModel.Composition/Microsoft/Internal/Requires.cs
deleted file mode 100644
index 1f9f7e6..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Requires.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Globalization;
-using System.Reflection;
-using System.ComponentModel.Composition;
-using System.Text;
-
-namespace Microsoft.Internal
-{
- internal static class Requires
- {
- [DebuggerStepThrough]
- public static void NotNull<T>(T value, string parameterName)
- where T : class
- {
- if (value == null)
- {
- throw new ArgumentNullException(parameterName);
- }
- }
-
- [DebuggerStepThrough]
- public static void NotNullOrEmpty(string value, string parameterName)
- {
- NotNull(value, parameterName);
-
- if (value.Length == 0)
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.ArgumentException_EmptyString, parameterName), parameterName);
- }
- }
-
- [DebuggerStepThrough]
- public static void NotNullOrNullElements<T>(IEnumerable<T> values, string parameterName)
- where T : class
- {
- NotNull(values, parameterName);
- NotNullElements(values, parameterName);
- }
-
- [DebuggerStepThrough]
- public static void NullOrNotNullElements<TKey, TValue>(IEnumerable<KeyValuePair<TKey, TValue>> values, string parameterName)
- where TKey : class
- where TValue : class
- {
- if (values != null)
- {
- NotNullElements(values, parameterName);
- }
- }
-
- [DebuggerStepThrough]
- public static void NullOrNotNullElements<T>(IEnumerable<T> values, string parameterName)
- where T : class
- {
- if (values != null)
- {
- NotNullElements(values, parameterName);
- }
- }
-
- private static void NotNullElements<T>(IEnumerable<T> values, string parameterName)
- where T : class
- {
- foreach (T value in values)
- {
- if (value == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement(parameterName);
- }
- }
- }
-
- private static void NotNullElements<TKey, TValue>(IEnumerable<KeyValuePair<TKey, TValue>> values, string parameterName)
- where TKey : class
- where TValue : class
- {
- foreach (KeyValuePair<TKey, TValue> value in values)
- {
- if ((value.Key == null) || (value.Value == null))
- {
- throw ExceptionBuilder.CreateContainsNullElement(parameterName);
- }
- }
- }
- [DebuggerStepThrough]
- public static void IsInMembertypeSet(MemberTypes value, string parameterName, MemberTypes enumFlagSet)
- {
- if ((value & enumFlagSet) != value || // Ensure the member is in the set
- (value & (value - 1)) != 0) // Ensure that there is only one flag in the value (i.e. value is a power of 2).
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.ArgumentOutOfRange_InvalidEnumInSet, parameterName, value, enumFlagSet.ToString()), parameterName);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs b/System.ComponentModel.Composition/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs
deleted file mode 100644
index f2745f5..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/Runtime/Serialization/SerializationServices.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Microsoft.Internal.Runtime.Serialization
-{
- internal static class SerializationServices
- {
- public static T GetValue<T>(this SerializationInfo info, string name)
- {
- Assumes.NotNull(info, name);
-
- return (T)info.GetValue(name, typeof(T));
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/SilverlightReflectionInvoke.cs b/System.ComponentModel.Composition/Microsoft/Internal/SilverlightReflectionInvoke.cs
deleted file mode 100644
index 0e2f3dc..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/SilverlightReflectionInvoke.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-#if SILVERLIGHT || !CLR40
-
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-namespace Microsoft.Internal
-{
- internal static class ReflectionInvoke
- {
- public static object SafeCreateInstance(this Type type, params object[] arguments)
- {
- return Activator.CreateInstance(type, arguments);
- }
-
- public static object SafeInvoke(this ConstructorInfo constructor, params object[] arguments)
- {
- return constructor.Invoke(arguments);
- }
-
- public static object SafeInvoke(this MethodInfo method, object instance, params object[] arguments)
- {
- return method.Invoke(instance, arguments);
- }
-
- public static object SafeGetValue(this FieldInfo field, object instance)
- {
- return field.GetValue(instance);
- }
-
- public static void SafeSetValue(this FieldInfo field, object instance, object value)
- {
- field.SetValue(instance, value);
- }
-
- public static void DemandMemberAccessIfNeeded(MethodInfo method)
- {
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/Microsoft/Internal/StringComparers.cs b/System.ComponentModel.Composition/Microsoft/Internal/StringComparers.cs
deleted file mode 100644
index 5cb9747..0000000
--- a/System.ComponentModel.Composition/Microsoft/Internal/StringComparers.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace Microsoft.Internal
-{
- internal static class StringComparers
- {
- public static StringComparer ContractName
- {
- get { return StringComparer.Ordinal; }
- }
-
- public static StringComparer MetadataKeyNames
- {
- get { return StringComparer.Ordinal; }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Strings.Designer.cs b/System.ComponentModel.Composition/Strings.Designer.cs
deleted file mode 100644
index ba48697..0000000
--- a/System.ComponentModel.Composition/Strings.Designer.cs
+++ /dev/null
@@ -1,927 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.1
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Microsoft.Internal {
- using System;
-
-
- /// <summary>
- /// A strongly-typed resource class, for looking up localized strings, etc.
- /// </summary>
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Strings {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Strings() {
- }
-
- /// <summary>
- /// Returns the cached ResourceManager instance used by this class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Internal.Strings", typeof(Strings).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- /// <summary>
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' is a reflection-only assembly which is not supported..
- /// </summary>
- internal static string Argument_AssemblyReflectionOnly {
- get {
- return ResourceManager.GetString("Argument_AssemblyReflectionOnly", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' contains a reflection-only type which is not supported..
- /// </summary>
- internal static string Argument_ElementReflectionOnlyType {
- get {
- return ResourceManager.GetString("Argument_ElementReflectionOnlyType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to 'exports' cannot be empty when ImportDefinition.ImportCardinality is ImportCardinality.ExactlyOne..
- /// </summary>
- internal static string Argument_ExportsEmpty {
- get {
- return ResourceManager.GetString("Argument_ExportsEmpty", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to 'exports' cannot contain more than one element when ImportDefinition.ImportCardinality is ImportCardinality.ZeroOrOne or ImportCardinality.ExactlyOne..
- /// </summary>
- internal static string Argument_ExportsTooMany {
- get {
- return ResourceManager.GetString("Argument_ExportsTooMany", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' cannot contain a null (Nothing in Visual Basic) element..
- /// </summary>
- internal static string Argument_NullElement {
- get {
- return ResourceManager.GetString("Argument_NullElement", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to '{0}' cannot be an empty string ("")..
- /// </summary>
- internal static string ArgumentException_EmptyString {
- get {
- return ResourceManager.GetString("ArgumentException_EmptyString", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The value of argument '{0}' ({1}) is invalid for Enum type '{2}'..
- /// </summary>
- internal static string ArgumentOutOfRange_InvalidEnum {
- get {
- return ResourceManager.GetString("ArgumentOutOfRange_InvalidEnum", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The value of argument '{0}' ({1}) is not supported. Allowed values are : '{2}'..
- /// </summary>
- internal static string ArgumentOutOfRange_InvalidEnumInSet {
- get {
- return ResourceManager.GetString("ArgumentOutOfRange_InvalidEnumInSet", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The argument was a value type which is not supported..
- /// </summary>
- internal static string ArgumentValueType {
- get {
- return ResourceManager.GetString("ArgumentValueType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Assembly file {0} is either not found or not a dll or exe file..
- /// </summary>
- internal static string AssemblyFileNotFoundOrWrongType {
- get {
- return ResourceManager.GetString("AssemblyFileNotFoundOrWrongType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The atomicComposition can no longer be changed because the atomicComposition has already been completed..
- /// </summary>
- internal static string AtomicComposition_AlreadyCompleted {
- get {
- return ResourceManager.GetString("AtomicComposition_AlreadyCompleted", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The atomicComposition is already contains an inner atomicComposition and cannot contain more than one atomicComposition at a time..
- /// </summary>
- internal static string AtomicComposition_AlreadyNested {
- get {
- return ResourceManager.GetString("AtomicComposition_AlreadyNested", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The atomicComposition contains another inner atomicComposition and cannot be changed until the that inner atomicComposition has been completed..
- /// </summary>
- internal static string AtomicComposition_PartOfAnotherAtomicComposition {
- get {
- return ResourceManager.GetString("AtomicComposition_PartOfAnotherAtomicComposition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to No valid exports were found that match the constraint '{0}', invalid exports may have been rejected..
- /// </summary>
- internal static string CardinalityMismatch_NoExports {
- get {
- return ResourceManager.GetString("CardinalityMismatch_NoExports", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to More than one export was found that matches the constraint '{0}'..
- /// </summary>
- internal static string CardinalityMismatch_TooManyExports {
- get {
- return ResourceManager.GetString("CardinalityMismatch_TooManyExports", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unknown Origin.
- /// </summary>
- internal static string CompositionElement_UnknownOrigin {
- get {
- return ResourceManager.GetString("CompositionElement_UnknownOrigin", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition remains unchanged. The changes were rejected because of the following error(s): {0}.
- /// </summary>
- internal static string CompositionException_ChangesRejected {
- get {
- return ResourceManager.GetString("CompositionException_ChangesRejected", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Element: {0}.
- /// </summary>
- internal static string CompositionException_ElementPrefix {
- get {
- return ResourceManager.GetString("CompositionException_ElementPrefix", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Resulting in:.
- /// </summary>
- internal static string CompositionException_ErrorPrefix {
- get {
- return ResourceManager.GetString("CompositionException_ErrorPrefix", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unable to create an instance of the Metadata view '{0}' because a constructor could not be selected. Ensure that the type implements a constructor which takes an argument of type IDictionary<string, object>..
- /// </summary>
- internal static string CompositionException_MetadataViewInvalidConstructor {
- get {
- return ResourceManager.GetString("CompositionException_MetadataViewInvalidConstructor", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition produced multiple composition errors, with {0:N0} root causes. The root causes are provided below..
- /// </summary>
- internal static string CompositionException_MultipleErrorsWithMultiplePaths {
- get {
- return ResourceManager.GetString("CompositionException_MultipleErrorsWithMultiplePaths", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} {1}.
- /// </summary>
- internal static string CompositionException_OriginFormat {
- get {
- return ResourceManager.GetString("CompositionException_OriginFormat", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to --> .
- /// </summary>
- internal static string CompositionException_OriginSeparator {
- get {
- return ResourceManager.GetString("CompositionException_OriginSeparator", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ).
- /// </summary>
- internal static string CompositionException_PathsCountSeparator {
- get {
- return ResourceManager.GetString("CompositionException_PathsCountSeparator", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Review the CompositionException.Errors property for more detailed information..
- /// </summary>
- internal static string CompositionException_ReviewErrorProperty {
- get {
- return ResourceManager.GetString("CompositionException_ReviewErrorProperty", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition produced a single composition error, with {0:N0} root causes. The root causes are provided below..
- /// </summary>
- internal static string CompositionException_SingleErrorWithMultiplePaths {
- get {
- return ResourceManager.GetString("CompositionException_SingleErrorWithMultiplePaths", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition produced a single composition error. The root cause is provided below..
- /// </summary>
- internal static string CompositionException_SingleErrorWithSinglePath {
- get {
- return ResourceManager.GetString("CompositionException_SingleErrorWithSinglePath", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The catalog '{0}' could not load assembly '{1}'. {2}.
- /// </summary>
- internal static string CompositionTrace_Discovery_AssemblyLoadFailed {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_AssemblyLoadFailed", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' was ignored because it is an open generic type..
- /// </summary>
- internal static string CompositionTrace_Discovery_DefinitionContainsGenericParameters {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_DefinitionContainsGenericParameters", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' was ignored because it contains no exports..
- /// </summary>
- internal static string CompositionTrace_Discovery_DefinitionContainsNoExports {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_DefinitionContainsNoExports", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' was ignored because it was marked with PartNotDiscoverableAttribute..
- /// </summary>
- internal static string CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The member or parameter '{0}' is marked with multiple Import and ImportMany attributes. Only the first attribute encountered will be respected..
- /// </summary>
- internal static string CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany {
- get {
- return ResourceManager.GetString("CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' has been rejected. {1}.
- /// </summary>
- internal static string CompositionTrace_Rejection_DefinitionRejected {
- get {
- return ResourceManager.GetString("CompositionTrace_Rejection_DefinitionRejected", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePartDefinition '{0}' that was previously rejected has been resurrected..
- /// </summary>
- internal static string CompositionTrace_Rejection_DefinitionResurrected {
- get {
- return ResourceManager.GetString("CompositionTrace_Rejection_DefinitionResurrected", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot cast the underlying exported value of type '{0}' to type '{1}'..
- /// </summary>
- internal static string ContractMismatch_ExportedValueCannotBeCastToT {
- get {
- return ResourceManager.GetString("ContractMismatch_ExportedValueCannotBeCastToT", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with the value '{2}' as type '{3}' but the view imports it as type '{4}'..
- /// </summary>
- internal static string ContractMismatch_InvalidCastOnMetadataField {
- get {
- return ResourceManager.GetString("ContractMismatch_InvalidCastOnMetadataField", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with a null value and null is not a valid value for type '{2}'..
- /// </summary>
- internal static string ContractMismatch_NullReferenceOnMetadataField {
- get {
- return ResourceManager.GetString("ContractMismatch_NullReferenceOnMetadataField", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Directory '{0}' could not be found..
- /// </summary>
- internal static string DirectoryNotFound {
- get {
- return ResourceManager.GetString("DirectoryNotFound", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Member or Type '{0}' contains multiple metadata entries with the name '{1}'. The metadata entries could be coming from the ExportMetadataAttribute or from a property of a custom metadata attribute. Either remove the duplicate entries or enable the metadata entry with name '{1}' to allow multiple entries via the IsMultiple property on ExportMetadataAttribute or AttributeUsage.AllowMultiple on custom metadata attributes..
- /// </summary>
- internal static string Discovery_DuplicateMetadataNameValues {
- get {
- return ResourceManager.GetString("Discovery_DuplicateMetadataNameValues", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Property '{0}' has type '{1}' which is an invalid metadata type. Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification..
- /// </summary>
- internal static string Discovery_MetadataContainsValueWithInvalidType {
- get {
- return ResourceManager.GetString("Discovery_MetadataContainsValueWithInvalidType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Member or Type '{0}' contains a metadata entry with the name '{1}', which is a reserved metadata key name. Either remove this metadata entry or change the name associated with the entry..
- /// </summary>
- internal static string Discovery_ReservedMetadataNameUsed {
- get {
- return ResourceManager.GetString("Discovery_ReservedMetadataNameUsed", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} did not originate from the ExportDefinitions property on this ComposablePart or its ComposablePartDefinition..
- /// </summary>
- internal static string ExportDefinitionNotOnThisComposablePart {
- get {
- return ResourceManager.GetString("ExportDefinitionNotOnThisComposablePart", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} did not originate from the ImportDefinitions property on this ComposablePart or its ComposablePartDefinition..
- /// </summary>
- internal static string ImportDefinitionNotOnThisComposablePart {
- get {
- return ResourceManager.GetString("ImportDefinitionNotOnThisComposablePart", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The composition failed because it did not complete within '{0:N0}' iterations. This is most likely caused by a cycle in the dependency graph of a part which is marked with a non-shared creation policy..
- /// </summary>
- internal static string ImportEngine_ComposeTookTooManyIterations {
- get {
- return ResourceManager.GetString("ImportEngine_ComposeTookTooManyIterations", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The ComposablePart of type '{0}' cannot be recomposed because it is in an invalid state. It can only be recomposed if it has already been fully previewed or composed..
- /// </summary>
- internal static string ImportEngine_InvalidStateForRecomposition {
- get {
- return ResourceManager.GetString("ImportEngine_InvalidStateForRecomposition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot activate part '{0}'..
- /// </summary>
- internal static string ImportEngine_PartCannotActivate {
- get {
- return ResourceManager.GetString("ImportEngine_PartCannotActivate", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot get export '{0}' from part '{1}'..
- /// </summary>
- internal static string ImportEngine_PartCannotGetExportedValue {
- get {
- return ResourceManager.GetString("ImportEngine_PartCannotGetExportedValue", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot set import '{0}' on part '{1}'..
- /// </summary>
- internal static string ImportEngine_PartCannotSetImport {
- get {
- return ResourceManager.GetString("ImportEngine_PartCannotSetImport", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot compose part '{0}' because a cycle exists in the dependencies between the exports being composed. To break this cycle, consider changing some imports from constructor to property injection..
- /// </summary>
- internal static string ImportEngine_PartCycle {
- get {
- return ResourceManager.GetString("ImportEngine_PartCycle", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Change in exports prevented by non-recomposable import '{0}' on part '{1}'..
- /// </summary>
- internal static string ImportEngine_PreventedByExistingImport {
- get {
- return ResourceManager.GetString("ImportEngine_PreventedByExistingImport", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Could not finishing composing object of type '{0}'. The import '{1}' was not satisfied..
- /// </summary>
- internal static string ImportNotSetOnPart {
- get {
- return ResourceManager.GetString("ImportNotSetOnPart", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Internal error occurred. Additional information: '{0}'..
- /// </summary>
- internal static string InternalExceptionMessage {
- get {
- return ResourceManager.GetString("InternalExceptionMessage", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification..
- /// </summary>
- internal static string InvalidMetadataValue {
- get {
- return ResourceManager.GetString("InvalidMetadataValue", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The Type '{0}' supplied is not a valid Metadata View..
- /// </summary>
- internal static string InvalidMetadataView {
- get {
- return ResourceManager.GetString("InvalidMetadataView", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to 'definition' cannot be set after Activate has been called because ImportDefinition.IsRecomposable is false..
- /// </summary>
- internal static string InvalidOperation_DefinitionCannotBeRecomposed {
- get {
- return ResourceManager.GetString("InvalidOperation_DefinitionCannotBeRecomposed", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to GetExportedValue cannot be called before prerequisite import '{0}' has been set..
- /// </summary>
- internal static string InvalidOperation_GetExportedValueBeforePrereqImportSet {
- get {
- return ResourceManager.GetString("InvalidOperation_GetExportedValueBeforePrereqImportSet", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A call to Compose occurred during a call to Compose on the same CompositionContainer object. Use the IsComposing property on CompositionContainer to ensure a composition is not already in progress before calling Compose..
- /// </summary>
- internal static string InvalidOperationReentrantCompose {
- get {
- return ResourceManager.GetString("InvalidOperationReentrantCompose", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The MetadataView '{0}' is invalid because property '{1}' has a property set method..
- /// </summary>
- internal static string InvalidSetterOnMetadataField {
- get {
- return ResourceManager.GetString("InvalidSetterOnMetadataField", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Accessors must not be null (Nothing in Visual Basic)..
- /// </summary>
- internal static string LazyMemberInfo_AccessorsNull {
- get {
- return ResourceManager.GetString("LazyMemberInfo_AccessorsNull", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A member of type '{0}' must have exactly a single accessor of type '{0}'.
- /// </summary>
- internal static string LazyMemberInfo_InvalidAccessorOnSimpleMember {
- get {
- return ResourceManager.GetString("LazyMemberInfo_InvalidAccessorOnSimpleMember", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to All event accessors must be methods..
- /// </summary>
- internal static string LazyMemberinfo_InvalidEventAccessors_AccessorType {
- get {
- return ResourceManager.GetString("LazyMemberinfo_InvalidEventAccessors_AccessorType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An event must have exactly three accessors..
- /// </summary>
- internal static string LazyMemberInfo_InvalidEventAccessors_Cardinality {
- get {
- return ResourceManager.GetString("LazyMemberInfo_InvalidEventAccessors_Cardinality", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to All property accessors must be methods..
- /// </summary>
- internal static string LazyMemberinfo_InvalidPropertyAccessors_AccessorType {
- get {
- return ResourceManager.GetString("LazyMemberinfo_InvalidPropertyAccessors_AccessorType", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A property must have exactly two accessors..
- /// </summary>
- internal static string LazyMemberInfo_InvalidPropertyAccessors_Cardinality {
- get {
- return ResourceManager.GetString("LazyMemberInfo_InvalidPropertyAccessors_Cardinality", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to A member must have at least one accessor..
- /// </summary>
- internal static string LazyMemberInfo_NoAccessors {
- get {
- return ResourceManager.GetString("LazyMemberInfo_NoAccessors", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The lazily evaluated value of type '{0}' passed to the ReflectionModelServices API as part of the argument '{1}' must not return null (Nothing in Visual Basic)..
- /// </summary>
- internal static string LazyServices_LazyResolvesToNull {
- get {
- return ResourceManager.GetString("LazyServices_LazyResolvesToNull", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to This export does not support the metadata item '{0}'..
- /// </summary>
- internal static string MetadataItemNotSupported {
- get {
- return ResourceManager.GetString("MetadataItemNotSupported", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The {0} member must be overridden by a derived class..
- /// </summary>
- internal static string NotImplemented_NotOverriddenByDerived {
- get {
- return ResourceManager.GetString("NotImplemented_NotOverriddenByDerived", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Interface '{0}' is not a valid MetadataView; MetadataViews do not support non-public interfaces, and interfaces that contain members that are not properties..
- /// </summary>
- internal static string NotSupportedInterfaceMetadataView {
- get {
- return ResourceManager.GetString("NotSupportedInterfaceMetadataView", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The underlying dictionary is read-only..
- /// </summary>
- internal static string NotSupportedReadOnlyDictionary {
- get {
- return ResourceManager.GetString("NotSupportedReadOnlyDictionary", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to This property cannot be set after the object's public surface has been accessed..
- /// </summary>
- internal static string ObjectAlreadyInitialized {
- get {
- return ResourceManager.GetString("ObjectAlreadyInitialized", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to This object has not been initialized - the property '{0}' must be set..
- /// </summary>
- internal static string ObjectMustBeInitialized {
- get {
- return ResourceManager.GetString("ObjectMustBeInitialized", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Currently composing another batch in this ComposablePartExportProvider. Only one batch can be composed at a time..
- /// </summary>
- internal static string ReentrantCompose {
- get {
- return ResourceManager.GetString("ReentrantCompose", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot get the value of property '{0}', because the member is not readable. The property must have an accessible getter..
- /// </summary>
- internal static string ReflectionModel_ExportNotReadable {
- get {
- return ResourceManager.GetString("ReflectionModel_ExportNotReadable", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while trying to get the value of property '{0}'..
- /// </summary>
- internal static string ReflectionModel_ExportThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ExportThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while calling the Add method on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionAddThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionAddThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while calling the Clear method on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionClearThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionClearThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while calling the default constructor on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionConstructionThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionConstructionThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while trying to access the collection value. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionGetThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionGetThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because an exception occurred while reading the IsReadOnly property on the type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionIsReadOnlyThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionIsReadOnlyThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the collection '{0}' because it does not implement ICollection<T> or is read-only. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionNotWritable {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionNotWritable", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot populate the value of enumerable member '{0}' because it is null (Nothing in Visual Basic). If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor..
- /// </summary>
- internal static string ReflectionModel_ImportCollectionNull {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportCollectionNull", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The importing constructor on type '{0}' is using ImportManyAttribute on parameter '{1}' with a non-assignable type. On constructor parameters the ImportManyAttribute only supports importing into types T[] or IEnumerable<T>..
- /// </summary>
- internal static string ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to The export '{0}' is not assignable to type '{1}'..
- /// </summary>
- internal static string ReflectionModel_ImportNotAssignableFromExport {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportNotAssignableFromExport", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot set the value of '{0}' because the member is not writable. If the member is a property, it must have an accessible setter; otherwise, if it is a field, it must not be read-only..
- /// </summary>
- internal static string ReflectionModel_ImportNotWritable {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportNotWritable", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while trying to set the value of property '{0}'..
- /// </summary>
- internal static string ReflectionModel_ImportThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_ImportThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ExportDefinition of type '{0}' cannot be used in this context. Only export definitions produced by the ReflectionModelServices.CreateExportDefinition are supported..
- /// </summary>
- internal static string ReflectionModel_InvalidExportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidExportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition are supported..
- /// </summary>
- internal static string ReflectionModel_InvalidImportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidImportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on members are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter..
- /// </summary>
- internal static string ReflectionModel_InvalidMemberImportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidMemberImportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on parameters are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter..
- /// </summary>
- internal static string ReflectionModel_InvalidParameterImportDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidParameterImportDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to ComposablePartDefinition of type '{0}' cannot be used in this context. Only part definitions produced by the ReflectionModelServices.CreatePartDefinition are supported..
- /// </summary>
- internal static string ReflectionModel_InvalidPartDefinition {
- get {
- return ResourceManager.GetString("ReflectionModel_InvalidPartDefinition", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to Cannot create an instance of type '{0}' because a constructor could not be selected for construction. Ensure that the type either has a default constructor, or a single constructor marked with the 'System.ComponentModel.Composition.ImportingConstructorAttribute'..
- /// </summary>
- internal static string ReflectionModel_PartConstructorMissing {
- get {
- return ResourceManager.GetString("ReflectionModel_PartConstructorMissing", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while trying to create an instance of type '{0}'..
- /// </summary>
- internal static string ReflectionModel_PartConstructorThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_PartConstructorThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to An exception occurred while calling the 'OnImportsSatisfied' method on type '{0}'..
- /// </summary>
- internal static string ReflectionModel_PartOnImportsSatisfiedThrewException {
- get {
- return ResourceManager.GetString("ReflectionModel_PartOnImportsSatisfiedThrewException", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to {0} (Types='{1}')..
- /// </summary>
- internal static string TypeCatalog_DisplayNameFormat {
- get {
- return ResourceManager.GetString("TypeCatalog_DisplayNameFormat", resourceCulture);
- }
- }
-
- /// <summary>
- /// Looks up a localized string similar to <Empty>.
- /// </summary>
- internal static string TypeCatalog_Empty {
- get {
- return ResourceManager.GetString("TypeCatalog_Empty", resourceCulture);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/Strings.resources b/System.ComponentModel.Composition/Strings.resources
deleted file mode 100644
index a4fb52e..0000000
Binary files a/System.ComponentModel.Composition/Strings.resources and /dev/null differ
diff --git a/System.ComponentModel.Composition/Strings.resx b/System.ComponentModel.Composition/Strings.resx
deleted file mode 100644
index 4031dfb..0000000
--- a/System.ComponentModel.Composition/Strings.resx
+++ /dev/null
@@ -1,408 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <data name="ArgumentException_EmptyString" xml:space="preserve">
- <value>'{0}' cannot be an empty string ("").</value>
- </data>
- <data name="ArgumentOutOfRange_InvalidEnum" xml:space="preserve">
- <value>The value of argument '{0}' ({1}) is invalid for Enum type '{2}'.</value>
- </data>
- <data name="ArgumentValueType" xml:space="preserve">
- <value>The argument was a value type which is not supported.</value>
- </data>
- <data name="Argument_AssemblyReflectionOnly" xml:space="preserve">
- <value>'{0}' is a reflection-only assembly which is not supported.</value>
- </data>
- <data name="Argument_NullElement" xml:space="preserve">
- <value>'{0}' cannot contain a null (Nothing in Visual Basic) element.</value>
- </data>
- <data name="AssemblyFileNotFoundOrWrongType" xml:space="preserve">
- <value>Assembly file {0} is either not found or not a dll or exe file.</value>
- </data>
- <data name="CardinalityMismatch_NoExports" xml:space="preserve">
- <value>No valid exports were found that match the constraint '{0}', invalid exports may have been rejected.</value>
- </data>
- <data name="CardinalityMismatch_TooManyExports" xml:space="preserve">
- <value>More than one export was found that matches the constraint '{0}'.</value>
- </data>
- <data name="ImportEngine_ComposeTookTooManyIterations" xml:space="preserve">
- <value>The composition failed because it did not complete within '{0:N0}' iterations. This is most likely caused by a cycle in the dependency graph of a part which is marked with a non-shared creation policy.</value>
- </data>
- <data name="ContractMismatch_ExportedValueCannotBeCastToT" xml:space="preserve">
- <value>Cannot cast the underlying exported value of type '{0}' to type '{1}'.</value>
- </data>
- <data name="DirectoryNotFound" xml:space="preserve">
- <value>Directory '{0}' could not be found.</value>
- </data>
- <data name="ReflectionModel_PartConstructorThrewException" xml:space="preserve">
- <value>An exception occurred while trying to create an instance of type '{0}'.</value>
- </data>
- <data name="ReflectionModel_ExportThrewException" xml:space="preserve">
- <value>An exception occurred while trying to get the value of property '{0}'.</value>
- </data>
- <data name="ReflectionModel_PartOnImportsSatisfiedThrewException" xml:space="preserve">
- <value>An exception occurred while calling the 'OnImportsSatisfied' method on type '{0}'.</value>
- </data>
- <data name="ReflectionModel_ImportThrewException" xml:space="preserve">
- <value>An exception occurred while trying to set the value of property '{0}'.</value>
- </data>
- <data name="ExportDefinitionNotOnThisComposablePart" xml:space="preserve">
- <value>{0} did not originate from the ExportDefinitions property on this ComposablePart or its ComposablePartDefinition.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionNotWritable" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because it does not implement ICollection<T> or is read-only. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionNull" xml:space="preserve">
- <value>Cannot populate the value of enumerable member '{0}' because it is null (Nothing in Visual Basic). If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor.</value>
- </data>
- <data name="ImportEngine_PartCycle" xml:space="preserve">
- <value>Cannot compose part '{0}' because a cycle exists in the dependencies between the exports being composed. To break this cycle, consider changing some imports from constructor to property injection.</value>
- </data>
- <data name="ImportDefinitionNotOnThisComposablePart" xml:space="preserve">
- <value>{0} did not originate from the ImportDefinitions property on this ComposablePart or its ComposablePartDefinition.</value>
- </data>
- <data name="ImportNotSetOnPart" xml:space="preserve">
- <value>Could not finishing composing object of type '{0}'. The import '{1}' was not satisfied.</value>
- </data>
- <data name="ReflectionModel_ImportNotWritable" xml:space="preserve">
- <value>Cannot set the value of '{0}' because the member is not writable. If the member is a property, it must have an accessible setter; otherwise, if it is a field, it must not be read-only.</value>
- </data>
- <data name="InternalExceptionMessage" xml:space="preserve">
- <value>Internal error occurred. Additional information: '{0}'.</value>
- </data>
- <data name="InvalidMetadataView" xml:space="preserve">
- <value>The Type '{0}' supplied is not a valid Metadata View.</value>
- </data>
- <data name="InvalidOperationReentrantCompose" xml:space="preserve">
- <value>A call to Compose occurred during a call to Compose on the same CompositionContainer object. Use the IsComposing property on CompositionContainer to ensure a composition is not already in progress before calling Compose.</value>
- </data>
- <data name="MetadataItemNotSupported" xml:space="preserve">
- <value>This export does not support the metadata item '{0}'.</value>
- </data>
- <data name="NotSupportedInterfaceMetadataView" xml:space="preserve">
- <value>Interface '{0}' is not a valid MetadataView; MetadataViews do not support non-public interfaces, and interfaces that contain members that are not properties.</value>
- </data>
- <data name="ReflectionModel_PartConstructorMissing" xml:space="preserve">
- <value>Cannot create an instance of type '{0}' because a constructor could not be selected for construction. Ensure that the type either has a default constructor, or a single constructor marked with the 'System.ComponentModel.Composition.ImportingConstructorAttribute'.</value>
- </data>
- <data name="NotImplemented_NotOverriddenByDerived" xml:space="preserve">
- <value>The {0} member must be overridden by a derived class.</value>
- </data>
- <data name="NotSupportedReadOnlyDictionary" xml:space="preserve">
- <value>The underlying dictionary is read-only.</value>
- </data>
- <data name="ObjectAlreadyInitialized" xml:space="preserve">
- <value>This property cannot be set after the object's public surface has been accessed.</value>
- </data>
- <data name="ObjectMustBeInitialized" xml:space="preserve">
- <value>This object has not been initialized - the property '{0}' must be set.</value>
- </data>
- <data name="ReflectionModel_ImportNotAssignableFromExport" xml:space="preserve">
- <value>The export '{0}' is not assignable to type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ExportNotReadable" xml:space="preserve">
- <value>Cannot get the value of property '{0}', because the member is not readable. The property must have an accessible getter.</value>
- </data>
- <data name="Argument_ElementReflectionOnlyType" xml:space="preserve">
- <value>'{0}' contains a reflection-only type which is not supported.</value>
- </data>
- <data name="InvalidOperation_DefinitionCannotBeRecomposed" xml:space="preserve">
- <value>'definition' cannot be set after Activate has been called because ImportDefinition.IsRecomposable is false.</value>
- </data>
- <data name="Argument_ExportsEmpty" xml:space="preserve">
- <value>'exports' cannot be empty when ImportDefinition.ImportCardinality is ImportCardinality.ExactlyOne.</value>
- </data>
- <data name="Argument_ExportsTooMany" xml:space="preserve">
- <value>'exports' cannot contain more than one element when ImportDefinition.ImportCardinality is ImportCardinality.ZeroOrOne or ImportCardinality.ExactlyOne.</value>
- </data>
- <data name="CompositionElement_UnknownOrigin" xml:space="preserve">
- <value>Unknown Origin</value>
- </data>
- <data name="ImportEngine_PartCannotActivate" xml:space="preserve">
- <value>Cannot activate part '{0}'.</value>
- </data>
- <data name="ImportEngine_PartCannotSetImport" xml:space="preserve">
- <value>Cannot set import '{0}' on part '{1}'.</value>
- </data>
- <data name="ImportEngine_PartCannotGetExportedValue" xml:space="preserve">
- <value>Cannot get export '{0}' from part '{1}'.</value>
- </data>
- <data name="TypeCatalog_Empty" xml:space="preserve">
- <value><Empty></value>
- </data>
- <data name="InvalidOperation_GetExportedValueBeforePrereqImportSet" xml:space="preserve">
- <value>GetExportedValue cannot be called before prerequisite import '{0}' has been set.</value>
- </data>
- <data name="CompositionException_ErrorPrefix" xml:space="preserve">
- <value>Resulting in:</value>
- </data>
- <data name="CompositionException_MultipleErrorsWithMultiplePaths" xml:space="preserve">
- <value>The composition produced multiple composition errors, with {0:N0} root causes. The root causes are provided below.</value>
- </data>
- <data name="CompositionException_ReviewErrorProperty" xml:space="preserve">
- <value>Review the CompositionException.Errors property for more detailed information.</value>
- </data>
- <data name="CompositionException_SingleErrorWithMultiplePaths" xml:space="preserve">
- <value>The composition produced a single composition error, with {0:N0} root causes. The root causes are provided below.</value>
- </data>
- <data name="CompositionException_SingleErrorWithSinglePath" xml:space="preserve">
- <value>The composition produced a single composition error. The root cause is provided below.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionGetThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while trying to access the collection value. If the collection is not IEnumerable<T> or T[] it must implement ICollection<T> and be either pre-initialized or be writable with a default constructor.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionAddThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while calling the Add method on the type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionClearThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while calling the Clear method on the type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionIsReadOnlyThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while reading the IsReadOnly property on the type '{1}'.</value>
- </data>
- <data name="ReflectionModel_ImportCollectionConstructionThrewException" xml:space="preserve">
- <value>Cannot populate the collection '{0}' because an exception occurred while calling the default constructor on the type '{1}'.</value>
- </data>
- <data name="CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany" xml:space="preserve">
- <value>The member or parameter '{0}' is marked with multiple Import and ImportMany attributes. Only the first attribute encountered will be respected.</value>
- </data>
- <data name="Discovery_MetadataContainsValueWithInvalidType" xml:space="preserve">
- <value>Property '{0}' has type '{1}' which is an invalid metadata type. Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification.</value>
- </data>
- <data name="Discovery_DuplicateMetadataNameValues" xml:space="preserve">
- <value>Member or Type '{0}' contains multiple metadata entries with the name '{1}'. The metadata entries could be coming from the ExportMetadataAttribute or from a property of a custom metadata attribute. Either remove the duplicate entries or enable the metadata entry with name '{1}' to allow multiple entries via the IsMultiple property on ExportMetadataAttribute or AttributeUsage.AllowMultiple on custom metadata attributes.</value>
- </data>
- <data name="Discovery_ReservedMetadataNameUsed" xml:space="preserve">
- <value>Member or Type '{0}' contains a metadata entry with the name '{1}', which is a reserved metadata key name. Either remove this metadata entry or change the name associated with the entry.</value>
- </data>
- <data name="ReflectionModel_InvalidExportDefinition" xml:space="preserve">
- <value>ExportDefinition of type '{0}' cannot be used in this context. Only export definitions produced by the ReflectionModelServices.CreateExportDefinition are supported.</value>
- </data>
- <data name="ImportEngine_PreventedByExistingImport" xml:space="preserve">
- <value>Change in exports prevented by non-recomposable import '{0}' on part '{1}'.</value>
- </data>
- <data name="ReflectionModel_InvalidImportDefinition" xml:space="preserve">
- <value>ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition are supported.</value>
- </data>
- <data name="ReflectionModel_InvalidPartDefinition" xml:space="preserve">
- <value>ComposablePartDefinition of type '{0}' cannot be used in this context. Only part definitions produced by the ReflectionModelServices.CreatePartDefinition are supported.</value>
- </data>
- <data name="ArgumentOutOfRange_InvalidEnumInSet" xml:space="preserve">
- <value>The value of argument '{0}' ({1}) is not supported. Allowed values are : '{2}'.</value>
- </data>
- <data name="ReflectionModel_InvalidMemberImportDefinition" xml:space="preserve">
- <value>ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on members are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter.</value>
- </data>
- <data name="ReflectionModel_InvalidParameterImportDefinition" xml:space="preserve">
- <value>ImportDefinition of type '{0}' cannot be used in this context. Only import definitions produced by the ReflectionModelServices.CreateImportDefinition based on parameters are supported. Use ReflectionModelServices.IsImportingParameter to determine whether a given import definition is based on a member or a parameter.</value>
- </data>
- <data name="LazyMemberInfo_AccessorsNull" xml:space="preserve">
- <value>Accessors must not be null (Nothing in Visual Basic).</value>
- </data>
- <data name="LazyMemberInfo_InvalidAccessorOnSimpleMember" xml:space="preserve">
- <value>A member of type '{0}' must have exactly a single accessor of type '{0}'</value>
- </data>
- <data name="LazyMemberinfo_InvalidEventAccessors_AccessorType" xml:space="preserve">
- <value>All event accessors must be methods.</value>
- </data>
- <data name="LazyMemberInfo_InvalidEventAccessors_Cardinality" xml:space="preserve">
- <value>An event must have exactly three accessors.</value>
- </data>
- <data name="LazyMemberinfo_InvalidPropertyAccessors_AccessorType" xml:space="preserve">
- <value>All property accessors must be methods.</value>
- </data>
- <data name="LazyMemberInfo_InvalidPropertyAccessors_Cardinality" xml:space="preserve">
- <value>A property must have exactly two accessors.</value>
- </data>
- <data name="LazyMemberInfo_NoAccessors" xml:space="preserve">
- <value>A member must have at least one accessor.</value>
- </data>
- <data name="LazyServices_LazyResolvesToNull" xml:space="preserve">
- <value>The lazily evaluated value of type '{0}' passed to the ReflectionModelServices API as part of the argument '{1}' must not return null (Nothing in Visual Basic).</value>
- </data>
- <data name="InvalidMetadataValue" xml:space="preserve">
- <value>Metadata can only contain values with a type that is available to be embedded at compile-time into attributes. For more details of what types are valid reference section 17.1.3 in the C# specification.</value>
- </data>
- <data name="ContractMismatch_InvalidCastOnMetadataField" xml:space="preserve">
- <value>Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with the value '{2}' as type '{3}' but the view imports it as type '{4}'.</value>
- </data>
- <data name="ContractMismatch_NullReferenceOnMetadataField" xml:space="preserve">
- <value>Unable to create an Instance of the Metadata view '{0}' because the exporter exported the metadata for the item '{1}' with a null value and null is not a valid value for type '{2}'.</value>
- </data>
- <data name="InvalidSetterOnMetadataField" xml:space="preserve">
- <value>The MetadataView '{0}' is invalid because property '{1}' has a property set method.</value>
- </data>
- <data name="CompositionException_ChangesRejected" xml:space="preserve">
- <value>The composition remains unchanged. The changes were rejected because of the following error(s): {0}</value>
- </data>
- <data name="ImportEngine_InvalidStateForRecomposition" xml:space="preserve">
- <value>The ComposablePart of type '{0}' cannot be recomposed because it is in an invalid state. It can only be recomposed if it has already been fully previewed or composed.</value>
- </data>
- <data name="AtomicComposition_AlreadyCompleted" xml:space="preserve">
- <value>The atomicComposition can no longer be changed because the atomicComposition has already been completed.</value>
- </data>
- <data name="AtomicComposition_PartOfAnotherAtomicComposition" xml:space="preserve">
- <value>The atomicComposition contains another inner atomicComposition and cannot be changed until the that inner atomicComposition has been completed.</value>
- </data>
- <data name="AtomicComposition_AlreadyNested" xml:space="preserve">
- <value>The atomicComposition is already contains an inner atomicComposition and cannot contain more than one atomicComposition at a time.</value>
- </data>
- <data name="ReentrantCompose" xml:space="preserve">
- <value>Currently composing another batch in this ComposablePartExportProvider. Only one batch can be composed at a time.</value>
- </data>
- <data name="ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned" xml:space="preserve">
- <value>The importing constructor on type '{0}' is using ImportManyAttribute on parameter '{1}' with a non-assignable type. On constructor parameters the ImportManyAttribute only supports importing into types T[] or IEnumerable<T>.</value>
- </data>
- <data name="CompositionException_ElementPrefix" xml:space="preserve">
- <value>Element: {0}</value>
- </data>
- <data name="CompositionException_OriginSeparator" xml:space="preserve">
- <value>--> </value>
- </data>
- <data name="CompositionTrace_Rejection_DefinitionRejected" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' has been rejected. {1}</value>
- </data>
- <data name="CompositionTrace_Rejection_DefinitionResurrected" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' that was previously rejected has been resurrected.</value>
- </data>
- <data name="CompositionTrace_Discovery_AssemblyLoadFailed" xml:space="preserve">
- <value>The catalog '{0}' could not load assembly '{1}'. {2}</value>
- </data>
- <data name="CompositionTrace_Discovery_DefinitionContainsGenericParameters" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' was ignored because it is an open generic type.</value>
- </data>
- <data name="CompositionTrace_Discovery_DefinitionContainsNoExports" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' was ignored because it contains no exports.</value>
- </data>
- <data name="CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute" xml:space="preserve">
- <value>The ComposablePartDefinition '{0}' was ignored because it was marked with PartNotDiscoverableAttribute.</value>
- </data>
- <data name="CompositionException_MetadataViewInvalidConstructor" xml:space="preserve">
- <value>Unable to create an instance of the Metadata view '{0}' because a constructor could not be selected. Ensure that the type implements a constructor which takes an argument of type IDictionary<string, object>.</value>
- </data>
- <data name="CompositionException_PathsCountSeparator" xml:space="preserve">
- <value>)</value>
- </data>
- <data name="CompositionException_OriginFormat" xml:space="preserve">
- <value> {0} {1}</value>
- </data>
- <data name="TypeCatalog_DisplayNameFormat" xml:space="preserve">
- <value>{0} (Types='{1}').</value>
- </data>
-</root>
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/SuppressMessages.cs b/System.ComponentModel.Composition/SuppressMessages.cs
deleted file mode 100644
index 4c57e17..0000000
--- a/System.ComponentModel.Composition/SuppressMessages.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "System.ComponentModel.Composition.ReflectionModel")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "System")]
-[assembly: SuppressMessage("Microsoft.MSInternal", "CA905:SystemNamespacesRequireApproval", Scope = "namespace", Target = "System.ComponentModel.Composition.ReflectionModel", Justification = "Approved by Framework")]
-
diff --git a/System.ComponentModel.Composition/SuppressMessagesBaselined.cs b/System.ComponentModel.Composition/SuppressMessagesBaselined.cs
deleted file mode 100644
index 3976948..0000000
--- a/System.ComponentModel.Composition/SuppressMessagesBaselined.cs
+++ /dev/null
@@ -1,659 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-// The following are untriaged violations, do not add to this list unless you hit a bug in Code Analysis. Any explicitly
-// suppressed violations should either be applied against the member or type itself, or if raised against a namespace,
-// resource or assembly, placed in SuppressMessages.cs.
-
-// Code Analysis Bug: ValidateArgumentsOfPublicMethods should not fire on protected members
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-
-// Code Analysis Bug: ValidateArgumentsOfPublicMethods should not fire on usage of Requires.NotNull
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionBatch,System.String,!!0)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddPart(System.ComponentModel.Composition.Hosting.CompositionBatch,System.Object)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionContainer,System.String,!!0)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionContainer,!!0)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeParts(System.ComponentModel.Composition.Hosting.CompositionContainer,System.Object[])")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#SatisfyImportsOnce(System.ComponentModel.Composition.ICompositionService,System.Object)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#SourceProvider")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Compose(System.ComponentModel.Composition.Hosting.CompositionBatch)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`2(System.Collections.Generic.IEnumerable`1<System.Lazy`2<!!0,!!1>>)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`1(System.Collections.Generic.IEnumerable`1<System.Lazy`1<!!0>>)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#IsConstraintSatisfiedBy(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#OnExportsChanged(System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#OnExportsChanging(System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#.ctor(System.ComponentModel.Composition.Hosting.ExportProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#.ctor(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetExportingMember(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingMember(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetPartType(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsDisposalRequired(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-
-// DevDiv 10: 583413 AsmMeta: No longer finds APTCA bit on assemblies
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.Lazy`2", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.AttributedModelServices", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ChangeRejectedException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CompositionContractMismatchException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CompositionError", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CompositionException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.CreationPolicy", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ExportAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ExportMetadataAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportCardinalityMismatchException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportingConstructorAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ImportManyAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.InheritedExportAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.MetadataAttributeAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.PartCreationPolicyAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.PartMetadataAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.PartNotDiscoverableAttribute", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AdaptingExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CompositionConstants", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ExportProvider", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.ImportEngine", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.Export", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ExportDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePart", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePartDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ImportCardinality", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2117:AptcaTypesShouldOnlyExtendAptcaBaseTypes", Scope = "type", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices", Justification = "Razzle mscorlib is not APTCA")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Hosting.ExportProvider>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#.ctor(System.ComponentModel.Composition.Hosting.ExportProvider[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AggregateExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#.ctor(System.Reflection.Assembly,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#InnerCatalog")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalog.#LoadAssembly(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AssemblyCatalogDebuggerProxy.#.ctor(System.ComponentModel.Composition.Hosting.AssemblyCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Assumes+InternalErrorException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Assumes+InternalErrorException.#.ctor(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Assumes.#NotNullOrEmpty(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#AddCompleteAction(System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#AddRevertAction(System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#.ctor(System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#ContainsInnerAtomicComposition")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#CopyComplete()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#FinalComplete()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#SetValueInternal(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#ThrowIfCompleteed()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#ThrowIfContainsInnerAtomicComposition()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicComposition.#TryGetValueInternal`1(System.Object,System.Boolean,!!0&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicCompositionExtensions.#AddCompleteActionAllowNull(System.ComponentModel.Composition.Hosting.AtomicComposition,System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.AtomicCompositionExtensions.#AddRevertActionAllowNull(System.ComponentModel.Composition.Hosting.AtomicComposition,System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedExportDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedModelDiscovery.#CreatePart(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedModelDiscovery.#GetImportDefinitionCreationInfo(System.ComponentModel.Composition.ReflectionModel.ReflectionItem,System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionBatch,System.String,!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#AddExportedValue`1(System.ComponentModel.Composition.Hosting.CompositionBatch,!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModelServices.#ComposeParts(System.ComponentModel.Composition.Hosting.CompositionContainer,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#.ctor(System.Type,System.ComponentModel.Composition.PartCreationPolicyAttribute,System.Boolean,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetExportDefinitions()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetImportDefinitions()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#GetLazyPartType()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#HasExports()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#IsDisposalRequired")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#IsPartDiscoverable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.AttributedModel.AttributedPartCreationInfo.#SelectPartConstructor(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetAttributes`1(System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetAttributes`1(System.Reflection.ICustomAttributeProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetFirstAttribute`1(System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#GetFirstAttribute`1(System.Reflection.ICustomAttributeProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#IsAttributeDefined`1(System.Reflection.ICustomAttributeProvider)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.AttributeServices.#IsAttributeDefined`1(System.Reflection.ICustomAttributeProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider+CatalogChangeProxy.#Parts")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#DetermineRejection(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#EnsureCanRun()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#EnsureCanSet`1(!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#EnsureRunning()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetAtomicCompositionQuery(System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetComposablePart(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#GetSharedPart(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#IsRejected(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#OnCatalogChanging(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#OnExportsChangingInternal(System.Object,System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#ReleasePart(System.Object,System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#SetConditionalReferenceForRecomposablePart(System.Object,System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#SourceProvider")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#UpdateAtomicCompositionQuery(System.ComponentModel.Composition.Hosting.AtomicComposition,System.Func`2<System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.Boolean>,System.ComponentModel.Composition.Hosting.CatalogExportProvider+AtomicCompositionQueryState)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CatalogExportProvider.#UpdateRejections(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ChangeRejectedException.#Message")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#AsArray`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#Add(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#.ctor(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1.#IsReadOnly")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#Add(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#.ctor(System.Collections.IList)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices+CollectionOfObjectList.#IsReadOnly")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#ConcatAllowingNull`1(System.Collections.Generic.IEnumerable`1<!!0>,System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#Copy`1(System.Collections.Generic.Stack`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#FastAny`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#ForEach`1(System.Collections.Generic.IEnumerable`1<!!0>,System.Action`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetCardinality`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetCollectionElementType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetCollectionWrapper(System.Type,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#GetEnumerableElementType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#ToReadOnlyCollection`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.CollectionServices.#WhereNotNull`1(System.Collections.Generic.IEnumerable`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePart.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Add(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Changed")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Changing")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>,System.Action`1<System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs>,System.Action`1<System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Contains(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#CopyTo(System.ComponentModel.Composition.Primitives.ComposablePartCatalog[],System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Count")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#GetEnumerator()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#HasChanged")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnChanged(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnChanging(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnContainedCatalogChanged(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#OnContainedCatalogChanging(System.Object,System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#RaiseChangedEvent(System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#RaiseChangingEvent(System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartDefinition>>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#SubscribeToCatalogNotifications(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#SubscribeToCatalogNotifications(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#UnsubscribeFromCatalogNotifications(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.#UnsubscribeFromCatalogNotifications(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePartCatalog>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartCatalogDebuggerProxy.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#.ctor(System.ComponentModel.Composition.CompositionErrorId,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ComposablePartException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#.ctor(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Compose(System.ComponentModel.Composition.Hosting.CompositionBatch)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#CreateExport(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#EnsureCanRun()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#EnsureCanSet`1(!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#EnsureRunning()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#GetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#GetUpdatedPartsList(System.ComponentModel.Composition.Hosting.CompositionBatch)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#Recompose(System.ComponentModel.Composition.Hosting.CompositionBatch,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#SourceProvider")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.#ThrowIfDisposed()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#AddPart(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePart>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ComposablePart>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#PartsToAdd")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#PartsToRemove")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch.#RemovePart(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionBatch+SingleExportComposablePart.#ImportDefinitions")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#.ctor(System.ComponentModel.Composition.Primitives.ComposablePartCatalog,System.Boolean,System.ComponentModel.Composition.Hosting.ExportProvider[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExport(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExport`1(System.Lazy`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`2(System.Collections.Generic.IEnumerable`1<System.Lazy`2<!!0,!!1>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionContainer.#ReleaseExports`1(System.Collections.Generic.IEnumerable`1<System.Lazy`1<!!0>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionContractMismatchException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionContractMismatchException.#.ctor(System.String,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.CompositionElement.#.ctor(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.CompositionElementDebuggerProxy.#.ctor(System.ComponentModel.Composition.Primitives.CompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.CompositionElementExtensions.#GetDisplayNameCore(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#.ctor(System.ComponentModel.Composition.CompositionErrorId,System.String,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#Create(System.ComponentModel.Composition.CompositionErrorId,System.ComponentModel.Composition.Primitives.ICompositionElement,System.Exception,System.String,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionError.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionErrorDebuggerProxy.#.ctor(System.ComponentModel.Composition.CompositionError)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#BuildDefaultMessage()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#CalculatePaths(System.ComponentModel.Composition.CompositionException)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#.ctor(System.String,System.Exception,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.CompositionError>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#Message")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#VisitCompositionException(System.ComponentModel.Composition.CompositionException,System.ComponentModel.Composition.CompositionException+VisitContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#VisitError(System.ComponentModel.Composition.CompositionError,System.ComponentModel.Composition.CompositionException+VisitContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#VisitException(System.Exception,System.ComponentModel.Composition.CompositionException+VisitContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WriteElementGraph(System.Text.StringBuilder,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WriteError(System.Text.StringBuilder,System.ComponentModel.Composition.CompositionError)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WriteHeader(System.Text.StringBuilder,System.Int32,System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WritePath(System.Text.StringBuilder,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.CompositionError>,System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException.#WritePaths(System.Text.StringBuilder,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.CompositionError>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#.ctor(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock+CompositionLockHolder.#.ctor(System.ComponentModel.Composition.Hosting.CompositionLock)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock+CompositionLockHolder.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock+EmptyLockHolder.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#EnterCompositionLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionLock.#ExitCompositionLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionResult.#Errors")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionResult`1.#Errors")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetContractNameFromExport(System.Reflection.MemberInfo,System.ComponentModel.Composition.ExportAttribute)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetContractNameFromImport(System.ComponentModel.Composition.IAttributedImport,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetContractTypeFromImport(System.ComponentModel.Composition.IAttributedImport,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetDefaultTypeFromMember(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetPartMetadataForType(System.Type,System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetRequiredMetadata(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetTypeIdentityFromExport(System.Reflection.MemberInfo,System.ComponentModel.Composition.ExportAttribute)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#GetTypeIdentityFromImport(System.ComponentModel.Composition.IAttributedImport,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#IsRecomposable(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#IsValidAttributeType(System.Type,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#Add(System.Object,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#InferArrayType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices+MetadataList.#ToArray()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryContributeMetadataValue(System.Collections.Generic.IDictionary`2<System.String,System.Object>,System.String,System.Object,System.Type,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryExportMetadataForMember(System.Reflection.MemberInfo,System.Collections.Generic.IDictionary`2<System.String,System.Object>&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryFire`1(System.EventHandler`1<!!0>,System.Object,!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryInvoke(System.Action)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.CompositionServices.#TryInvoke`1(System.Func`1<!!0>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.CompositionTrace.#AssemblyLoadFailed(System.ComponentModel.Composition.Hosting.DirectoryCatalog,System.String,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.CompositionTrace.#PartDefinitionRejected(System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.ComponentModel.Composition.ChangeRejectedException)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#AndAlso`1(System.Linq.Expressions.Expression`1<System.Func`2<!!0,System.Boolean>>,System.Linq.Expressions.Expression`1<System.Func`2<!!0,System.Boolean>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateConstraint(System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateConstraint(System.String,System.String,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>,System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateContractConstraintBody(System.String,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateCreationPolicyContraint(System.ComponentModel.Composition.CreationPolicy,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataConstraintBody(System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataContainsKeyExpression(System.Linq.Expressions.ParameterExpression,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataOfTypeExpression(System.Linq.Expressions.ParameterExpression,System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateMetadataValueEqualsExpression(System.Linq.Expressions.ParameterExpression,System.Object,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ConstraintServices.#CreateTypeIdentityContraint(System.String,System.Linq.Expressions.ParameterExpression)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#.ctor(System.String,System.String,System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.Type>>,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean,System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#IsConstraintSatisfiedBy(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#MatchRequiredMatadata(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#FindArrayElementType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#FindGenericTypeName(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#GetGenericArity(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#GetTypeIdentity(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#GetTypeIdentityFromMethod(System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#TypeIdentityCache")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteArrayType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteArrayTypeDimensions(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteByRefType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteCustomModifiers(System.Text.StringBuilder,System.String,System.Type[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteGenericType(System.Text.StringBuilder,System.Type,System.Boolean,System.Collections.Generic.Queue`1<System.Type>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteGenericTypeName(System.Text.StringBuilder,System.Type,System.Boolean,System.Collections.Generic.Queue`1<System.Type>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteNonGenericType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WritePointerType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteType(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteTypeArgumentsString(System.Text.StringBuilder,System.Int32,System.Boolean,System.Collections.Generic.Queue`1<System.Type>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ContractNameServices.#WriteTypeWithNamespace(System.Text.StringBuilder,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ContractServices.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ContractServices.#TryCast(System.Type,System.Object,System.Object&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Changed")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Changing")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#DiffChanges(System.String[],System.String[],System.Collections.Generic.List`1<System.Tuple`2<System.String,System.ComponentModel.Composition.Hosting.AssemblyCatalog>>&,System.Collections.Generic.List`1<System.Tuple`2<System.String,System.ComponentModel.Composition.Hosting.AssemblyCatalog>>&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog+DirectoryCatalogDebuggerProxy.#Assemblies")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog+DirectoryCatalogDebuggerProxy.#.ctor(System.ComponentModel.Composition.Hosting.DirectoryCatalog)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetFiles()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#GetFullPath(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Initialize(System.String,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#LoadedFiles")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#OnChanged(System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#OnChanging(System.ComponentModel.Composition.Hosting.ComposablePartCatalogChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.DirectoryCatalog.#Refresh()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.DisposableReflectionComposablePart.#System.IDisposable.Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.DisposableReflectionComposablePart.#ReleaseInstanceIfNecessary(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ErrorBuilder.#CreateImportCardinalityMismatch(System.ComponentModel.Composition.ImportCardinalityMismatchException,System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateContainsNullElement(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateDiscoveryException(System.String,System.String[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateExportDefinitionNotOnThisComposablePart(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateImportDefinitionNotOnThisComposablePart(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateNotOverriddenByDerived(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#CreateObjectDisposed(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExceptionBuilder.#Format(System.String,System.String[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#.ctor(System.ComponentModel.Composition.Primitives.ExportDefinition,System.Func`1<System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#GetExportedValueCore()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.Export.#Value")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportAttribute.#.ctor(System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportDefinition.#.ctor(System.String,System.Collections.Generic.IDictionary`2<System.String,System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#ConvertMethodInfoToFuncOrActionType(System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#CreateDelegate(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ExportedDelegate.#.ctor(System.Object,System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ExportingMember.#EnsureReadable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ExportingMember.#.ctor(System.ComponentModel.Composition.Primitives.ExportDefinition,System.ComponentModel.Composition.ReflectionModel.ReflectionMember)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ExportingMember.#GetExportedValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportMetadataAttribute.#.ctor(System.String,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#BuildImportDefinition(System.Type,System.Type,System.String,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#ExportsChanged")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#ExportsChanging")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportCore`2(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportCore`1(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportedValueCore`1(System.String,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportedValuesCore`1(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExports(System.Type,System.Type,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportsCore(System.Type,System.Type,System.String,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportsCore`2(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#GetExportsCore`1(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportProvider.#TryGetExportsCore(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs.#ChangedContractNames")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs.#.ctor(System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateSemiStronglyTypedExport`2(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateSemiStronglyTypedExportFactory(System.Type,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateStronglyTypedExportFactory(System.Type,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateStronglyTypedExportOfT`1(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#CreateStronglyTypedExportOfTM`2(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices+DisposableLazy`2.#System.IDisposable.Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices+DisposableLazy`1.#.ctor(System.Func`1<!0>,System.IDisposable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices+DisposableLazy`1.#System.IDisposable.Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#GetExportedValueFromLazy`1(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#IsDefaultMetadataViewType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ExportServices.#IsDictionaryConstructorViewType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#AddItemToLocalDictionary(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#AddLocalToLocalDictionary(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Object,System.Reflection.Emit.LocalBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#CreateGeneratorForPublicConstructor(System.Reflection.Emit.TypeBuilder,System.Type[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#GetExceptionDataAndStoreInLocal(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#IsBoxingRequiredForValue(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadDouble(System.Reflection.Emit.ILGenerator,System.Double)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadEnumerable(System.Reflection.Emit.ILGenerator,System.Collections.IEnumerable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadFloat(System.Reflection.Emit.ILGenerator,System.Single)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadInt(System.Reflection.Emit.ILGenerator,System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadLong(System.Reflection.Emit.ILGenerator,System.Int64)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadNull(System.Reflection.Emit.ILGenerator)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadString(System.Reflection.Emit.ILGenerator,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadTypeOf(System.Reflection.Emit.ILGenerator,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.GenerationServices.#LoadValue(System.Reflection.Emit.ILGenerator,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportAttribute.#.ctor(System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportCardinalityMismatchException.#.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportCardinalityMismatchException.#.ctor(System.String,System.Exception)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#.ctor(System.String,System.ComponentModel.Composition.Primitives.ImportCardinality,System.Boolean,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#IsConstraintSatisfiedBy(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ImportDefinition.#ToString()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#Dispose(System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#AddPartManager(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#Complete()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#.ctor(System.ComponentModel.Composition.Hosting.ImportEngine,System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+EngineContext.#RemovePartManager(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#GetEngineContext(System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#GetPartManager(System.ComponentModel.Composition.Primitives.ComposablePart,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#.ctor(System.ComponentModel.Composition.Hosting.ExportProvider,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#InPrerequisiteLoop()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#OnExportsChanging(System.Object,System.ComponentModel.Composition.Hosting.ExportsChangeEventArgs)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#DisposeAllDependencies()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#GetImportedContractNames()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#GetSavedImport(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#.ctor(System.ComponentModel.Composition.Hosting.ImportEngine,System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#SetSavedImport(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Primitives.Export[],System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#State")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+PartManager.#UpdateDisposableDependencies(System.ComponentModel.Composition.Primitives.ImportDefinition,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.Export>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#PreviewImports(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#AddIndexEntries(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#GetAffectedImports(System.ComponentModel.Composition.Primitives.ComposablePart,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#GetAffectedParts(System.Collections.Generic.IEnumerable`1<System.String>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#GetPartsImporting(System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#IsAffectedImport(System.ComponentModel.Composition.Primitives.ImportDefinition,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#RemoveIndexEntries(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine+RecompositionManager.#UpdateImportIndex()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#ReleaseImports(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#SatisfyImports(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#SatisfyImportsOnce(System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#StopSatisfyingImports(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TryPreviewImportsStateMachine(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TryRecomposeImport(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Boolean,System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TryRecomposeImports(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TrySatisfyImports(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TrySatisfyImportsStateMachine(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.ComponentModel.Composition.Primitives.ComposablePart)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.ImportEngine.#TrySatisfyImportSubset(System.ComponentModel.Composition.Hosting.ImportEngine+PartManager,System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ImportDefinition>,System.ComponentModel.Composition.Hosting.AtomicComposition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportingConstructorAttribute.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingItem.#Cast(System.Type,System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingItem.#CastExportsToCollectionImportType(System.ComponentModel.Composition.Primitives.Export[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingItem.#.ctor(System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition,System.ComponentModel.Composition.ReflectionModel.ImportType)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#EnsureCollectionIsWritable(System.Collections.Generic.ICollection`1<System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#EnsureWritable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#GetNormalizedCollection(System.Type,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#PopulateCollection(System.Collections.Generic.ICollection`1<System.Object>,System.Collections.IEnumerable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#SetCollectionMemberValue(System.Object,System.Collections.IEnumerable)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportingMember.#SetSingleMemberValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ImportManyAttribute.#.ctor(System.String,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#CreateLazyType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#GetStronglyTypedExport(System.ComponentModel.Composition.Primitives.Export)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#.ctor(System.Type,System.ComponentModel.Composition.Primitives.ImportCardinality)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType.#IsTypeAssignableCollectionType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ImportType+SpecificLazyType.#.ctor(System.Type,System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(System.Func`1<!0>,!1)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(System.Func`1<!0>,!1,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(!1)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.Lazy`2.#.ctor(!1,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#AreAccessorsValid(System.Reflection.MemberTypes,System.Reflection.MemberInfo[],System.String&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#Equals(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#GetAccessors()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#GetHashCode()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#.ctor(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#.ctor(System.Reflection.MemberTypes,System.Reflection.MemberInfo[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#op_Inequality(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo.#op_Equality(System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.LazyServices.#AsLazy`1(!!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.LazyServices.#GetNotNullValue`1(System.Lazy`1<!!0>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#EnterReadLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#EnterWriteLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#ExitReadLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#ExitWriteLock()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Lock.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataAttributeAttribute.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataServices.#GetValue`1(System.Collections.Generic.IDictionary`2<System.String,System.Object>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateFieldAssignmentFromLocalValue(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.FieldBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateInterfaceViewProxyType(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateLocalAssignmentFromDefaultAttribute(System.Reflection.Emit.ILGenerator,System.ComponentModel.DefaultValueAttribute[],System.Reflection.Emit.LocalBuilder)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateLocalAssignmentFromFlag(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#GenerateView(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewGenerator.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewProvider.#GetMetadataView`1(System.Collections.Generic.IDictionary`2<System.String,System.Object>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.MetadataViewProvider.#IsViewTypeValid(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.PartCreationPolicyAttribute.#.ctor(System.ComponentModel.Composition.CreationPolicy)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.PartMetadataAttribute.#.ctor(System.String,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.PartNotDiscoverableAttribute.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReadLock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Contains(System.Collections.Generic.KeyValuePair`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#ContainsKey(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#CopyTo(System.Collections.Generic.KeyValuePair`2<!0,!1>[],System.Int32)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Count")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#GetEnumerator()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.ICollection`1<System.Collections.Generic.KeyValuePair`2<!0,!1>>.Add(System.Collections.Generic.KeyValuePair`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.ICollection`1<System.Collections.Generic.KeyValuePair`2<!0,!1>>.Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.ICollection`1<System.Collections.Generic.KeyValuePair`2<!0,!1>>.Remove(System.Collections.Generic.KeyValuePair`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.IDictionary`2<!0,!1>.Add(!0,!1)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.Generic.IDictionary`2<!0,!1>.Remove(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#System.Collections.IEnumerable.GetEnumerator()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Keys")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#.ctor(System.Collections.Generic.IDictionary`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Item[!0]")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#TryGetValue(!0,!1&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionary`2.#Values")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionaryDebuggerProxy`2.#Items")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.ReadOnlyDictionaryDebuggerProxy`2.#.ctor(Microsoft.Internal.Collections.ReadOnlyDictionary`2<!0,!1>)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#Activate()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#CachedInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#CreateInstance(System.Reflection.ConstructorInfo,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#EnsureCardinality(System.ComponentModel.Composition.Primitives.ImportDefinition,System.ComponentModel.Composition.Primitives.Export[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#EnsureGettable()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#EnsureSettable(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetConstructorArguments()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetExportedValue(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetExportingMemberFromDefinition(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetImportingItemFromDefinition(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#GetInstanceActivatingIfNeeded()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#NotifyImportSatisfied()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#.ctor(System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#.ctor(System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#RequiresActivation()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#SetImport(System.ComponentModel.Composition.ReflectionModel.ImportingItem,System.ComponentModel.Composition.Primitives.Export[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#SetNonPrerequisiteImports()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#TryGetImportValue(System.ComponentModel.Composition.Primitives.ImportDefinition,System.Object&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.#UseImportedValues`1(System.Collections.Generic.IEnumerable`1<!!0>,System.Action`3<System.ComponentModel.Composition.ReflectionModel.ImportingItem,!!0,System.Object>,System.Boolean)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#ExportDefinitions")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#ImportDefinitions")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePartDefinition.#.ctor(System.ComponentModel.Composition.ReflectionModel.IReflectionPartCreationInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#CreateReflectionProperty(System.Reflection.MethodInfo,System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToLazyMember(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToLazyMember(System.ComponentModel.Composition.ReflectionModel.ReflectionMember)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToReflectionProperty(System.Reflection.PropertyInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionExtensions.#ToReflectionWritableMember(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#CanWrite")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#GetValue(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#RequiresInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionField.#SetValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionItem.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMember.#DeclaringType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMember.#Name")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMemberExportDefinition.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMemberImportDefinition.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMethod.#RequiresInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionMethod.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetExportingMember(System.ComponentModel.Composition.Primitives.ExportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingMember(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#GetPartType(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsDisposalRequired(System.ComponentModel.Composition.Primitives.ComposablePartDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices.#IsImportingParameter(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+LazyExportDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+ReflectionPartCreationInfo.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+ReflectionPartCreationInfo.#GetMetadata()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionModelServices+ReflectionPartCreationInfo.#.ctor(System.Lazy`1<System.Type>,System.Boolean,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ImportDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>>,System.Lazy`1<System.Collections.Generic.IDictionary`2<System.String,System.Object>>,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameter.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameter.#Name")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameter.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameterImportDefinition.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionParameterImportDefinition.#ToImportingItem()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#CanRead")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#CanWrite")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#GetValue(System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#Name")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#.ctor(System.Reflection.MethodInfo,System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#RequiresInstance")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#ReturnType")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionProperty.#SetValue(System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#GetAllProperties(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#GetDisplayName(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#GetDisplayName(System.Type,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#TryGetGenericInterfaceType(System.Type,System.Type,System.Type&)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#IsInMembertypeSet(System.Reflection.MemberTypes,System.String,System.Reflection.MemberTypes)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNull`1(!!0,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNullElements`1(System.Collections.Generic.IEnumerable`1<!!0>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNullElements`2(System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<!!0,!!1>>,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Requires.#NotNullOrEmpty(System.String,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.SerializableCompositionElement.#.ctor(System.String,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Runtime.Serialization.SerializationServices.#GetValue`1(System.Runtime.Serialization.SerializationInfo,System.String)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.StringComparers.#ContractName")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.StringComparers.#MetadataKeyNames")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#CanWriteError")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#CanWriteInformation")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#CanWriteWarning")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceSourceTraceWriter.#WriteEvent(System.Diagnostics.TraceEventType,System.ComponentModel.Composition.Diagnostics.CompositionTraceId,System.String,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Diagnostics.TraceWriter.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#CreateIndex()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetCandidateParts(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetDisplayName()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetExports(System.ComponentModel.Composition.Primitives.ImportDefinition)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#GetTypesDisplay()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#PartsInternal")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Hosting.TypeCatalog.#.ctor(System.Collections.Generic.IEnumerable`1<System.Type>,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#Add(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#AliveItemsToList()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#CleanupDeadReferences()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#Clear()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#IndexOf(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#Remove(!0)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.Collections.WeakReferenceCollection`1.#.ctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.WriteLock.#Dispose()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.Primitives.ContractBasedImportDefinition.#ValidateRequiredMetadata()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.LazyExportDefinition.#Metadata")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#DemandMemberAccess(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#DemandMemberAccessIfNeeded(System.Type)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#DemandRestrictedMemberAccess(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#.cctor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeCreateInstance(System.Type,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeGetValue(System.Reflection.FieldInfo,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeInvoke(System.Reflection.ConstructorInfo,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeInvoke(System.Reflection.MethodInfo,System.Object,System.Object[])")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#SafeSetValue(System.Reflection.FieldInfo,System.Object,System.Object)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionInvoke.#UnsafePermissionSet(System.Reflection.Assembly)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionPartCreationInfo.#GetConstructor()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionPartCreationInfo.#GetMetadata()")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.ReflectionModel.ReflectionPartCreationInfo.#.ctor(System.Lazy`1<System.Type>,System.Boolean,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ImportDefinition>>,System.Lazy`1<System.Collections.Generic.IEnumerable`1<System.ComponentModel.Composition.Primitives.ExportDefinition>>,System.Lazy`1<System.Collections.Generic.IDictionary`2<System.String,System.Object>>,System.ComponentModel.Composition.Primitives.ICompositionElement)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#Assembly(System.Reflection.MemberInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#IsVisible(System.Reflection.ConstructorInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#IsVisible(System.Reflection.FieldInfo)")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "Microsoft.Internal.ReflectionServices.#IsVisible(System.Reflection.MethodInfo)")]
-[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "System.ComponentModel.Composition.ChangeRejectedException")]
-[module: SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly", Scope = "type", Target = "System.ComponentModel.Composition.CompositionException")]
-[module: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "System.ComponentModel.Composition.CompositionException")]
-[module: SuppressMessage("Microsoft.Security", "CA2116:AptcaMethodsShouldOnlyCallAptcaMethods", Scope = "member", Target = "System.ComponentModel.Composition.CompositionException+CompositionExceptionData.#System.Runtime.Serialization.ISafeSerializationData.CompleteDeserialization(System.Object)")]
-
-
-
diff --git a/System.ComponentModel.Composition/System.ComponentModel.Composition.csproj b/System.ComponentModel.Composition/System.ComponentModel.Composition.csproj
deleted file mode 100644
index 89d3819..0000000
--- a/System.ComponentModel.Composition/System.ComponentModel.Composition.csproj
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.0</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{1BBA5101-D4F0-48B8-A5D6-7B23A099DCE3}</ProjectGuid>
- <OutputType>Library</OutputType>
- <RootNamespace>Microsoft.Internal</RootNamespace>
- <AssemblyName>System.ComponentModel.Composition</AssemblyName>
- <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
- <NoStdLib>true</NoStdLib>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>..\bin</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
- <NoWarn>1570;1572;1573;1591;1699</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>none</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>..\bin</OutputPath>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
- <NoWarn>1570;1572;1573;1591;1699</NoWarn>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="mscorlib" />
- <Reference Include="System" />
- <Reference Include="System.Core">
- </Reference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="AssemblyInfo.cs" />
- <Compile Include="Microsoft\Internal\Assumes.cs" />
- <Compile Include="Microsoft\Internal\AttributeServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.cs" />
- <Compile Include="Microsoft\Internal\Collections\ConditionalWeakTable.cs" />
- <Compile Include="Microsoft\Internal\Collections\CollectionServices.CollectionOfObject.cs" />
- <Compile Include="Microsoft\Internal\Collections\EnumerableCardinality.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionary.cs" />
- <Compile Include="Microsoft\Internal\Collections\ReadOnlyDictionaryDebuggerProxy.cs" />
- <Compile Include="Microsoft\Internal\Collections\WeakReferenceCollection.cs" />
- <Compile Include="Microsoft\Internal\ContractServices.cs" />
- <Compile Include="Microsoft\Internal\Assumes.InternalErrorException.cs" />
- <Compile Include="Microsoft\Internal\SilverlightReflectionInvoke.cs" />
- <Compile Include="Microsoft\Internal\GenerationServices.cs" />
- <Compile Include="Microsoft\Internal\LazyServices.cs" />
- <Compile Include="Microsoft\Internal\Lock.cs" />
- <Compile Include="Microsoft\Internal\Lock.Reader.cs" />
- <Compile Include="Microsoft\Internal\Lock.Writer.cs" />
- <Compile Include="Microsoft\Internal\Requires.cs" />
- <Compile Include="Microsoft\Internal\Runtime\Serialization\SerializationServices.cs" />
- <Compile Include="Microsoft\Internal\StringComparers.cs" />
- <Compile Include="Microsoft\Internal\ReflectionServices.cs" />
- <Compile Include="Strings.Designer.cs">
- <AutoGen>True</AutoGen>
- <DesignTime>True</DesignTime>
- <DependentUpon>Strings.resx</DependentUpon>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </Compile>
- <Compile Include="SuppressMessages.cs" />
- <Compile Include="SuppressMessagesBaselined.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedModelDiscovery.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\AttributedModel\AttributedExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTrace.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceId.cs" />
- <Compile Include="System\ComponentModel\Composition\ConstraintServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionContractMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResultOfT.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.PartCreatorExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionLock.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\CompositionTraceSource.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\TraceSourceTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\Diagnostics\SilverlightTraceWriter.cs" />
- <Compile Include="System\ComponentModel\Composition\InheritedExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.DisposableLazy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicComposition.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AtomicCompositionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionConstants.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogChangeProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\IPartCreatorImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\PartCreatorMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\IAttributedImport.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportCardinalityMismatchException.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportManyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ErrorBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExceptionBuilder.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportCardinalityCheckResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AggregateExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\AssemblyCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.CatalogExport.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CatalogExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartCatalogCollection.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ComposablePartExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionBatch.SingleExportComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionContainer.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\CompositionServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportProvider.GetExportOverrides.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ExportsChangeEventArgs.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.RecompositionManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.EngineContext.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.PartManager.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\ImportEngine.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\INotifyComposablePartCatalogChanged.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\TypeCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionError.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportingConstructorAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\IPartImportsSatisfiedNotification.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataServices.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartCatalogDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ComposablePartException.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementDebuggerProxy.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\CompositionElementExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ContractBasedImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\Export.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ExportedDelegate.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ICompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportCardinality.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\ImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\Primitives\SerializableCompositionElement.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\DisposableReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\IReflectionPartCreationInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\LazyMemberInfo.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionImportDefinition.cs" />
- <Compile Include="Microsoft\Internal\ReflectionInvoke.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItemType.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewProvider.cs" />
- <Compile Include="System\ComponentModel\Composition\PartCreationPolicyAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\PartNotDiscoverableAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionExtensions.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ExportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportingMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ImportType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePart.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionComposablePartDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberExportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMemberImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionModelServices.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameterImportDefinition.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionWritableMember.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataViewGenerator.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionField.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMember.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionParameter.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionProperty.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionType.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionItem.cs" />
- <Compile Include="System\ComponentModel\Composition\ReflectionModel\ReflectionMethod.cs" />
- <Compile Include="System\ComponentModel\Composition\ChangeRejectedException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionException.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionErrorId.cs" />
- <Compile Include="System\ComponentModel\Composition\CompositionResult.cs" />
- <Compile Include="System\ComponentModel\Composition\ContractNameServices.cs" />
- <Compile Include="System\ComponentModel\Composition\CreationPolicy.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ExportMetadataAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\ICompositionService.cs" />
- <Compile Include="System\ComponentModel\Composition\ImportAttribute.cs" />
- <Compile Include="System\ComponentModel\Composition\MetadataAttributeAttribute.cs" />
- <Compile Include="System\Lazy.cs" />
- <Compile Include="System\LazyOfTTMetadata.cs" />
- <Compile Include="System\Tuple.cs" />
- </ItemGroup>
- <ItemGroup Condition="'$(IsSilverLight)' != 'true'">
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.cs" />
- <Compile Include="System\ComponentModel\Composition\Hosting\DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="Strings.resx">
- <SubType>Designer</SubType>
- <Generator>ResXFileCodeGenerator</Generator>
- <LastGenOutput>Strings.Designer.cs</LastGenOutput>
- <CustomToolNamespace>Microsoft.Internal</CustomToolNamespace>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
- <Install>false</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
- <Visible>False</Visible>
- <ProductName>Windows Installer 3.1</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- </ItemGroup>
- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-</Project>
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs
deleted file mode 100644
index 2f8d7e2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.AttributedModel;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.AttributedModel
-{
- internal class AttributedExportDefinition : ExportDefinition
- {
- private readonly AttributedPartCreationInfo _partCreationInfo;
- private readonly MemberInfo _member;
- private readonly ExportAttribute _exportAttribute;
-
- private IDictionary<string, object> _metadata;
-
- public AttributedExportDefinition(AttributedPartCreationInfo partCreationInfo, MemberInfo member, ExportAttribute exportAttribute)
- : base(member.GetContractNameFromExport(exportAttribute), (IDictionary<string, object>)null)
- {
- Assumes.NotNull(partCreationInfo);
- Assumes.NotNull(member);
- Assumes.NotNull(exportAttribute);
-
- this._partCreationInfo = partCreationInfo;
- this._member = member;
- this._exportAttribute = exportAttribute;
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- IDictionary<string, object> metadata;
- this._member.TryExportMetadataForMember(out metadata);
-
- string typeIdentity = this._member.GetTypeIdentityFromExport(this._exportAttribute);
- metadata.Add(CompositionConstants.ExportTypeIdentityMetadataName, typeIdentity);
-
- var partMetadata = this._partCreationInfo.GetMetadata();
- if (partMetadata != null && partMetadata.ContainsKey(CompositionConstants.PartCreationPolicyMetadataName))
- {
- metadata.Add(CompositionConstants.PartCreationPolicyMetadataName, partMetadata[CompositionConstants.PartCreationPolicyMetadataName]);
- }
-
- this._metadata = metadata;
- }
- return this._metadata;
- }
- }
- }
-
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs
deleted file mode 100644
index c100257..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.AttributedModel
-{
- internal static class AttributedModelDiscovery
- {
- public static ComposablePartDefinition CreatePartDefinitionIfDiscoverable(Type type, ICompositionElement origin)
- {
- AttributedPartCreationInfo creationInfo = new AttributedPartCreationInfo(type, null, false, origin);
- if (!creationInfo.IsPartDiscoverable())
- {
- return null;
- }
-
- return new ReflectionComposablePartDefinition(creationInfo);
- }
-
- public static ReflectionComposablePartDefinition CreatePartDefinition(Type type, PartCreationPolicyAttribute partCreationPolicy, bool ignoreConstructorImports, ICompositionElement origin)
- {
- Assumes.NotNull(type);
-
- AttributedPartCreationInfo creationInfo = new AttributedPartCreationInfo(type, partCreationPolicy, ignoreConstructorImports, origin);
-
- return new ReflectionComposablePartDefinition(creationInfo);
- }
-
- public static ReflectionComposablePart CreatePart(object attributedPart)
- {
- Assumes.NotNull(attributedPart);
-
- // If given an instance then we want to pass the default composition options because we treat it as a shared part
- // TODO: ICompositionElement Give this def an origin indicating that it was added directly to the ComposablePartExportProvider.
-
- ReflectionComposablePartDefinition definition = AttributedModelDiscovery.CreatePartDefinition(attributedPart.GetType(), PartCreationPolicyAttribute.Shared, true, (ICompositionElement)null);
-
- return new ReflectionComposablePart(definition, attributedPart);
- }
-
- public static ReflectionParameterImportDefinition CreateParameterImportDefinition(ParameterInfo parameter, ICompositionElement origin)
- {
- Requires.NotNull(parameter, "parameter");
-
- ReflectionParameter reflectionParameter = parameter.ToReflectionParameter();
- IAttributedImport attributedImport = AttributedModelDiscovery.GetAttributedImport(reflectionParameter, parameter);
- ImportType importType = new ImportType(reflectionParameter.ReturnType, attributedImport.Cardinality);
-
- if (importType.IsPartCreator)
- {
- return new PartCreatorParameterImportDefinition(
- new Lazy<ParameterInfo>(() => parameter),
- origin,
- new ContractBasedImportDefinition(
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- false,
- true,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionParameterImportDefinition(
- new Lazy<ParameterInfo>(() => parameter),
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- attributedImport.RequiredCreationPolicy,
- origin);
- }
- }
-
- public static ReflectionMemberImportDefinition CreateMemberImportDefinition(MemberInfo member, ICompositionElement origin)
- {
- Requires.NotNull(member, "member");
-
- ReflectionWritableMember reflectionMember = member.ToReflectionWritableMember();
- IAttributedImport attributedImport = AttributedModelDiscovery.GetAttributedImport(reflectionMember, member);
- ImportType importType = new ImportType(reflectionMember.ReturnType, attributedImport.Cardinality);
-
- if (importType.IsPartCreator)
- {
- return new PartCreatorMemberImportDefinition(
- new LazyMemberInfo(member),
- origin,
- new ContractBasedImportDefinition(
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- attributedImport.AllowRecomposition,
- false,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionMemberImportDefinition(
- new LazyMemberInfo(member),
- attributedImport.GetContractNameFromImport(importType),
- attributedImport.GetTypeIdentityFromImport(importType),
- CompositionServices.GetRequiredMetadata(importType.MetadataViewType),
- attributedImport.Cardinality,
- attributedImport.AllowRecomposition,
- attributedImport.RequiredCreationPolicy,
- origin);
- }
- }
-
- private static IAttributedImport GetAttributedImport(ReflectionItem item, ICustomAttributeProvider attributeProvider)
- {
- IAttributedImport[] imports = attributeProvider.GetAttributes<IAttributedImport>(false);
-
- // For constructor parameters they may not have an ImportAttribute
- if (imports.Length == 0)
- {
- return new ImportAttribute();
- }
-
- if (imports.Length > 1)
- {
- CompositionTrace.MemberMarkedWithMultipleImportAndImportMany(item);
- }
-
- // Regardless of how many imports, always return the first one
- return imports[0];
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs
deleted file mode 100644
index 827a709..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs
+++ /dev/null
@@ -1,446 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.AttributedModel
-{
- internal class AttributedPartCreationInfo : IReflectionPartCreationInfo
- {
- private readonly Type _type;
- private readonly bool _ignoreConstructorImports = false;
- private readonly ICompositionElement _origin;
- private PartCreationPolicyAttribute _partCreationPolicy = null;
- private ConstructorInfo _constructor;
- private IEnumerable<ExportDefinition> _exports;
- private IEnumerable<ImportDefinition> _imports;
- private HashSet<string> _contractNamesOnNonInterfaces;
-
- public AttributedPartCreationInfo(Type type, PartCreationPolicyAttribute partCreationPolicy, bool ignoreConstructorImports, ICompositionElement origin)
- {
- Assumes.NotNull(type);
- this._type = type;
- this._ignoreConstructorImports = ignoreConstructorImports;
- this._partCreationPolicy = partCreationPolicy;
- this._origin = origin;
- }
-
- public Type GetPartType()
- {
- return this._type;
- }
-
- public Lazy<Type> GetLazyPartType()
- {
- return new Lazy<Type>(this.GetPartType, false);
- }
-
- public ConstructorInfo GetConstructor()
- {
- if (this._constructor == null && !this._ignoreConstructorImports)
- {
- this._constructor = SelectPartConstructor(this._type);
- }
- return this._constructor;
- }
-
- public IDictionary<string, object> GetMetadata()
- {
- return this._type.GetPartMetadataForType(this.CreationPolicy);
- }
-
- public IEnumerable<ExportDefinition> GetExports()
- {
- DiscoverExportsAndImports();
- return this._exports;
- }
-
- public IEnumerable<ImportDefinition> GetImports()
- {
- DiscoverExportsAndImports();
- return this._imports;
- }
-
- public bool IsDisposalRequired
- {
- get
- {
- return typeof(IDisposable).IsAssignableFrom(this.GetPartType());
- }
- }
-
- public bool IsPartDiscoverable()
- {
- if (this._type.IsAttributeDefined<PartNotDiscoverableAttribute>())
- {
- CompositionTrace.DefinitionMarkedWithPartNotDiscoverableAttribute(this._type);
- return false;
- }
-
- if (this._type.ContainsGenericParameters)
- {
- CompositionTrace.DefinitionContainsGenericsParameters(this._type);
- return false;
- }
-
- if (!HasExports())
- {
- CompositionTrace.DefinitionContainsNoExports(this._type);
- return false;
- }
-
- return true;
- }
-
- private bool HasExports()
- {
- return GetExportMembers(this._type).Any() ||
- GetInheritedExports(this._type).Any();
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return GetDisplayName();
- }
-
- private string GetDisplayName()
- {
- return this.GetPartType().GetDisplayName();
- }
-
- private CreationPolicy CreationPolicy
- {
- get
- {
- if (this._partCreationPolicy == null)
- {
- this._partCreationPolicy = this._type.GetFirstAttribute<PartCreationPolicyAttribute>() ?? PartCreationPolicyAttribute.Default;
- }
- return this._partCreationPolicy.CreationPolicy;
- }
- }
-
- private static ConstructorInfo SelectPartConstructor(Type type)
- {
- Assumes.NotNull(type);
-
- if (type.IsAbstract)
- {
- return null;
- }
-
- // Only deal with non-static constructors
- BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
-
- ConstructorInfo[] constructors = type.GetConstructors(flags);
-
- // Should likely only happen for static or abstract types
- if (constructors.Length == 0)
- {
- return null;
- }
-
- // Optimize single default constructor.
- if (constructors.Length == 1 && constructors[0].GetParameters().Length == 0)
- {
- return constructors[0];
- }
-
- // Select the marked constructor if there is exactly one marked
- IEnumerable<ConstructorInfo> importingConstructors = constructors.Where(
- ctor => ctor.IsAttributeDefined<ImportingConstructorAttribute>());
-
- switch (importingConstructors.GetCardinality())
- {
- case EnumerableCardinality.One:
- {
- return importingConstructors.First();
- }
-
- case EnumerableCardinality.TwoOrMore:
- {
- // Return null, the part will error on instantiation.
- return null;
- }
- }
-
- // If there are no marked constructors then select the default constructor
- IEnumerable<ConstructorInfo> defaultConstructors = constructors.Where(
- ctor => ctor.GetParameters().Length == 0);
-
- // There should only ever be zero or one default constructors
- return defaultConstructors.SingleOrDefault();
- }
-
- private void DiscoverExportsAndImports()
- {
- // NOTE : in most cases both of these will be null or not null at the same time
- // the only situation when that is not the case is when there was a failure during the previous discovery
- // and one of them ended up not being set. In that case we will force the discovery again so that the same exception is thrown.
- if ((this._exports != null) && (this._imports != null))
- {
- return;
- }
-
- this._exports = GetExportDefinitions();
- this._imports = GetImportDefinitions();
- }
-
- private IEnumerable<ExportDefinition> GetExportDefinitions()
- {
- List<ExportDefinition> exports = new List<ExportDefinition>();
-
- this._contractNamesOnNonInterfaces = new HashSet<string>();
-
- // GetExportMembers should only contain the type itself along with the members declared on it,
- // it should not contain any base types, members on base types or interfaces on the type.
- foreach (MemberInfo member in GetExportMembers(this._type))
- {
- foreach (ExportAttribute exportAttribute in member.GetAttributes<ExportAttribute>())
- {
- var attributedExportDefinition = new AttributedExportDefinition(this, member, exportAttribute);
-
- if (exportAttribute.GetType() == CompositionServices.InheritedExportAttributeType)
- {
- // Any InheritedExports on the type itself are contributed during this pass
- // and we need to do the book keeping for those.
- if (!this._contractNamesOnNonInterfaces.Contains(attributedExportDefinition.ContractName))
- {
- exports.Add(new ReflectionMemberExportDefinition(member.ToLazyMember(), attributedExportDefinition, this));
- this._contractNamesOnNonInterfaces.Add(attributedExportDefinition.ContractName);
- }
- }
- else
- {
- exports.Add(new ReflectionMemberExportDefinition(member.ToLazyMember(), attributedExportDefinition, this));
- }
- }
- }
-
- // GetInheritedExports should only contain InheritedExports on base types or interfaces.
- // The order of types returned here is important because it is used as a
- // priority list of which InhertedExport to choose if multiple exists with
- // the same contract name. Therefore ensure that we always return the types
- // in the hiearchy from most derived to the lowest base type, followed
- // by all the interfaces that this type implements.
- foreach (Type type in GetInheritedExports(this._type))
- {
- foreach (InheritedExportAttribute exportAttribute in type.GetAttributes<InheritedExportAttribute>())
- {
- var attributedExportDefinition = new AttributedExportDefinition(this, type, exportAttribute);
-
- if (!this._contractNamesOnNonInterfaces.Contains(attributedExportDefinition.ContractName))
- {
- exports.Add(new ReflectionMemberExportDefinition(type.ToLazyMember(), attributedExportDefinition, this));
-
- if (!type.IsInterface)
- {
- this._contractNamesOnNonInterfaces.Add(attributedExportDefinition.ContractName);
- }
- }
- }
- }
-
- this._contractNamesOnNonInterfaces = null; // No need to hold this state around any longer
-
- return exports;
- }
-
- private IEnumerable<MemberInfo> GetExportMembers(Type type)
- {
- BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Public |
- BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
-
- // If the type is abstract only find local static exports
- if (type.IsAbstract)
- {
- flags &= ~BindingFlags.Instance;
- }
- else if (IsExport(type))
- {
- yield return type;
- }
-
- // Walk the fields
- foreach (var member in type.GetFields(flags))
- {
- if (IsExport(member))
- {
- yield return member;
- }
- }
-
- // Walk the properties
- foreach (var member in type.GetProperties(flags))
- {
- if (IsExport(member))
- {
- yield return member;
- }
- }
-
- // Walk the methods
- foreach (var member in type.GetMethods(flags))
- {
- if (IsExport(member))
- {
- yield return member;
- }
- }
- }
-
- private IEnumerable<Type> GetInheritedExports(Type type)
- {
- // If the type is abstract we aren't interested in type level exports
- if (type.IsAbstract)
- {
- yield break;
- }
-
- // The order of types returned here is important because it is used as a
- // priority list of which InhertedExport to choose if multiple exists with
- // the same contract name. Therefore ensure that we always return the types
- // in the hiearchy from most derived to the lowest base type, followed
- // by all the interfaces that this type implements.
-
- Type currentType = type.BaseType;
-
- if (currentType == null)
- {
- yield break;
- }
-
- // Stopping at object instead of null to help with performance. It is a noticable performance
- // gain (~5%) if we don't have to try and pull the attributes we know don't exist on object.
- // We also need the null check in case we're passed a type that doesn't live in the runtime context.
- while (currentType != null && currentType != CompositionServices.ObjectType)
- {
- if (IsInheritedExport(currentType))
- {
- yield return currentType;
- }
- currentType = currentType.BaseType;
- }
-
- foreach (Type iface in type.GetInterfaces())
- {
- if (IsInheritedExport(iface))
- {
- yield return iface;
- }
- }
- }
-
- private static bool IsExport(ICustomAttributeProvider attributeProvider)
- {
- return attributeProvider.IsAttributeDefined<ExportAttribute>(false);
- }
-
- private static bool IsInheritedExport(ICustomAttributeProvider attributedProvider)
- {
- return attributedProvider.IsAttributeDefined<InheritedExportAttribute>(false);
- }
-
- private IEnumerable<ImportDefinition> GetImportDefinitions()
- {
- List<ImportDefinition> imports = new List<ImportDefinition>();
-
- foreach (MemberInfo member in GetImportMembers(this._type))
- {
- ReflectionMemberImportDefinition importDefinition = AttributedModelDiscovery.CreateMemberImportDefinition(member, this);
- imports.Add(importDefinition);
- }
-
- var constructor = this.GetConstructor();
-
- if (constructor != null)
- {
- foreach (ParameterInfo parameter in constructor.GetParameters())
- {
- ReflectionParameterImportDefinition importDefinition = AttributedModelDiscovery.CreateParameterImportDefinition(parameter, this);
- imports.Add(importDefinition);
- }
- }
-
- return imports;
- }
-
- private IEnumerable<MemberInfo> GetImportMembers(Type type)
- {
- if (type.IsAbstract)
- {
- yield break;
- }
-
- foreach (MemberInfo member in GetDeclaredOnlyImportMembers(type))
- {
- yield return member;
- }
-
- // Walk up the type chain until you hit object.
- if (type.BaseType != null)
- {
- Type baseType = type.BaseType;
-
- // Stopping at object instead of null to help with performance. It is a noticable performance
- // gain (~5%) if we don't have to try and pull the attributes we know don't exist on object.
- // We also need the null check in case we're passed a type that doesn't live in the runtime context.
- while (baseType != null && baseType != CompositionServices.ObjectType)
- {
- foreach (MemberInfo member in GetDeclaredOnlyImportMembers(baseType))
- {
- yield return member;
- }
- baseType = baseType.BaseType;
- }
- }
- }
-
- private IEnumerable<MemberInfo> GetDeclaredOnlyImportMembers(Type type)
- {
- BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
-
- // Walk the fields
- foreach (var member in type.GetFields(flags))
- {
- if (IsImport(member))
- {
- yield return member;
- }
- }
-
- // Walk the properties
- foreach (var member in type.GetProperties(flags))
- {
- if (IsImport(member))
- {
- yield return member;
- }
- }
- }
-
- private static bool IsImport(ICustomAttributeProvider attributeProvider)
- {
- return attributeProvider.IsAttributeDefined<IAttributedImport>(false);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModelServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModelServices.cs
deleted file mode 100644
index 2d33502..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/AttributedModelServices.cs
+++ /dev/null
@@ -1,161 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Runtime.Serialization;
-using System.ComponentModel.Composition.AttributedModel;
-using System.Reflection;
-using System.Linq;
-using Microsoft.Internal;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- public static class AttributedModelServices
- {
- [SuppressMessage("Microsoft.Design", "CA1004")]
- public static TMetadataView GetMetadataView<TMetadataView>(IDictionary<string, object> metadata)
- {
- Requires.NotNull(metadata, "metadata");
-
- return MetadataViewProvider.GetMetadataView<TMetadataView>(metadata);
- }
-
- public static ComposablePart CreatePart(object attributedPart)
- {
- Requires.NotNull(attributedPart, "attributedPart");
- return AttributedModelDiscovery.CreatePart(attributedPart);
- }
-
- public static ComposablePartDefinition CreatePartDefinition(Type type, ICompositionElement origin)
- {
- Requires.NotNull(type, "type");
- return AttributedModelServices.CreatePartDefinition(type, origin, false);
- }
-
- public static ComposablePartDefinition CreatePartDefinition(Type type, ICompositionElement origin, bool ensureIsDiscoverable)
- {
- Requires.NotNull(type, "type");
- if (ensureIsDiscoverable)
- {
- return AttributedModelDiscovery.CreatePartDefinitionIfDiscoverable(type, origin);
- }
- else
- {
- return AttributedModelDiscovery.CreatePartDefinition(type, null, false, origin);
- }
- }
-
- public static string GetTypeIdentity(Type type)
- {
- Requires.NotNull(type, "type");
-
- return ContractNameServices.GetTypeIdentity(type);
- }
-
- public static string GetTypeIdentity(MethodInfo method)
- {
- Requires.NotNull(method, "method");
-
- return ContractNameServices.GetTypeIdentityFromMethod(method);
- }
-
- public static string GetContractName(Type type)
- {
- return AttributedModelServices.GetTypeIdentity(type);
- }
-
- public static ComposablePart AddExportedValue<T>(this CompositionBatch batch, T exportedValue)
- {
- Requires.NotNull(batch, "batch");
- string contractName = AttributedModelServices.GetContractName(typeof(T));
-
- return batch.AddExportedValue<T>(contractName, exportedValue);
- }
-
- public static void ComposeExportedValue<T>(this CompositionContainer container, T exportedValue)
- {
- Requires.NotNull(container, "container");
-
- CompositionBatch batch = new CompositionBatch();
- batch.AddExportedValue<T>(exportedValue);
- container.Compose(batch);
- }
-
- public static ComposablePart AddExportedValue<T>(this CompositionBatch batch, string contractName, T exportedValue)
- {
- Requires.NotNull(batch, "batch");
-
- string typeIdentity = AttributedModelServices.GetTypeIdentity(typeof(T));
-
- IDictionary<string, object> metadata = new Dictionary<string, object>();
- metadata.Add(CompositionConstants.ExportTypeIdentityMetadataName, typeIdentity);
-
- return batch.AddExport(new Export(contractName, metadata, () => exportedValue));
- }
-
- public static void ComposeExportedValue<T>(this CompositionContainer container, string contractName, T exportedValue)
- {
- Requires.NotNull(container, "container");
-
- CompositionBatch batch = new CompositionBatch();
- batch.AddExportedValue<T>(contractName, exportedValue);
- container.Compose(batch);
- }
-
- public static ComposablePart AddPart(this CompositionBatch batch, object attributedPart)
- {
- Requires.NotNull(batch, "batch");
- Requires.NotNull(attributedPart, "attributedPart");
-
- ComposablePart part = AttributedModelServices.CreatePart(attributedPart);
-
- batch.AddPart(part);
-
- return part;
- }
-
- public static void ComposeParts(this CompositionContainer container, params object[] attributedParts)
- {
- Requires.NotNull(container, "container");
- Requires.NotNullOrNullElements(attributedParts, "attributedParts");
-
- CompositionBatch batch = new CompositionBatch(
- attributedParts.Select(attributedPart => AttributedModelServices.CreatePart(attributedPart)).ToArray(),
- Enumerable.Empty<ComposablePart>());
-
- container.Compose(batch);
- }
-
- /// <summary>
- /// Satisfies the imports of the specified attributed object exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The attributed object to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="attributedPart"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- public static ComposablePart SatisfyImportsOnce(this ICompositionService compositionService, object attributedPart)
- {
- Requires.NotNull(compositionService, "compositionService");
- Requires.NotNull(attributedPart, "attributedPart");
-
- ComposablePart part = AttributedModelServices.CreatePart(attributedPart);
- compositionService.SatisfyImportsOnce(part);
-
- return part;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ChangeRejectedException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ChangeRejectedException.cs
deleted file mode 100644
index 3f5da5c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ChangeRejectedException.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Security.Permissions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// The exception that is thrown when one or more recoverable errors occur during
- /// composition which results in those changes being rejected.
- /// </summary>
- [Serializable]
- public class ChangeRejectedException : CompositionException
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- public ChangeRejectedException()
- : this((string)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- public ChangeRejectedException(string message)
- : this(message, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- public ChangeRejectedException(string message, Exception innerException)
- : base(message, innerException, (IEnumerable<CompositionError>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ChangeRejectedException"/> class.
- /// </summary>
- /// <param name="errors">List of errors that occured while applying the changes.</param>
- public ChangeRejectedException(IEnumerable<CompositionError> errors)
- : base((string)null, (Exception)null, errors)
- {
- }
-
- /// <summary>
- /// Gets a message that describes the exception.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ChangeRejectedException"/>.
- /// </value>
- public override string Message
- {
- get
- {
- return string.Format(CultureInfo.CurrentCulture,
- Strings.CompositionException_ChangesRejected,
- base.Message);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionContractMismatchException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionContractMismatchException.cs
deleted file mode 100644
index 55a8c4d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionContractMismatchException.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Runtime.Serialization;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// The exception that is thrown when the underlying exported value or metadata of an
- /// <see cref="Lazy{T}"/> or <see cref="Lazy{T, TMetadataView}"/> object cannot be
- /// cast to <c>T</c> or <c>TMetadataView</c>, respectively.
- /// </summary>
- [Serializable]
- public class CompositionContractMismatchException : Exception
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class.
- /// </summary>
- public CompositionContractMismatchException()
- : this((string)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionContractMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public CompositionContractMismatchException(string message)
- : this(message, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionContractMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionContractMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public CompositionContractMismatchException(string message, Exception innerException)
- : base(message, innerException)
- {
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContractMismatchException"/> class
- /// with the specified serialization data.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="CompositionContractMismatchException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="SerializationException">
- /// <paramref name="info"/> is missing a required value.
- /// </exception>
- /// <exception cref="InvalidCastException">
- /// <paramref name="info"/> contains a value that cannot be cast to the correct type.
- /// </exception>
- [System.Security.SecuritySafeCritical]
- protected CompositionContractMismatchException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
-
-#endif
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionError.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionError.cs
deleted file mode 100644
index a85b9f5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionError.cs
+++ /dev/null
@@ -1,188 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Globalization;
-using System.Security.Permissions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Represents an error that occurs during composition in a <see cref="CompositionContainer"/>.
- /// </summary>
- [Serializable]
- [DebuggerTypeProxy(typeof(CompositionErrorDebuggerProxy))]
- public class CompositionError : ICompositionError
- {
- private readonly CompositionErrorId _id;
- private readonly string _description;
- private readonly Exception _exception;
-
- private readonly ICompositionElement _element;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- public CompositionError(string message)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message and composition element that is the
- /// cause of the composition error.
- /// </summary>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- public CompositionError(string message, ICompositionElement element)
- : this(CompositionErrorId.Unknown, message, element, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message and exception that is the cause of the
- /// composition error.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- /// <param name="exception">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Exception"/> property to <see langword="null"/>.
- /// </param>
- public CompositionError(string message, Exception exception)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, exception)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionError"/> class
- /// with the specified error message, and composition element and exception that
- /// is the cause of the composition error.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set the
- /// <see cref="Description"/> property to an empty string ("").
- /// </param>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- /// <param name="exception">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionError"/>; or <see langword="null"/> to set
- /// the <see cref="CompositionError.Exception"/> property to <see langword="null"/>.
- /// </param>
- public CompositionError(string message, ICompositionElement element, Exception exception)
- : this(CompositionErrorId.Unknown, message, element, exception)
- {
- }
-
- internal CompositionError(CompositionErrorId id, string description, ICompositionElement element, Exception exception)
- {
- _id = id;
- _description = description ?? string.Empty;
- _element = element;
- _exception = exception;
- }
-
- /// <summary>
- /// Gets the composition element that is the cause of the error.
- /// </summary>
- /// <value>
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="CompositionError"/>. The default is <see langword="null"/>.
- /// </value>
- public ICompositionElement Element
- {
- get { return _element; }
- }
-
- /// <summary>
- /// Gets the message that describes the composition error.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionError"/>.
- /// </value>
- public string Description
- {
- get { return _description; }
- }
-
- /// <summary>
- /// Gets the exception that is the underlying cause of the composition error.
- /// </summary>
- /// <value>
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="CompositionError"/>. The default is <see langword="null"/>.
- /// </value>
- public Exception Exception
- {
- get { return _exception; }
- }
-
- CompositionErrorId ICompositionError.Id
- {
- get { return _id; }
- }
-
- Exception ICompositionError.InnerException
- {
- get { return Exception; }
- }
-
- /// <summary>
- /// Returns a string representation of the composition error.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the <see cref="Description"/> property.
- /// </returns>
- public override string ToString()
- {
- return this.Description;
- }
-
- internal static CompositionError Create(CompositionErrorId id, string format, params object[] parameters)
- {
- return Create(id, (ICompositionElement)null, (Exception)null, format, parameters);
- }
-
- internal static CompositionError Create(CompositionErrorId id, ICompositionElement element, string format, params object[] parameters)
- {
- return Create(id, element, (Exception)null, format, parameters);
- }
-
- internal static CompositionError Create(CompositionErrorId id, ICompositionElement element, Exception exception, string format, params object[] parameters)
- {
- return new CompositionError(id, string.Format(CultureInfo.CurrentCulture, format, parameters), element, exception);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs
deleted file mode 100644
index 9530adb..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorDebuggerProxy.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal class CompositionErrorDebuggerProxy
- {
- private readonly CompositionError _error;
-
- public CompositionErrorDebuggerProxy(CompositionError error)
- {
- Requires.NotNull(error, "error");
-
- this._error = error;
- }
-
- public string Description
- {
- get { return this._error.Description; }
- }
-
- public Exception Exception
- {
- get { return this._error.Exception; }
- }
-
- public ICompositionElement Element
- {
- get { return this._error.Element; }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorId.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorId.cs
deleted file mode 100644
index c69dd66..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionErrorId.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- internal enum CompositionErrorId : int
- {
- Unknown = 0,
- InvalidExportMetadata,
- RequiredMetadataNotFound,
- UnsupportedExportType,
- ImportNotSetOnPart,
- ImportEngine_ComposeTookTooManyIterations,
- ImportEngine_ImportCardinalityMismatch,
- ImportEngine_PartCycle,
- ImportEngine_PartCannotSetImport,
- ImportEngine_PartCannotGetExportedValue,
- ImportEngine_PartCannotActivate,
- ImportEngine_PreventedByExistingImport,
- ImportEngine_InvalidStateForRecomposition,
- ReflectionModel_PartConstructorMissing,
- ReflectionModel_PartConstructorThrewException,
- ReflectionModel_PartOnImportsSatisfiedThrewException,
- ReflectionModel_ExportNotReadable,
- ReflectionModel_ExportThrewException,
- ReflectionModel_ExportMethodTooManyParameters,
- ReflectionModel_ImportNotWritable,
- ReflectionModel_ImportThrewException,
- ReflectionModel_ImportNotAssignableFromExport,
- ReflectionModel_ImportCollectionNull,
- ReflectionModel_ImportCollectionNotWritable,
- ReflectionModel_ImportCollectionConstructionThrewException,
- ReflectionModel_ImportCollectionGetThrewException,
- ReflectionModel_ImportCollectionIsReadOnlyThrewException,
- ReflectionModel_ImportCollectionClearThrewException,
- ReflectionModel_ImportCollectionAddThrewException,
- ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionException.cs
deleted file mode 100644
index 071db1f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionException.cs
+++ /dev/null
@@ -1,340 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-using System.Text;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
-
- /// <summary>
- /// The exception that is thrown when one or more errors occur during composition in
- /// a <see cref="CompositionContainer"/>.
- /// </summary>
- [Serializable]
- public class CompositionException : Exception
- {
- const string ErrorsKey = "Errors";
- private ReadOnlyCollection<CompositionError> _errors;
-
-#if CLR40 && !SILVERLIGHT
- [Serializable]
- private struct CompositionExceptionData : ISafeSerializationData
- {
- public CompositionError[] _errors;
-
- void ISafeSerializationData.CompleteDeserialization(object obj)
- {
- CompositionException exception = obj as CompositionException;
-
- exception._errors = new ReadOnlyCollection<CompositionError>(this._errors);
- }
- }
-#endif
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class.
- /// </summary>
- public CompositionException()
- : this((string)null, (Exception)null, (IEnumerable<CompositionError>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public CompositionException(string message)
- : this(message, (Exception)null, (IEnumerable<CompositionError>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public CompositionException(string message, Exception innerException)
- : this(message, innerException, (IEnumerable<CompositionError>)null)
- {
- }
-
- internal CompositionException(CompositionError error)
- : this(new CompositionError[] { error })
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionException"/> class
- /// with the specified errors.
- /// </summary>
- /// <param name="errors">
- /// An <see cref="IEnumerable{T}"/> of <see cref="CompositionError"/> objects
- /// representing the errors that are the cause of the
- /// <see cref="CompositionException"/>; or <see langword="null"/> to set the
- /// <see cref="Errors"/> property to an empty <see cref="IEnumerable{T}"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="errors"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public CompositionException(IEnumerable<CompositionError> errors)
- : this((string)null, (Exception)null, errors)
- {
- }
-
- internal CompositionException(string message, Exception innerException, IEnumerable<CompositionError> errors)
- : base(message, innerException)
- {
- Requires.NullOrNotNullElements(errors, "errors");
-#if CLR40 && !SILVERLIGHT
- SerializeObjectState += delegate(object exception, SafeSerializationEventArgs eventArgs)
- {
- var data = new CompositionExceptionData();
- if(this._errors != null)
- {
- data._errors = this._errors.Select(error => new CompositionError(
- ((ICompositionError)error).Id,
- error.Description,
- error.Element.ToSerializableElement(),
- error.Exception)).ToArray();
- }
- else
- {
- data._errors = new CompositionError[0];
- }
-
- eventArgs.AddSerializedState(data);
- };
-#endif
- _errors = new ReadOnlyCollection<CompositionError>(errors == null ? new CompositionError[0] : errors.ToArray<CompositionError>());
- }
-
- /// <summary>
- /// Gets the errors that are the cause of the exception.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="CompositionError"/> objects
- /// representing the errors that are the cause of the
- /// <see cref="CompositionException"/>.
- /// </value>
- public ReadOnlyCollection<CompositionError> Errors
- {
- get { return _errors; }
- }
-
- /// <summary>
- /// Gets a message that describes the exception.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="CompositionException"/>.
- /// </value>
- public override string Message
- {
- [System.Security.SecuritySafeCritical]
- get
- {
- if (this.Errors.Count == 0)
- { // If there are no errors, then we simply return base.Message,
- // which will either use the default Exception message, or if
- // one was specified; the user supplied message.
-
- return base.Message;
- }
-
- return BuildDefaultMessage();
- }
- }
-
- private string BuildDefaultMessage()
- {
- IEnumerable<IEnumerable<CompositionError>> paths = CalculatePaths(this);
-
- StringBuilder writer = new StringBuilder();
-
- WriteHeader(writer, this.Errors.Count, paths.Count());
- WritePaths(writer, paths);
-
- return writer.ToString();
- }
-
- private static void WriteHeader(StringBuilder writer, int errorsCount, int pathCount)
- {
- if (errorsCount > 1 && pathCount > 1)
- {
- // The composition produced multiple composition errors, with {0} root causes. The root causes are provided below.
- writer.AppendFormat(
- CultureInfo.CurrentCulture,
- Strings.CompositionException_MultipleErrorsWithMultiplePaths,
- pathCount);
- }
- else if (errorsCount == 1 && pathCount > 1)
- {
- // The composition produced a single composition error, with {0} root causes. The root causes are provided below.
- writer.AppendFormat(
- CultureInfo.CurrentCulture,
- Strings.CompositionException_SingleErrorWithMultiplePaths,
- pathCount);
- }
- else
- {
- Assumes.IsTrue(errorsCount == 1);
- Assumes.IsTrue(pathCount == 1);
-
- // The composition produced a single composition error. The root cause is provided below.
- writer.AppendFormat(
- CultureInfo.CurrentCulture,
- Strings.CompositionException_SingleErrorWithSinglePath,
- pathCount);
- }
-
- writer.Append(' ');
- writer.AppendLine(Strings.CompositionException_ReviewErrorProperty);
- }
-
- private static void WritePaths(StringBuilder writer, IEnumerable<IEnumerable<CompositionError>> paths)
- {
- int ordinal = 0;
- foreach (IEnumerable<CompositionError> path in paths)
- {
- ordinal++;
- WritePath(writer, path, ordinal);
- }
- }
-
- private static void WritePath(StringBuilder writer, IEnumerable<CompositionError> path, int ordinal)
- {
- writer.AppendLine();
- writer.Append(ordinal.ToString(CultureInfo.CurrentCulture));
- writer.Append(Strings.CompositionException_PathsCountSeparator);
- writer.Append(' ');
-
- WriteError(writer, path.First());
-
- foreach (CompositionError error in path.Skip(1))
- {
- writer.AppendLine();
- writer.Append(Strings.CompositionException_ErrorPrefix);
- writer.Append(' ');
- WriteError(writer, error);
- }
- }
-
- private static void WriteError(StringBuilder writer, CompositionError error)
- {
- writer.AppendLine(error.Description);
-
- if (error.Element != null)
- {
- WriteElementGraph(writer, error.Element);
- }
- }
-
- private static void WriteElementGraph(StringBuilder writer, ICompositionElement element)
- {
- // Writes the composition element and its origins in the format:
- // Element: Export --> Part --> PartDefinition --> Catalog
-
- writer.AppendFormat(CultureInfo.CurrentCulture, Strings.CompositionException_ElementPrefix, element.DisplayName);
-
- while ((element = element.Origin) != null)
- {
- writer.AppendFormat(CultureInfo.CurrentCulture, Strings.CompositionException_OriginFormat, Strings.CompositionException_OriginSeparator, element.DisplayName);
- }
-
- writer.AppendLine();
- }
-
- private static IEnumerable<IEnumerable<CompositionError>> CalculatePaths(CompositionException exception)
- {
- List<IEnumerable<CompositionError>> paths = new List<IEnumerable<CompositionError>>();
-
- VisitContext context = new VisitContext();
- context.Path = new Stack<CompositionError>();
- context.LeafVisitor = path =>
- {
- // Take a snapshot of the path
- paths.Add(path.Copy());
- };
-
- VisitCompositionException(exception, context);
-
- return paths;
- }
-
- private static void VisitCompositionException(CompositionException exception, VisitContext context)
- {
- foreach (CompositionError error in exception.Errors)
- {
- VisitError(error, context);
- }
-
- if (exception.InnerException != null)
- {
- VisitException(exception.InnerException, context);
- }
- }
-
- private static void VisitError(CompositionError error, VisitContext context)
- {
- context.Path.Push(error);
-
- if (error.Exception == null)
- { // This error is a root cause, so write
- // out the stack from this point
-
- context.LeafVisitor(context.Path);
- }
- else
- {
- VisitException(error.Exception, context);
- }
-
- context.Path.Pop();
- }
-
- private static void VisitException(Exception exception, VisitContext context)
- {
- CompositionException composition = exception as CompositionException;
- if (composition != null)
- {
- VisitCompositionException(composition, context);
- }
- else
- {
- VisitError(new CompositionError(exception.Message, exception.InnerException), context);
- }
- }
-
- private struct VisitContext
- {
- public Stack<CompositionError> Path;
- public Action<Stack<CompositionError>> LeafVisitor;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResult.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResult.cs
deleted file mode 100644
index f8c3c49..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResult.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using Microsoft.Internal.Collections;
-using System.ComponentModel.Composition.Hosting;
-
-namespace System.ComponentModel.Composition
-{
- internal struct CompositionResult
- {
- public static readonly CompositionResult SucceededResult = new CompositionResult();
- private readonly IEnumerable<CompositionError> _errors;
-
- public CompositionResult(params CompositionError[] errors)
- : this((IEnumerable<CompositionError>)errors)
- {
- }
-
- public CompositionResult(IEnumerable<CompositionError> errors)
- {
- this._errors = errors;
- }
-
- public bool Succeeded
- {
- get { return this._errors == null || !this._errors.FastAny(); }
- }
-
- public IEnumerable<CompositionError> Errors
- {
- get { return this._errors ?? Enumerable.Empty<CompositionError>(); }
- }
-
- public CompositionResult MergeResult(CompositionResult result)
- {
- if (this.Succeeded)
- {
- return result;
- }
- if (result.Succeeded)
- {
- return this;
- }
- return MergeErrors(result._errors);
- }
-
- public CompositionResult MergeError(CompositionError error)
- {
- return MergeErrors(new CompositionError[] { error });
- }
-
- public CompositionResult MergeErrors(IEnumerable<CompositionError> errors)
- {
- return new CompositionResult(this._errors.ConcatAllowingNull(errors));
- }
-
- public CompositionResult<T> ToResult<T>(T value)
- {
- return new CompositionResult<T>(value, this._errors);
- }
-
- public void ThrowOnErrors()
- {
- ThrowOnErrors(null);
- }
-
- public void ThrowOnErrors(AtomicComposition atomicComposition)
- {
- if (!this.Succeeded)
- {
- if (atomicComposition == null)
- {
- throw new CompositionException(this._errors);
- }
- else
- {
- throw new ChangeRejectedException(this._errors);
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResultOfT.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResultOfT.cs
deleted file mode 100644
index 65ee76d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CompositionResultOfT.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
- internal struct CompositionResult<T>
- {
- private readonly IEnumerable<CompositionError> _errors;
- private readonly T _value;
-
- public CompositionResult(T value)
- : this(value, (CompositionError[])null)
- {
- }
-
- public CompositionResult(params CompositionError[] errors)
- : this(default(T), (IEnumerable<CompositionError>)errors)
- {
- }
-
- public CompositionResult(IEnumerable<CompositionError> errors)
- : this(default(T), errors)
- {
- }
-
- internal CompositionResult(T value, IEnumerable<CompositionError> errors)
- {
- this._errors = errors;
- this._value = value;
- }
-
- public bool Succeeded
- {
- get { return this._errors == null || !this._errors.FastAny(); }
- }
-
- public IEnumerable<CompositionError> Errors
- {
- get { return this._errors ?? Enumerable.Empty<CompositionError>(); }
- }
-
- /// <summary>
- /// Gets the value from the result, throwing a CompositionException if there are any errors.
- /// </summary>
- public T Value
- {
- get
- {
- ThrowOnErrors();
-
- return this._value;
- }
- }
-
- internal CompositionResult<TValue> ToResult<TValue>()
- {
- return new CompositionResult<TValue>(this._errors);
- }
-
- internal CompositionResult ToResult()
- {
- return new CompositionResult(this._errors);
- }
-
- private void ThrowOnErrors()
- {
- if (!this.Succeeded)
- {
- throw new CompositionException(this._errors);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ConstraintServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ConstraintServices.cs
deleted file mode 100644
index 0fd6e66..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ConstraintServices.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ConstraintServices
- {
- // NOTE : these are here as Reflection member search is pretty expensive, and we want that to be done once.
- // Also, making these static would cause this class to fail loading if we rename members of ExportDefinition.
- private static readonly PropertyInfo _exportDefinitionContractNameProperty = typeof(ExportDefinition).GetProperty("ContractName");
- private static readonly PropertyInfo _exportDefinitionMetadataProperty = typeof(ExportDefinition).GetProperty("Metadata");
- private static readonly MethodInfo _metadataContainsKeyMethod = typeof(IDictionary<string, object>).GetMethod("ContainsKey");
- private static readonly MethodInfo _metadataItemMethod = typeof(IDictionary<string, object>).GetMethod("get_Item");
- private static readonly MethodInfo _metadataEqualsMethod = typeof(object).GetMethod("Equals", new Type[] { typeof(object) });
- private static readonly MethodInfo _typeIsInstanceOfTypeMethod = typeof(Type).GetMethod("IsInstanceOfType");
-
- public static Expression<Func<ExportDefinition, bool>> CreateConstraint(IEnumerable<KeyValuePair<string, Type>> requiredMetadata)
- {
- ParameterExpression parameter = Expression.Parameter(typeof(ExportDefinition), "exportDefinition");
- Expression metadataConstraintBody = null;
-
- if (requiredMetadata != null)
- {
- metadataConstraintBody = ConstraintServices.CreateMetadataConstraintBody(requiredMetadata, parameter);
- }
-
- if (metadataConstraintBody != null)
- {
- return Expression.Lambda<Func<ExportDefinition, bool>>(metadataConstraintBody, parameter);
- }
-
- return null;
- }
-
- public static Expression<Func<ExportDefinition, bool>> CreateConstraint(string contractName, string requiredTypeIdentity, IEnumerable<KeyValuePair<string, Type>> requiredMetadata, CreationPolicy requiredCreationPolicy)
- {
- ParameterExpression parameter = Expression.Parameter(typeof(ExportDefinition), "exportDefinition");
-
- Expression constraintBody = ConstraintServices.CreateContractConstraintBody(contractName, parameter);
-
- if (!string.IsNullOrEmpty(requiredTypeIdentity))
- {
- Expression typeIdentityConstraintBody = ConstraintServices.CreateTypeIdentityContraint(requiredTypeIdentity, parameter);
-
- constraintBody = Expression.AndAlso(constraintBody, typeIdentityConstraintBody);
- }
-
- if (requiredMetadata != null)
- {
- Expression metadataConstraintBody = ConstraintServices.CreateMetadataConstraintBody(requiredMetadata, parameter);
- if (metadataConstraintBody != null)
- {
- constraintBody = Expression.AndAlso(constraintBody, metadataConstraintBody);
- }
- }
-
- if (requiredCreationPolicy != CreationPolicy.Any)
- {
- Expression policyConstraintBody = ConstraintServices.CreateCreationPolicyContraint(requiredCreationPolicy, parameter);
-
- constraintBody = Expression.AndAlso(constraintBody, policyConstraintBody);
- }
-
- Expression<Func<ExportDefinition, bool>> constraint = Expression.Lambda<Func<ExportDefinition, bool>>(constraintBody, parameter);
- return constraint;
- }
-
- private static Expression CreateContractConstraintBody(string contractName, ParameterExpression parameter)
- {
- Assumes.NotNull(parameter);
-
- // export.ContractName=<contract>;
- return Expression.Equal(
- Expression.Property(parameter, ConstraintServices._exportDefinitionContractNameProperty),
- Expression.Constant(contractName ?? string.Empty, typeof(string)));
- }
-
- private static Expression CreateMetadataConstraintBody(IEnumerable<KeyValuePair<string, Type>> requiredMetadata, ParameterExpression parameter)
- {
- Assumes.NotNull(requiredMetadata);
- Assumes.NotNull(parameter);
-
- Expression body = null;
- foreach (KeyValuePair<string, Type> requiredMetadataItem in requiredMetadata)
- {
- // export.Metadata.ContainsKey(<metadataItem>)
- Expression metadataItemExpression = CreateMetadataContainsKeyExpression(parameter, requiredMetadataItem.Key);
-
- body = (body != null) ? Expression.AndAlso(body, metadataItemExpression) : metadataItemExpression;
- body = Expression.AndAlso(body, CreateMetadataOfTypeExpression(parameter, requiredMetadataItem.Key, requiredMetadataItem.Value));
- }
-
- return body;
- }
-
- private static Expression CreateCreationPolicyContraint(CreationPolicy policy, ParameterExpression parameter)
- {
- Assumes.IsTrue(policy != CreationPolicy.Any);
- Assumes.NotNull(parameter);
-
- // !definition.Metadata.ContainsKey(CompositionConstants.PartCreationPolicyMetadataName) ||
- // CreationPolicy.Any.Equals(definition.Metadata[CompositionConstants.PartCreationPolicyMetadataName]) ||
- // policy.Equals(definition.Metadata[CompositionConstants.PartCreationPolicyMetadataName]);
-
- return Expression.MakeBinary(ExpressionType.OrElse,
- Expression.MakeBinary(ExpressionType.OrElse,
- Expression.Not(CreateMetadataContainsKeyExpression(parameter, CompositionConstants.PartCreationPolicyMetadataName)),
- CreateMetadataValueEqualsExpression(parameter, CreationPolicy.Any, CompositionConstants.PartCreationPolicyMetadataName)),
- CreateMetadataValueEqualsExpression(parameter, policy, CompositionConstants.PartCreationPolicyMetadataName));
- }
-
- private static Expression CreateTypeIdentityContraint(string requiredTypeIdentity, ParameterExpression parameter)
- {
- Assumes.NotNull(requiredTypeIdentity);
- Assumes.NotNull(parameter);
-
- // definition.Metadata.ContainsKey(CompositionServices.ExportTypeIdentity) &&
- // requiredTypeIdentity.Equals(definition.Metadata[CompositionConstants.ExportTypeIdentityMetadataName]);
-
- return Expression.MakeBinary(ExpressionType.AndAlso,
- CreateMetadataContainsKeyExpression(parameter, CompositionConstants.ExportTypeIdentityMetadataName),
- CreateMetadataValueEqualsExpression(parameter, requiredTypeIdentity, CompositionConstants.ExportTypeIdentityMetadataName));
- }
-
- private static Expression CreateMetadataContainsKeyExpression(ParameterExpression parameter, string constantKey)
- {
- Assumes.NotNull(parameter, constantKey);
-
- // definition.Metadata.ContainsKey(constantKey)
- return Expression.Call(
- Expression.Property(parameter, ConstraintServices._exportDefinitionMetadataProperty),
- ConstraintServices._metadataContainsKeyMethod,
- Expression.Constant(constantKey));
- }
-
- private static Expression CreateMetadataOfTypeExpression(ParameterExpression parameter, string constantKey, Type constantType)
- {
- Assumes.NotNull(parameter, constantKey);
- Assumes.NotNull(parameter, constantType);
-
- // constantType.IsInstanceOfType(definition.Metadata[constantKey])
- return Expression.Call(
- Expression.Constant(constantType, typeof(Type)),
- ConstraintServices._typeIsInstanceOfTypeMethod,
- Expression.Call(
- Expression.Property(parameter, ConstraintServices._exportDefinitionMetadataProperty),
- ConstraintServices._metadataItemMethod,
- Expression.Constant(constantKey))
- );
- }
-
- private static Expression CreateMetadataValueEqualsExpression(ParameterExpression parameter, object constantValue, string metadataName)
- {
- Assumes.NotNull(parameter, constantValue);
-
- // constantValue.Equals(definition.Metadata[CompositionServices.PartCreationPolicyMetadataName])
- return Expression.Call(
- Expression.Constant(constantValue),
- ConstraintServices._metadataEqualsMethod,
- Expression.Call(
- Expression.Property(parameter, ConstraintServices._exportDefinitionMetadataProperty),
- ConstraintServices._metadataItemMethod,
- Expression.Constant(metadataName)));
- }
-
- public static Expression<Func<ExportDefinition, bool>> CreatePartCreatorConstraint(Expression<Func<ExportDefinition, bool>> baseConstraint, ImportDefinition productImportDefinition)
- {
- ParameterExpression exportDefinitionParameter = baseConstraint.Parameters[0];
-
- // exportDefinition.Metadata
- Expression metadataExpression = Expression.Property(exportDefinitionParameter, ConstraintServices._exportDefinitionMetadataProperty);
-
- // exportDefinition.Metadata.ContainsKey("ProductDefinition")
- Expression containsProductExpression = Expression.Call(
- metadataExpression,
- ConstraintServices._metadataContainsKeyMethod,
- Expression.Constant(CompositionConstants.ProductDefinitionMetadataName));
-
- // exportDefinition.Metadata["ProductDefinition"]
- Expression productExportDefinitionExpression = Expression.Call(
- metadataExpression,
- ConstraintServices._metadataItemMethod,
- Expression.Constant(CompositionConstants.ProductDefinitionMetadataName));
-
- // ProductImportDefinition.Contraint((ExportDefinition)exportDefinition.Metadata["ProductDefinition"])
- Expression productMatchExpression =
- Expression.Invoke(productImportDefinition.Constraint,
- Expression.Convert(productExportDefinitionExpression, typeof(ExportDefinition)));
-
- // baseContraint(exportDefinition) &&
- // exportDefinition.Metadata.ContainsKey("ProductDefinition") &&
- // ProductImportDefinition.Contraint((ExportDefinition)exportDefinition.Metadata["ProductDefinition"])
- Expression<Func<ExportDefinition, bool>> constraint =
- Expression.Lambda<Func<ExportDefinition, bool>>(
- Expression.AndAlso(
- baseConstraint.Body,
- Expression.AndAlso(
- containsProductExpression,
- productMatchExpression)),
- exportDefinitionParameter);
-
- return constraint;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ContractNameServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ContractNameServices.cs
deleted file mode 100644
index 603f6c9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ContractNameServices.cs
+++ /dev/null
@@ -1,310 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Text;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ContractNameServices
- {
- const char NamespaceSeparator = '.';
- const char ArrayOpeningBracket = '[';
- const char ArrayClosingBracket = ']';
- const char ArraySeparator = ',';
- const char PointerSymbol = '*';
- const char ReferenceSymbol = '&';
- const char GenericArityBackQuote = '`';
- const char NestedClassSeparator = '+';
- const char ContractNameGenericOpeningBracket = '(';
- const char ContractNameGenericClosingBracket = ')';
- const char ContractNameGenericArgumentSeparator = ',';
- const char CustomModifiersSeparator = ' ';
-
- [ThreadStatic]
- private static Dictionary<Type, string> typeIdentityCache;
-
- private static Dictionary<Type, string> TypeIdentityCache
- {
- get
- {
- return typeIdentityCache = typeIdentityCache ?? new Dictionary<Type, string>();
- }
- }
-
- internal static string GetTypeIdentity(Type type)
- {
- Assumes.NotNull(type);
- string typeIdentity = null;
-
- if (!TypeIdentityCache.TryGetValue(type, out typeIdentity))
- {
- if (!type.IsAbstract && type.IsSubclassOf(typeof(Delegate)))
- {
- MethodInfo method = type.GetMethod("Invoke");
- typeIdentity = ContractNameServices.GetTypeIdentityFromMethod(method);
- }
- else
- {
- StringBuilder typeIdentityStringBuilder = new StringBuilder();
- WriteTypeWithNamespace(typeIdentityStringBuilder, type);
- typeIdentity = typeIdentityStringBuilder.ToString();
- }
-
- TypeIdentityCache.Add(type, typeIdentity);
- }
-
- return typeIdentity;
- }
-
- internal static string GetTypeIdentityFromMethod(MethodInfo method)
- {
- StringBuilder methodNameStringBuilder = new StringBuilder();
-
- WriteTypeWithNamespace(methodNameStringBuilder, method.ReturnType);
-
- methodNameStringBuilder.Append("(");
-
- ParameterInfo[] parameters = method.GetParameters();
-
- for (int i = 0; i < parameters.Length; i++)
- {
- if (i != 0)
- {
- methodNameStringBuilder.Append(",");
- }
-
- WriteTypeWithNamespace(methodNameStringBuilder, parameters[i].ParameterType);
- }
- methodNameStringBuilder.Append(")");
-
- return methodNameStringBuilder.ToString();
- }
-
- private static void WriteTypeWithNamespace(StringBuilder typeName, Type type)
- {
- // Writes type with namesapce
- if (!string.IsNullOrEmpty(type.Namespace))
- {
- typeName.Append(type.Namespace);
- typeName.Append(NamespaceSeparator);
- }
- WriteType(typeName, type);
- }
-
- private static void WriteType(StringBuilder typeName, Type type)
- {
- // Writes type name
- if (type.IsGenericType)
- {
- //
- // Reflection format stores all the generic arguments (including the ones for parent types) on the leaf type.
- // These arguments are placed in a queue and are written out based on generic arity (`X) of each type
- //
- Queue<Type> genericTypeArguments = new Queue<Type>(type.GetGenericArguments());
- WriteGenericType(typeName, type, type.IsGenericTypeDefinition, genericTypeArguments);
- Assumes.IsTrue(genericTypeArguments.Count == 0, "Expecting genericTypeArguments queue to be empty.");
- }
- else
- {
- WriteNonGenericType(typeName, type);
- }
- }
-
- private static void WriteNonGenericType(StringBuilder typeName, Type type)
- {
- //
- // Writes non-generic type
- //
- if (type.DeclaringType != null)
- {
- WriteType(typeName, type.DeclaringType);
- typeName.Append(NestedClassSeparator);
- }
- if (type.IsArray)
- {
- WriteArrayType(typeName, type);
- }
- else if (type.IsPointer)
- {
- WritePointerType(typeName, type);
- }
- else if (type.IsByRef)
- {
- WriteByRefType(typeName, type);
- }
- else
- {
- typeName.Append(type.Name);
- }
- }
-
- private static void WriteArrayType(StringBuilder typeName, Type type)
- {
- //
- // Writes array type e.g <TypeName>[]
- // Note that jagged arrays are stored in reverse order
- // e.g. C#: Int32[][,] Reflection: Int32[,][]
- // we are following C# order for arrays
- //
- Type rootElementType = FindArrayElementType(type);
- WriteType(typeName, rootElementType);
- Type elementType = type;
- do
- {
- WriteArrayTypeDimensions(typeName, elementType);
- }
- while ((elementType = elementType.GetElementType()) != null && elementType.IsArray);
- }
-
- private static void WritePointerType(StringBuilder typeName, Type type)
- {
- //
- // Writes pointer type e.g <TypeName>*
- //
- WriteType(typeName, type.GetElementType());
- typeName.Append(PointerSymbol);
- }
-
- private static void WriteByRefType(StringBuilder typeName, Type type)
- {
- //
- // Writes by ref type e.g <TypeName>&
- //
- WriteType(typeName, type.GetElementType());
- typeName.Append(ReferenceSymbol);
- }
-
- private static void WriteArrayTypeDimensions(StringBuilder typeName, Type type)
- {
- //
- // Writes array type dimensions e.g. [,,]
- //
- typeName.Append(ArrayOpeningBracket);
- int rank = type.GetArrayRank();
- for (int i = 1; i < rank; i++)
- {
- typeName.Append(ArraySeparator);
- }
- typeName.Append(ArrayClosingBracket);
- }
-
- private static void WriteGenericType(StringBuilder typeName, Type type, bool isDefinition, Queue<Type> genericTypeArguments)
- {
- //
- // Writes generic type including parent generic types
- // genericTypeArguments contains type arguments obtained from the most nested type
- // isDefinition parameter indicates if we are dealing with generic type definition
- //
- if (type.DeclaringType != null)
- {
- if (type.DeclaringType.IsGenericType)
- {
- WriteGenericType(typeName, type.DeclaringType, isDefinition, genericTypeArguments);
- }
- else
- {
- WriteNonGenericType(typeName, type.DeclaringType);
- }
- typeName.Append(NestedClassSeparator);
- }
- WriteGenericTypeName(typeName, type, isDefinition, genericTypeArguments);
- }
-
- private static void WriteGenericTypeName(StringBuilder typeName, Type type, bool isDefinition, Queue<Type> genericTypeArguments)
- {
- //
- // Writes generic type name, e.g. generic name and generic arguments
- //
- Assumes.IsTrue(type.IsGenericType, "Expecting type to be a generic type");
- int genericArity = GetGenericArity(type);
- string genericTypeName = FindGenericTypeName(type.GetGenericTypeDefinition().Name);
- typeName.Append(genericTypeName);
- WriteTypeArgumentsString(typeName, genericArity, isDefinition, genericTypeArguments);
- }
-
- private static void WriteTypeArgumentsString(StringBuilder typeName, int argumentsCount, bool isDefinition, Queue<Type> genericTypeArguments)
- {
- //
- // Writes type arguments in brackets, e.g. (<contract_name1>, <contract_name2>, ...)
- //
- if (argumentsCount == 0)
- {
- return;
- }
- typeName.Append(ContractNameGenericOpeningBracket);
- for (int i = 0; i < argumentsCount; i++)
- {
- Assumes.IsTrue(genericTypeArguments.Count > 0, "Expecting genericTypeArguments to contain at least one Type");
- Type genericTypeArgument = genericTypeArguments.Dequeue();
- if (!isDefinition)
- {
- WriteTypeWithNamespace(typeName, genericTypeArgument);
- }
- typeName.Append(ContractNameGenericArgumentSeparator);
- }
- typeName.Remove(typeName.Length - 1, 1);
- typeName.Append(ContractNameGenericClosingBracket);
- }
-
- //internal for testability
- internal static void WriteCustomModifiers(StringBuilder typeName, string customKeyword, Type[] types)
- {
- //
- // Writes custom modifiers in the format: customKeyword(<contract_name>,<contract_name>,...)
- //
- typeName.Append(CustomModifiersSeparator);
- typeName.Append(customKeyword);
- Queue<Type> typeArguments = new Queue<Type>(types);
- WriteTypeArgumentsString(typeName, types.Length, false, typeArguments);
- Assumes.IsTrue(typeArguments.Count == 0, "Expecting genericTypeArguments queue to be empty.");
- }
-
- private static Type FindArrayElementType(Type type)
- {
- //
- // Gets array element type by calling GetElementType() until the element is not an array
- //
- Type elementType = type;
- while ((elementType = elementType.GetElementType()) != null && elementType.IsArray) { }
- return elementType;
- }
-
- private static string FindGenericTypeName(string genericName)
- {
- //
- // Gets generic type name omitting the backquote and arity indicator
- // List`1 -> List
- // Arity indicator is returned as output parameter
- //
- int indexOfBackQuote = genericName.IndexOf(GenericArityBackQuote);
- if (indexOfBackQuote > -1)
- {
- genericName = genericName.Substring(0, indexOfBackQuote);
- }
- return genericName;
- }
-
- private static int GetGenericArity(Type type)
- {
- if (type.DeclaringType == null)
- {
- return type.GetGenericArguments().Length;
- }
-
- // The generic arity is equal to the difference in the number of generic arguments
- // from the type and the declaring type.
-
- int delclaringTypeGenericArguments = type.DeclaringType.GetGenericArguments().Length;
- int typeGenericArguments = type.GetGenericArguments().Length;
-
- Assumes.IsTrue(typeGenericArguments >= delclaringTypeGenericArguments);
-
- return typeGenericArguments - delclaringTypeGenericArguments;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/CreationPolicy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/CreationPolicy.cs
deleted file mode 100644
index 38277c4..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/CreationPolicy.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Option placed on a type that controls when the <see cref="CompositionContainer"/> creates
- /// a new instance of a <see cref="ComposablePart"/>.
- /// </summary>
- public enum CreationPolicy : int
- {
- /// <summary>
- /// Let the <see cref="CompositionContainer"/> choose the most appropriate <see cref="CreationPolicy"/>
- /// for the part given the current context. This is the default <see cref="CreationPolicy"/>, with
- /// the <see cref="CompositionContainer"/> choosing <see cref="CreationPolicy.Shared"/> by default
- /// unless the <see cref="ComposablePart"/> or importer requests <see cref="CreationPolicy.NonShared"/>.
- /// </summary>
- Any = 0,
-
- /// <summary>
- /// A single shared instance of the associated <see cref="ComposablePart"/> will be created
- /// by the <see cref="CompositionContainer"/> and shared by all requestors.
- /// </summary>
- Shared = 1,
-
- /// <summary>
- /// A new non-shared instance of the associated <see cref="ComposablePart"/> will be created
- /// by the <see cref="CompositionContainer"/> for every requestor.
- /// </summary>
- NonShared = 2,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs
deleted file mode 100644
index b6bdec7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTrace.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal static class CompositionTrace
- {
- internal static void PartDefinitionResurrected(ComposablePartDefinition definition)
- {
- Assumes.NotNull(definition);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Rejection_DefinitionResurrected,
- Strings.CompositionTrace_Rejection_DefinitionResurrected,
- definition.GetDisplayName());
- }
- }
-
- internal static void PartDefinitionRejected(ComposablePartDefinition definition, ChangeRejectedException exception)
- {
- Assumes.NotNull(definition, exception);
-
- if (CompositionTraceSource.CanWriteWarning)
- {
- CompositionTraceSource.WriteWarning(CompositionTraceId.Rejection_DefinitionRejected,
- Strings.CompositionTrace_Rejection_DefinitionRejected,
- definition.GetDisplayName(),
- exception.Message);
- }
- }
-
-#if !SILVERLIGHT
-
- internal static void AssemblyLoadFailed(DirectoryCatalog catalog, string fileName, Exception exception)
- {
- Assumes.NotNull(catalog, exception);
- Assumes.NotNullOrEmpty(fileName);
-
- if (CompositionTraceSource.CanWriteWarning)
- {
- CompositionTraceSource.WriteWarning(CompositionTraceId.Discovery_AssemblyLoadFailed,
- Strings.CompositionTrace_Discovery_AssemblyLoadFailed,
- catalog.GetDisplayName(),
- fileName,
- exception.Message);
- }
- }
-
-#endif
-
- internal static void DefinitionMarkedWithPartNotDiscoverableAttribute(Type type)
- {
- Assumes.NotNull(type);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute,
- Strings.CompositionTrace_Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute,
- type.GetDisplayName());
- }
- }
-
- internal static void DefinitionContainsGenericsParameters(Type type)
- {
- Assumes.NotNull(type);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionContainsGenericParameters,
- Strings.CompositionTrace_Discovery_DefinitionContainsGenericParameters,
- type.GetDisplayName());
- }
- }
-
- internal static void DefinitionContainsNoExports(Type type)
- {
- Assumes.NotNull(type);
-
- if (CompositionTraceSource.CanWriteInformation)
- {
- CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionContainsNoExports,
- Strings.CompositionTrace_Discovery_DefinitionContainsNoExports,
- type.GetDisplayName());
- }
- }
-
- internal static void MemberMarkedWithMultipleImportAndImportMany(ReflectionItem item)
- {
- Assumes.NotNull(item);
-
- if (CompositionTraceSource.CanWriteError)
- {
- CompositionTraceSource.WriteError(CompositionTraceId.Discovery_MemberMarkedWithMultipleImportAndImportMany,
- Strings.CompositionTrace_Discovery_MemberMarkedWithMultipleImportAndImportMany,
- item.GetDisplayName());
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs
deleted file mode 100644
index 53e9f85..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceId.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- // NOTE: Do not change the trace ids of values that have already shipped,
- // these leak out to TraceListerners which could take a dependency on them.
- // This enum is a ushort deliberately, the maximum value of a trace id is 65535.
- internal enum CompositionTraceId : ushort
- {
- // Rejection
-
- Rejection_DefinitionRejected = 1,
- Rejection_DefinitionResurrected = 2,
-
- Discovery_AssemblyLoadFailed = 3,
- Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute = 4,
- Discovery_DefinitionContainsGenericParameters = 5,
- Discovery_DefinitionContainsNoExports = 6,
- Discovery_MemberMarkedWithMultipleImportAndImportMany = 7,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs
deleted file mode 100644
index d728709..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/CompositionTraceSource.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal static class CompositionTraceSource
- {
-#if SILVERLIGHT
- private static readonly SilverlightTraceWriter Source = new SilverlightTraceWriter();
-#else
- private static readonly TraceSourceTraceWriter Source = new TraceSourceTraceWriter();
-#endif
-
- public static bool CanWriteInformation
- {
- get { return Source.CanWriteInformation; }
- }
-
- public static bool CanWriteWarning
- {
- get { return Source.CanWriteWarning; }
- }
-
- public static bool CanWriteError
- {
- get { return Source.CanWriteError; }
- }
-
- public static void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments)
- {
- EnsureEnabled(CanWriteInformation);
-
- Source.WriteInformation(traceId, format, arguments);
- }
-
- public static void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments)
- {
- EnsureEnabled(CanWriteWarning);
-
- Source.WriteWarning(traceId, format, arguments);
- }
-
- public static void WriteError(CompositionTraceId traceId, string format, params object[] arguments)
- {
- EnsureEnabled(CanWriteError);
-
- Source.WriteError(traceId, format, arguments);
- }
-
- private static void EnsureEnabled(bool condition)
- {
- Assumes.IsTrue(condition, "To avoid unnecessary work when a trace level has not been enabled, check CanWriteXXX before calling this method.");
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs
deleted file mode 100644
index 68828d9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/SilverlightTraceWriter.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if SILVERLIGHT
-
-using System;
-using System.Diagnostics;
-using System.Globalization;
-using System.Text;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal sealed class SilverlightTraceWriter : TraceWriter
- {
- private static readonly string SourceName = "System.ComponentModel.Composition";
-
- public override bool CanWriteInformation
- {
- get { return false; }
- }
-
- public override bool CanWriteWarning
- {
- get { return Debugger.IsLogging(); }
- }
-
- public override bool CanWriteError
- {
- get { return Debugger.IsLogging(); }
- }
-
- public override void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Information, traceId, format, arguments);
- }
-
- public override void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Warning, traceId, format, arguments);
- }
-
- public override void WriteError(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Error, traceId, format, arguments);
- }
-
- private static void WriteEvent(TraceEventType eventType, CompositionTraceId traceId, string format, params object[] arguments)
- {
- if (!Debugger.IsLogging())
- {
- return;
- }
-
- string logMessage = CreateLogMessage(eventType, traceId, format, arguments);
- Debugger.Log(0, null, logMessage);
- }
-
- internal static string CreateLogMessage(TraceEventType eventType, CompositionTraceId traceId, string format, params object[] arguments)
- {
- StringBuilder messageBuilder = new StringBuilder();
-
- // Format taken from TraceListener.TraceEvent in full framework
- messageBuilder.AppendFormat(CultureInfo.InvariantCulture, "{0} {1}: {2} : ",
- SourceName, eventType.ToString(), (int)traceId);
-
- if (arguments == null)
- {
- messageBuilder.Append(format);
- }
- else
- {
- messageBuilder.AppendFormat(CultureInfo.InvariantCulture, format, arguments);
- }
-
- messageBuilder.AppendLine();
-
- return messageBuilder.ToString();
- }
-
- // Copied from TraceEventType in full framework
- internal enum TraceEventType
- {
- Error = 2,
- Warning = 4,
- Information = 8,
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs
deleted file mode 100644
index 1282002..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceSourceTraceWriter.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Diagnostics;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- // Represents a trace writer that writes to a System.Diagnostics TraceSource
- internal sealed class TraceSourceTraceWriter : TraceWriter
- {
- internal static readonly TraceSource Source = new TraceSource("System.ComponentModel.Composition", SourceLevels.Warning);
-
- public override bool CanWriteInformation
- {
- get { return Source.Switch.ShouldTrace(TraceEventType.Information); }
- }
-
- public override bool CanWriteWarning
- {
- get { return Source.Switch.ShouldTrace(TraceEventType.Warning); }
- }
-
- public override bool CanWriteError
- {
- get { return Source.Switch.ShouldTrace(TraceEventType.Error); }
- }
-
- public override void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Information, traceId, format, arguments);
- }
-
- public override void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Warning, traceId, format, arguments);
- }
-
- public override void WriteError(CompositionTraceId traceId, string format, params object[] arguments)
- {
- WriteEvent(TraceEventType.Error, traceId, format, arguments);
- }
-
- private static void WriteEvent(TraceEventType eventType, CompositionTraceId traceId, string format, params object[] arguments)
- {
- Source.TraceEvent(eventType, (int)traceId, format, arguments);
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceWriter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceWriter.cs
deleted file mode 100644
index 4be992a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Diagnostics/TraceWriter.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-
-using System;
-
-namespace System.ComponentModel.Composition.Diagnostics
-{
- internal abstract class TraceWriter
- {
- public abstract bool CanWriteInformation
- {
- get;
- }
-
- public abstract bool CanWriteWarning
- {
- get;
- }
-
- public abstract bool CanWriteError
- {
- get;
- }
-
- public abstract void WriteInformation(CompositionTraceId traceId, string format, params object[] arguments);
-
- public abstract void WriteWarning(CompositionTraceId traceId, string format, params object[] arguments);
-
- public abstract void WriteError(CompositionTraceId traceId, string format, params object[] arguments);
- }
-}
-
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ErrorBuilder.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ErrorBuilder.cs
deleted file mode 100644
index 83eb9d6..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ErrorBuilder.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ErrorBuilder
- {
- public static CompositionError PreventedByExistingImport(ComposablePart part, ImportDefinition import)
- {
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PreventedByExistingImport,
- Strings.ImportEngine_PreventedByExistingImport,
- import.ToElement().DisplayName,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError InvalidStateForRecompposition(ComposablePart part)
- {
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_InvalidStateForRecomposition,
- Strings.ImportEngine_InvalidStateForRecomposition,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError ComposeTookTooManyIterations(int maximumNumberOfCompositionIterations)
- {
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_ComposeTookTooManyIterations,
- Strings.ImportEngine_ComposeTookTooManyIterations,
- maximumNumberOfCompositionIterations);
- }
-
- public static CompositionError CreateImportCardinalityMismatch(ImportCardinalityMismatchException exception, ImportDefinition definition)
- {
- Assumes.NotNull(exception, definition);
-
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_ImportCardinalityMismatch,
- exception.Message,
- definition.ToElement(),
- (Exception)null);
- }
-
- public static CompositionError CreatePartCannotActivate(ComposablePart part, Exception innerException)
- {
- Assumes.NotNull(part, innerException);
-
- ICompositionElement element = part.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCannotActivate,
- element,
- innerException,
- Strings.ImportEngine_PartCannotActivate,
- element.DisplayName);
- }
-
- public static CompositionError CreatePartCannotSetImport(ComposablePart part, ImportDefinition definition, Exception innerException)
- {
- Assumes.NotNull(part, definition, innerException);
-
- ICompositionElement element = definition.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCannotSetImport,
- element,
- innerException,
- Strings.ImportEngine_PartCannotSetImport,
- element.DisplayName,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError CreateCannotGetExportedValue(ComposablePart part, ExportDefinition definition, Exception innerException)
- {
- Assumes.NotNull(part, definition, innerException);
-
- ICompositionElement element = definition.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCannotGetExportedValue,
- element,
- innerException,
- Strings.ImportEngine_PartCannotGetExportedValue,
- element.DisplayName,
- part.ToElement().DisplayName);
- }
-
- public static CompositionError CreatePartCycle(ComposablePart part)
- {
- Assumes.NotNull(part);
-
- ICompositionElement element = part.ToElement();
- return CompositionError.Create(
- CompositionErrorId.ImportEngine_PartCycle,
- element,
- Strings.ImportEngine_PartCycle,
- element.DisplayName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExceptionBuilder.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExceptionBuilder.cs
deleted file mode 100644
index c790e6c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExceptionBuilder.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition
-{
- internal static class ExceptionBuilder
- {
- public static Exception CreateDiscoveryException(string messageFormat, params string[] arguments)
- {
- // DiscoveryError (Dev10:602872): This should go through the discovery error reporting when
- // we add a way to report discovery errors properly.
- return new InvalidOperationException(Format(messageFormat, arguments));
- }
-
- public static ArgumentException CreateContainsNullElement(string parameterName)
- {
- Assumes.NotNull(parameterName);
-
- string message = Format(Strings.Argument_NullElement, parameterName);
-
- return new ArgumentException(message, parameterName);
- }
-
- public static ObjectDisposedException CreateObjectDisposed(object instance)
- {
- Assumes.NotNull(instance);
-
- return new ObjectDisposedException(instance.GetType().ToString());
- }
-
- public static NotImplementedException CreateNotOverriddenByDerived(string memberName)
- {
- Assumes.NotNullOrEmpty(memberName);
-
- string message = Format(Strings.NotImplemented_NotOverriddenByDerived, memberName);
-
- return new NotImplementedException(message);
- }
-
- public static ArgumentException CreateExportDefinitionNotOnThisComposablePart(string parameterName)
- {
- Assumes.NotNullOrEmpty(parameterName);
-
- string message = Format(Strings.ExportDefinitionNotOnThisComposablePart, parameterName);
-
- return new ArgumentException(message, parameterName);
- }
-
- public static ArgumentException CreateImportDefinitionNotOnThisComposablePart(string parameterName)
- {
- Assumes.NotNullOrEmpty(parameterName);
-
- string message = Format(Strings.ImportDefinitionNotOnThisComposablePart, parameterName);
-
- return new ArgumentException(message, parameterName);
- }
-
- public static CompositionException CreateCannotGetExportedValue(ComposablePart part, ExportDefinition definition, Exception innerException)
- {
- Assumes.NotNull(part, definition, innerException);
-
- return new CompositionException(
- ErrorBuilder.CreateCannotGetExportedValue(part, definition, innerException));
- }
-
- private static string Format(string format, params string[] arguments)
- {
- return String.Format(CultureInfo.CurrentCulture, format, arguments);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportAttribute.cs
deleted file mode 100644
index ccd8813..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportAttribute.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a type, property, field, or method provides a particular export.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method,
- AllowMultiple = true, Inherited = false)]
- public class ExportAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type of the
- /// property or field, or the type itself, that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute()
- : this((string)null, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under a contract name derived from the
- /// specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type or
- /// member marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type of the
- /// property or field, or the type itself, that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type or member
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property or field
- /// type, or the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type or member
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type or
- /// member marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property or field
- /// type, or the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ExportAttribute(string contractName, Type contractType)
- {
- this.ContractName = contractName;
- this.ContractType = contractType;
- }
-
- /// <summary>
- /// Gets the contract name to export the type or member under.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name to export the type or member
- /// marked with this attribute, under. The default value is an empty string ("").
- /// </value>
- public string ContractName { get; private set; }
-
- /// <summary>
- /// Get the contract type that is exported by the member that this attribute is attached to.
- /// </summary>
- /// <value>
- /// A <see cref="Type"/> of the export that is be provided. The default value is
- /// <see langword="null"/> which means that the type will be obtained by looking at the type on
- /// the member that this export is attached to.
- /// </value>
- public Type ContractType { get; private set; }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportCardinalityCheckResult.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportCardinalityCheckResult.cs
deleted file mode 100644
index 566726c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportCardinalityCheckResult.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- internal enum ExportCardinalityCheckResult : int
- {
- Match,
- NoExports,
- TooManyExports
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportMetadataAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportMetadataAttribute.cs
deleted file mode 100644
index 1663690..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportMetadataAttribute.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies metadata for a type, property, field, or method marked with the
- /// <see cref="ExportAttribute"/>.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Property | AttributeTargets.Method | AttributeTargets.Field,
- AllowMultiple = true, Inherited = false)]
- public sealed class ExportMetadataAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportMetadataAttribute"/> with the
- /// specified name and metadata value.
- /// </summary>
- /// <param name="name">
- /// A <see cref="String"/> containing the name of the metadata value; or
- /// <see langword="null"/> to set the <see cref="Name"/> property to an empty
- /// string ("").
- /// </param>
- /// <param name="value">
- /// An <see cref="object"/> containing the metadata value. This can be
- /// <see langword="null"/>.
- /// </param>
- public ExportMetadataAttribute(string name, object value)
- {
- this.Name = name ?? string.Empty;
- this.Value = value;
- }
-
- /// <summary>
- /// Gets the name of the metadata value.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the name of the metadata value.
- /// </value>
- public string Name
- {
- get;
- private set;
- }
-
- /// <summary>
- /// Gets the metadata value.
- /// </summary>
- /// <value>
- /// An <see cref="object"/> containing the metadata value.
- /// </value>
- public object Value
- {
- get;
- private set;
- }
-
- public bool IsMultiple
- {
- get;
- set;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs
deleted file mode 100644
index be89978..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using Microsoft.Internal;
-using System.Collections.Generic;
-
-namespace System.ComponentModel.Composition
-{
- partial class ExportServices
- {
- private sealed class DisposableLazy<T, TMetadataView> : Lazy<T, TMetadataView>, IDisposable
- {
- private IDisposable _disposable;
-
- public DisposableLazy(Func<T> valueFactory, TMetadataView metadataView, IDisposable disposable)
- : base(valueFactory, metadataView)
- {
- Assumes.NotNull(disposable);
-
- this._disposable = disposable;
- }
-
- void IDisposable.Dispose()
- {
- this._disposable.Dispose();
- }
- }
-
- private sealed class DisposableLazy<T> : Lazy<T>, IDisposable
- {
- private IDisposable _disposable;
-
- public DisposableLazy(Func<T> valueFactory, IDisposable disposable)
- : base(valueFactory)
- {
- Assumes.NotNull(disposable);
-
- this._disposable = disposable;
- }
-
- void IDisposable.Dispose()
- {
- this._disposable.Dispose();
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.cs
deleted file mode 100644
index 79c86a2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ExportServices.cs
+++ /dev/null
@@ -1,249 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
- // Provides helpers for creating and dealing with Exports
- internal static partial class ExportServices
- {
- private static readonly MethodInfo _createStronglyTypedLazyOfTM = typeof(ExportServices).GetMethod("CreateStronglyTypedLazyOfTM", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createStronglyTypedLazyOfT = typeof(ExportServices).GetMethod("CreateStronglyTypedLazyOfT", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createSemiStronglyTypedLazy = typeof(ExportServices).GetMethod("CreateSemiStronglyTypedLazy", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createStronglyTypedExportFactoryOfT = typeof(ExportServices).GetMethod("CreateStronglyTypedExportFactoryOfT", BindingFlags.NonPublic | BindingFlags.Static);
- private static readonly MethodInfo _createStronglyTypedExportFactoryOfTM = typeof(ExportServices).GetMethod("CreateStronglyTypedExportFactoryOfTM", BindingFlags.NonPublic | BindingFlags.Static);
-
- internal static readonly Type DefaultMetadataViewType = typeof(IDictionary<string, object>);
- internal static readonly Type DefaultExportedValueType = typeof(object);
-
- internal static bool IsDefaultMetadataViewType(Type metadataViewType)
- {
- Assumes.NotNull(metadataViewType);
-
- // Consider all types that IDictionary<string, object> derives from, such
- // as ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>
- // and IEnumerable, as default metadata view
- return metadataViewType.IsAssignableFrom(DefaultMetadataViewType);
- }
-
- internal static bool IsDictionaryConstructorViewType(Type metadataViewType)
- {
- Assumes.NotNull(metadataViewType);
-
- // Does the view type have a constructor that is a Dictionary<string, object>
- return metadataViewType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
- Type.DefaultBinder,
- new Type[] { typeof(IDictionary<string, object>) },
- new ParameterModifier[0]) != null;
- }
-
- internal static Func<Export, object> CreateStronglyTypedLazyFactory(Type exportType, Type metadataViewType)
- {
- MethodInfo genericMethod = null;
- if (metadataViewType != null)
- {
- genericMethod = _createStronglyTypedLazyOfTM.MakeGenericMethod(exportType ?? ExportServices.DefaultExportedValueType, metadataViewType);
- }
- else
- {
- genericMethod = _createStronglyTypedLazyOfT.MakeGenericMethod(exportType ?? ExportServices.DefaultExportedValueType);
- }
- Assumes.NotNull(genericMethod);
- return (Func<Export, object>)Delegate.CreateDelegate(typeof(Func<Export, object>), genericMethod);
- }
-
- internal static Func<Export, Lazy<object, object>> CreateSemiStronglyTypedLazyFactory(Type exportType, Type metadataViewType)
- {
- MethodInfo genericMethod = _createSemiStronglyTypedLazy.MakeGenericMethod(
- exportType ?? ExportServices.DefaultExportedValueType,
- metadataViewType ?? ExportServices.DefaultMetadataViewType);
- Assumes.NotNull(genericMethod);
- return (Func<Export, Lazy<object, object>>)Delegate.CreateDelegate(typeof(Func<Export, Lazy<object,object>>), genericMethod);
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- internal static Lazy<T, M> CreateStronglyTypedLazyOfTM<T, M>(Export export)
- {
- IDisposable disposable = export as IDisposable;
- if (disposable != null)
- {
- return new DisposableLazy<T, M>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- disposable);
- }
- else
- {
- return new Lazy<T, M>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- false);
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- internal static Lazy<T> CreateStronglyTypedLazyOfT<T>(Export export)
- {
- IDisposable disposable = export as IDisposable;
- if (disposable != null)
- {
- return new DisposableLazy<T>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- disposable);
- }
- else
- {
- return new Lazy<T>(() => ExportServices.GetCastedExportedValue<T>(export), false);
-
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- internal static Lazy<object, object> CreateSemiStronglyTypedLazy<T, M>(Export export)
- {
- IDisposable disposable = export as IDisposable;
- if (disposable != null)
- {
- return new DisposableLazy<object, object>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- disposable);
- }
- else
- {
- return new Lazy<object, object>(
- () => ExportServices.GetCastedExportedValue<T>(export),
- AttributedModelServices.GetMetadataView<M>(export.Metadata),
- false
- );
- }
- }
-
- internal static Func<Export, object> CreateStronglyTypedExportFactoryFactory(Type exportType, Type metadataType, ConstructorInfo constructor)
- {
- MethodInfo genericMethod = null;
- if (metadataType == null)
- {
- genericMethod = _createStronglyTypedExportFactoryOfT.MakeGenericMethod(exportType);
- }
- else
- {
- genericMethod = _createStronglyTypedExportFactoryOfTM.MakeGenericMethod(exportType, metadataType);
- }
-
- Assumes.NotNull(genericMethod);
- Func<Export, ConstructorInfo, object> exportFactoryFactory = (Func<Export, ConstructorInfo, object>)Delegate.CreateDelegate(typeof(Func<Export, ConstructorInfo, object>), genericMethod);
- return (e) => exportFactoryFactory.Invoke(e, constructor);
- }
-
- private static Tuple<T, Action> GetExportLifetimeContextFromExport<T>(Export export)
- {
- T exportedValue;
- Action disposeAction;
- IDisposable disposable = null;
-
- CatalogExportProvider.PartCreatorExport partCreatorExport = export as CatalogExportProvider.PartCreatorExport;
-
- if (partCreatorExport != null)
- {
- // PartCreatorExport is the more optimized route
- Export exportProduct = partCreatorExport.CreateExportProduct();
- exportedValue = GetCastedExportedValue<T>(exportProduct);
- disposable = exportProduct as IDisposable;
- }
- else
- {
- // If it comes from somewhere else we walk through the ComposablePartDefinition
- var factoryPartDefinition = GetCastedExportedValue<ComposablePartDefinition>(export);
- var part = factoryPartDefinition.CreatePart();
- var exportDef = factoryPartDefinition.ExportDefinitions.Single();
-
- exportedValue = CastExportedValue<T>(part.ToElement(), part.GetExportedValue(exportDef));
- disposable = part as IDisposable;
- }
-
- if (disposable != null)
- {
- disposeAction = () => disposable.Dispose();
- }
- else
- {
- disposeAction = () => { };
- }
-
- return new Tuple<T, Action>(exportedValue, disposeAction);
- }
-
- private static object CreateStronglyTypedExportFactoryOfT<T>(Export export, ConstructorInfo constructor)
- {
- Func<Tuple<T, Action>> exportLifetimeContextCreator = () => ExportServices.GetExportLifetimeContextFromExport<T>(export);
- return constructor.Invoke(new object[] { exportLifetimeContextCreator });
- }
-
- private static object CreateStronglyTypedExportFactoryOfTM<T, M>(Export export, ConstructorInfo constructor)
- {
- Func<Tuple<T, Action>> exportLifetimeContextCreator = () => ExportServices.GetExportLifetimeContextFromExport<T>(export);
- return constructor.Invoke(new object[] { exportLifetimeContextCreator, AttributedModelServices.GetMetadataView<M>(export.Metadata) });
- }
-
- internal static T GetCastedExportedValue<T>(Export export)
- {
- return CastExportedValue<T>(export.ToElement(), export.Value);
- }
-
- internal static T CastExportedValue<T>(ICompositionElement element, object exportedValue)
- {
- object typedExportedValue = null;
-
- bool succeeded = ContractServices.TryCast(typeof(T), exportedValue, out typedExportedValue);
- if (!succeeded)
- {
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.ContractMismatch_ExportedValueCannotBeCastToT,
- element.DisplayName,
- typeof(T)));
- }
-
- return (T)typedExportedValue;
- }
-
- internal static ExportCardinalityCheckResult CheckCardinality(ImportDefinition definition, IEnumerable<Export> exports)
- {
- EnumerableCardinality actualCardinality = exports.GetCardinality();
-
- switch (actualCardinality)
- {
- case EnumerableCardinality.Zero:
- if (definition.Cardinality == ImportCardinality.ExactlyOne)
- {
- return ExportCardinalityCheckResult.NoExports;
- }
- break;
-
- case EnumerableCardinality.TwoOrMore:
- if (definition.Cardinality.IsAtMostOne())
- {
- return ExportCardinalityCheckResult.TooManyExports;
- }
- break;
-
- default:
- Assumes.IsTrue(actualCardinality == EnumerableCardinality.One);
- break;
-
- }
-
- return ExportCardinalityCheckResult.Match;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateCatalog.cs
deleted file mode 100644
index 0cbf78a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateCatalog.cs
+++ /dev/null
@@ -1,230 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// A mutable collection of <see cref="ComposablePartCatalog"/>s.
- /// </summary>
- /// <remarks>
- /// This type is thread safe.
- /// </remarks>
- public class AggregateCatalog : ComposablePartCatalog, INotifyComposablePartCatalogChanged
- {
- private ComposablePartCatalogCollection _catalogs = null;
- private volatile int _isDisposed = 0;
- private IQueryable<ComposablePartDefinition> _partsQuery;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateCatalog"/> class.
- /// </summary>
- public AggregateCatalog()
- : this((IEnumerable<ComposablePartCatalog>)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateCatalog"/> class
- /// with the specified catalogs.
- /// </summary>
- /// <param name="catalogs">
- /// An <see cref="Array"/> of <see cref="ComposablePartCatalog"/> objects to add to the
- /// <see cref="AggregateCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="catalogs"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="catalogs"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public AggregateCatalog(params ComposablePartCatalog[] catalogs)
- : this((IEnumerable<ComposablePartCatalog>)catalogs)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateCatalog"/> class
- /// with the specified catalogs.
- /// </summary>
- /// <param name="catalogs">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartCatalog"/> objects to add
- /// to the <see cref="AggregateCatalog"/>; or <see langword="null"/> to
- /// create an <see cref="AggregateCatalog"/> that is empty.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="catalogs"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public AggregateCatalog(IEnumerable<ComposablePartCatalog> catalogs)
- {
- Requires.NullOrNotNullElements(catalogs, "catalogs");
-
- this._catalogs = new ComposablePartCatalogCollection(catalogs, this.OnChanged, this.OnChanging);
- this._partsQuery = this._catalogs.AsQueryable().SelectMany(catalog => catalog.Parts);
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changed.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changed
- {
- add
- {
- this._catalogs.Changed += value;
- }
- remove
- {
- this._catalogs.Changed -= value;
- }
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changing.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changing
- {
- add
- {
- this._catalogs.Changing += value;
- }
- remove
- {
- this._catalogs.Changing -= value;
- }
- }
-
- /// <summary>
- /// Gets the part definitions of the catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="AggregateCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- this.ThrowIfDisposed();
- return this._partsQuery;
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateCatalog"/> has been disposed of.
- /// </exception>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- // delegate the query to each catalog and merge the results.
- var exports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var catalog in this._catalogs)
- {
- foreach (var export in catalog.GetExports(definition))
- {
- exports.Add(export);
- }
- }
- return exports;
- }
-
- /// <summary>
- /// Gets the underlying catalogs of the catalog.
- /// </summary>
- /// <value>
- /// An <see cref="ICollection{T}"/> of underlying <see cref="ComposablePartCatalog"/> objects
- /// of the <see cref="AggregateCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateCatalog"/> has been disposed of.
- /// </exception>
- public ICollection<ComposablePartCatalog> Catalogs
- {
- get
- {
- this.ThrowIfDisposed();
- return this._catalogs;
- }
- }
-
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (disposing)
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this._catalogs.Dispose();
- }
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanged(ComposablePartCatalogChangeEventArgs e)
- {
- this._catalogs.OnChanged(this, e);
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changing"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanging(ComposablePartCatalogChangeEventArgs e)
- {
- this._catalogs.OnChanging(this, e);
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs
deleted file mode 100644
index b624cd5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AggregateExportProvider.cs
+++ /dev/null
@@ -1,219 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public class AggregateExportProvider : ExportProvider , IDisposable
- {
- private ReadOnlyCollection<ExportProvider> _providers;
- private volatile int _isDisposed = 0;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateExportProvider"/> class.
- /// </summary>
- /// <param name="providers">The prioritized list of export providers.</param>
- /// <remarks>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> will consult the providers in the order they have been specfied when
- /// executing <see cref="ExportProvider.GetExports(ImportDefinition,AtomicComposition)"/>.
- /// </para>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> does not take ownership of the specified providers.
- /// That is, it will not try to dispose of any of them when it gets disposed.
- /// </para>
- /// </remarks>
- public AggregateExportProvider(params ExportProvider[] providers)
- : this(providers.AsEnumerable())
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AggregateExportProvider"/> class.
- /// </summary>
- /// <param name="providers">The prioritized list of export providers. The providers are consulted in order in which they are supplied.</param>
- /// <remarks>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> will consult the providers in the order they have been specfied when
- /// executing <see cref="ExportProvider.GetExports(ImportDefinition,AtomicComposition)"/>.
- /// </para>
- /// <para>
- /// The <see cref="AggregateExportProvider"/> does not take ownership of the specified providers.
- /// That is, it will not try to dispose of any of them when it gets disposed.
- /// </para>
- /// </remarks>
- public AggregateExportProvider(IEnumerable<ExportProvider> providers)
- {
- List<ExportProvider> providerList = new List<ExportProvider>();
-
- if (providers != null)
- {
- // we are in the constructor, so there's no need to lock anything
- foreach (var provider in providers)
- {
- if (provider == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("providers");
- }
-
- providerList.Add(provider);
-
- provider.ExportsChanged += this.OnExportChangedInternal;
- provider.ExportsChanging += this.OnExportChangingInternal;
- }
- }
-
- // this will always fully copy the array
- this._providers = new ReadOnlyCollection<ExportProvider>(providerList);
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this._providers.ForEach(provider =>
- {
- provider.ExportsChanged -= this.OnExportChangedInternal;
- provider.ExportsChanging -= this.OnExportChangingInternal;
- });
- }
- }
- }
-
- /// <summary>
- /// Gets the export providers which the aggregate export provider aggregates.
- /// </summary>
- /// <value>
- /// A <see cref="ReadOnlyCollection{T}"/> of <see cref="ExportProvider"/> objects
- /// which the <see cref="AggregateExportProvider"/> aggregates.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AggregateExportProvider"/> has been disposed of.
- /// </exception>
- public ReadOnlyCollection<ExportProvider> Providers
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this._providers;
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- if (definition.Cardinality == ImportCardinality.ZeroOrMore)
- {
- var exports = new List<Export>();
- foreach (var provider in this._providers)
- {
- foreach (var export in provider.GetExports(definition, atomicComposition))
- {
- exports.Add(export);
- }
- }
- return exports;
- }
- else
- {
- IEnumerable<Export> allExports = Enumerable.Empty<Export>();
-
- // if asked for "one or less", the prioriry is at play - the first provider that agrees to return the value
- // which best complies with the request, wins.
- foreach (ExportProvider provider in this._providers)
- {
- IEnumerable<Export> exports;
- bool cardinalityCheckResult = provider.TryGetExports(definition, atomicComposition, out exports);
- bool anyExports = exports.FastAny();
- if (cardinalityCheckResult && anyExports)
- {
- // NOTE : if the provider returned nothing, we need to proceed, even if it indicated that the
- // cardinality is correct - when asked for "one or less", the provider might - correctly -
- // return an empty sequence, but we shouldn't be satisfied with that as providers down the list
- // might have a value we are interested in.
- return exports;
- }
- else
- {
- // TODO
- // This is a sneaky thing that we do - if in the end no provider returns the exports with the right cardinality
- // we simply return the aggregation of all exports they have restuned. This way the end result is still not waht we want
- // but no information is lost.
- // WE SHOULD fix this behavior, but this is ONLY possible if we can treat many exports as no exports for the sake of singles
- if (anyExports)
- {
- allExports = allExports.Concat(exports);
- }
- }
- }
-
- return allExports;
- }
- }
-
- private void OnExportChangedInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanged(e);
- }
-
- private void OnExportChangingInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanging(e);
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs
deleted file mode 100644
index b2db43d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalog.cs
+++ /dev/null
@@ -1,301 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Security;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// An immutable ComposablePartCatalog created from a managed code assembly.
- /// </summary>
- /// <remarks>
- /// This type is thread safe.
- /// </remarks>
- [DebuggerTypeProxy(typeof(AssemblyCatalogDebuggerProxy))]
- public class AssemblyCatalog : ComposablePartCatalog, ICompositionElement
- {
- private readonly object _thisLock = new object();
- private readonly ICompositionElement _definitionOrigin;
- private volatile Assembly _assembly = null;
- private volatile TypeCatalog _innerCatalog = null;
- private int _isDisposed = 0;
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AssemblyCatalog"/> class
- /// with the specified code base.
- /// </summary>
- /// <param name="codeBase">
- /// A <see cref="String"/> containing the code base of the assembly containing the
- /// attributed <see cref="Type"/> objects to add to the <see cref="AssemblyCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="codeBase"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="codeBase"/> is a zero-length string, contains only white space,
- /// or contains one or more invalid characters as defined by <see cref="Path.InvalidPathChars"/>.
- /// </exception>
- /// <exception cref="PathTooLongException">
- /// The specified path, file name, or both exceed the system-defined maximum length.
- /// </exception>
- /// <exception cref="SecurityException">
- /// The caller does not have path discovery permission.
- /// </exception>
- /// <exception cref="FileNotFoundException">
- /// <paramref name="codeBase"/> is not found.
- /// </exception>
- /// <exception cref="FileLoadException ">
- /// <paramref name="codeBase"/> could not be loaded.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="codeBase"/> specified a directory.
- /// </exception>
- /// <exception cref="BadImageFormatException">
- /// <paramref name="codeBase"/> is not a valid assembly
- /// -or-
- /// Version 2.0 or later of the common language runtime is currently loaded
- /// and <paramref name="codeBase"/> was compiled with a later version.
- /// </exception>
- /// <remarks>
- /// The assembly referenced by <paramref langword="codeBase"/> is loaded into the Load context.
- /// </remarks>
- public AssemblyCatalog(string codeBase)
- : this(codeBase, (ICompositionElement)null)
- {
- }
-
- internal AssemblyCatalog(string codeBase, ICompositionElement definitionOrigin)
- : this(LoadAssembly(codeBase), definitionOrigin)
- {
- }
-
-#endif
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AssemblyCatalog"/> class
- /// with the specified assembly.
- /// </summary>
- /// <param name="assembly">
- /// The <see cref="Assembly"/> containing the attributed <see cref="Type"/> objects to
- /// add to the <see cref="AssemblyCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="assembly"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="assembly"/> was loaded in the reflection-only context.
- /// </exception>
- public AssemblyCatalog(Assembly assembly)
- : this(assembly, (ICompositionElement)null)
- {
- }
-
- internal AssemblyCatalog(Assembly assembly, ICompositionElement definitionOrigin)
- {
- Requires.NotNull(assembly, "assembly");
-
-#if !SILVERLIGHT
- if (assembly.ReflectionOnly)
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.Argument_AssemblyReflectionOnly, "assembly"), "assembly");
- }
-#endif
- this._assembly = assembly;
- this._definitionOrigin = definitionOrigin ?? this;
- }
-
- /// <summary>
- /// Gets the part definitions of the assembly catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="AssemblyCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="AssemblyCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- return this.InnerCatalog.Parts;
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>, if no
- /// <see cref="ExportDefinition"/> match the conditions defined by
- /// <paramref name="definition"/>, return an empty <see cref="IEnumerable{T}"/>.
- /// </note>
- /// </remarks>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- return this.InnerCatalog.GetExports(definition);
- }
-
- private TypeCatalog InnerCatalog
- {
- get
- {
- this.ThrowIfDisposed();
-
- if (this._innerCatalog == null)
- {
- lock (this._thisLock)
- {
- if (this._innerCatalog == null)
- {
- var catalog = new TypeCatalog(this._assembly.GetTypes(), _definitionOrigin);
- this._innerCatalog = catalog;
- }
- }
- }
- return this._innerCatalog;
- }
- }
-
- /// <summary>
- /// Gets the assembly containing the attributed types contained within the assembly
- /// catalog.
- /// </summary>
- /// <value>
- /// The <see cref="Assembly"/> containing the attributed <see cref="Type"/> objects
- /// contained within the <see cref="AssemblyCatalog"/>.
- /// </value>
- public Assembly Assembly
- {
- get { return this._assembly; }
- }
-
- /// <summary>
- /// Gets the display name of the assembly catalog.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="AssemblyCatalog"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- /// <summary>
- /// Gets the composition element from which the assembly catalog originated.
- /// </summary>
- /// <value>
- /// This property always returns <see langword="null"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- ICompositionElement ICompositionElement.Origin
- {
- get { return null; }
- }
-
-
- /// <summary>
- /// Returns a string representation of the assembly catalog.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the string representation of the <see cref="AssemblyCatalog"/>.
- /// </returns>
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- if (disposing)
- {
- if (this._innerCatalog != null)
- {
- this._innerCatalog.Dispose();
- }
- }
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- private string GetDisplayName()
- {
- return string.Format(CultureInfo.CurrentCulture,
- "{0} (Assembly=\"{1}\")", // NOLOC
- GetType().Name,
- this.Assembly.FullName);
- }
-
-#if !SILVERLIGHT
-
- private static Assembly LoadAssembly(string codeBase)
- {
- Requires.NotNullOrEmpty(codeBase, "codeBase");
-
- AssemblyName assemblyName;
-
- try
- {
- assemblyName = AssemblyName.GetAssemblyName(codeBase);
- }
- catch (ArgumentException)
- {
- assemblyName = new AssemblyName();
- assemblyName.CodeBase = codeBase;
- }
-
- return Assembly.Load(assemblyName);
- }
-#endif
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs
deleted file mode 100644
index e8f5198..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AssemblyCatalogDebuggerProxy.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- internal class AssemblyCatalogDebuggerProxy
- {
- private readonly AssemblyCatalog _catalog;
-
- public AssemblyCatalogDebuggerProxy(AssemblyCatalog catalog)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
- }
-
- public Assembly Assembly
- {
- get { return this._catalog.Assembly; }
- }
-
- public ReadOnlyCollection<ComposablePartDefinition> Parts
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying catalog is respected.
- // We use ReadOnlyCollection as arrays do not have the
- // appropriate debugger display attributes applied to them.
- get { return this._catalog.Parts.ToReadOnlyCollection(); }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicComposition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicComposition.cs
deleted file mode 100644
index 488e1cc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicComposition.cs
+++ /dev/null
@@ -1,305 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Collections.Generic;
-using Microsoft.Internal;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// AtomicComposition provides lightweight atomicCompositional semantics to enable temporary
- /// state to be managed for a series of nested atomicCompositions. Each atomicComposition maintains
- /// queryable state along with a sequence of actions necessary to complete the state when
- /// the atomicComposition is no longer in danger of being rolled back. State is completed or
- /// rolled back when the atomicComposition is disposed, depending on the state of the
- /// CompleteOnDipose property which defaults to false. The using(...) pattern in C# is a
- /// convenient mechanism for defining atomicComposition scopes.
- ///
- /// The least obvious aspects of AtomicComposition deal with nesting.
- ///
- /// Firstly, no complete actions are actually performed until the outermost atomicComposition is
- /// completed. Completeting or rolling back nested atomicCompositions serves only to change which
- /// actions would be completed the outer atomicComposition.
- ///
- /// Secondly, state is added in the form of queries associated with an object key. The
- /// key represents a unique object the state is being held on behalf of. The quieries are
- /// accessed throught the Query methods which provide automatic chaining to execute queries
- /// across the target atomicComposition and its inner atomicComposition as appropriate.
- ///
- /// Lastly, when a nested atomicComposition is created for a given outer the outer atomicComposition is locked.
- /// It remains locked until the inner atomicComposition is disposed or completeed preventing the addition of
- /// state, actions or other inner atomicCompositions.
- /// </summary>
- public class AtomicComposition : IDisposable
- {
- private readonly AtomicComposition _outerAtomicComposition;
- private KeyValuePair<object, object>[] _values;
- private int _valueCount = 0;
- private List<Action> _completeActionList;
- private List<Action> _revertActionList;
- private bool _isDisposed = false;
- private bool _isCompleted = false;
- private bool _containsInnerAtomicComposition = false;
-
- public AtomicComposition()
- : this(null)
- {
- }
-
- public AtomicComposition(AtomicComposition outerAtomicComposition)
- {
- // Lock the inner atomicComposition so that we can assume nothing changes except on
- // the innermost scope, and thereby optimize the query path
- if (outerAtomicComposition != null)
- {
- this._outerAtomicComposition = outerAtomicComposition;
- this._outerAtomicComposition.ContainsInnerAtomicComposition = true;
- }
- }
-
- public void SetValue(object key, object value)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
- ThrowIfContainsInnerAtomicComposition();
-
- Requires.NotNull(key, "key");
-
- SetValueInternal(key, value);
- }
-
- public bool TryGetValue<T>(object key, out T value)
- {
- return TryGetValue(key, false, out value);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters")]
- public bool TryGetValue<T>(object key, bool localAtomicCompositionOnly, out T value)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
-
- Requires.NotNull(key, "key");
-
- return TryGetValueInternal(key, localAtomicCompositionOnly, out value);
- }
-
- public void AddCompleteAction(Action completeAction)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
- ThrowIfContainsInnerAtomicComposition();
-
- Requires.NotNull(completeAction, "completeAction");
-
- if (this._completeActionList == null)
- {
- this._completeActionList = new List<Action>();
- }
- this._completeActionList.Add(completeAction);
- }
-
- public void AddRevertAction(Action revertAction)
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
- ThrowIfContainsInnerAtomicComposition();
-
- Requires.NotNull(revertAction, "revertAction");
-
- if (this._revertActionList == null)
- {
- this._revertActionList = new List<Action>();
- }
- this._revertActionList.Add(revertAction);
- }
-
- public void Complete()
- {
- ThrowIfDisposed();
- ThrowIfCompleteed();
-
- if (this._outerAtomicComposition == null)
- { // Execute all the complete actions
- FinalComplete();
- }
- else
- { // Copy the actions and state to the outer atomicComposition
- CopyComplete();
- }
-
- this._isCompleted = true;
- }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- ThrowIfDisposed();
- this._isDisposed = true;
-
- if (this._outerAtomicComposition != null)
- {
- this._outerAtomicComposition.ContainsInnerAtomicComposition = false;
- }
-
- // Revert is always immediate and involves forgetting information and
- // exceuting any appropriate revert actions
- if (!this._isCompleted)
- {
- if (this._revertActionList != null)
- {
- // Execute the revert actions in reverse order to ensure
- // everything incrementally rollsback its state.
- for (int i = this._revertActionList.Count - 1; i >= 0; i--)
- {
- Action action = this._revertActionList[i];
- action();
- }
- this._revertActionList = null;
- }
- }
- }
-
- private void FinalComplete()
- {
- // Completeting the outer most scope is easy, just execute all the actions
- if (this._completeActionList != null)
- {
- foreach (Action action in this._completeActionList)
- {
- action();
- }
- this._completeActionList = null;
- }
- }
-
- private void CopyComplete()
- {
- Assumes.NotNull(this._outerAtomicComposition);
-
- this._outerAtomicComposition.ContainsInnerAtomicComposition = false;
-
- // Inner scopes are much odder, because completeting them means coalescing them into the
- // outer scope - the complete or revert actions are deferred until the outermost scope completes
- // or any intermediate rolls back
- if (this._completeActionList != null)
- {
- foreach (Action action in this._completeActionList)
- {
- this._outerAtomicComposition.AddCompleteAction(action);
- }
- }
-
- if (this._revertActionList != null)
- {
- foreach (Action action in this._revertActionList)
- {
- this._outerAtomicComposition.AddRevertAction(action);
- }
- }
-
- // We can copy over existing atomicComposition entries because they're either already chained or
- // overwrite by design and can now be completed or rolled back together
- for (var index = 0; index < this._valueCount; index++)
- {
- this._outerAtomicComposition.SetValueInternal(
- this._values[index].Key, this._values[index].Value);
- }
- }
-
- private bool ContainsInnerAtomicComposition
- {
- set
- {
- if (value == true && this._containsInnerAtomicComposition == true)
- {
- throw new InvalidOperationException(Strings.AtomicComposition_AlreadyNested);
- }
- this._containsInnerAtomicComposition = value;
- }
- }
-
- private bool TryGetValueInternal<T>(object key, bool localAtomicCompositionOnly, out T value)
- {
- for (var index = 0; index < this._valueCount; index++)
- {
- if (this._values[index].Key == key)
- {
- value = (T)this._values[index].Value;
- return true;
- }
- }
-
- // If there's no atomicComposition available then recurse until we hit the outermost
- // scope, where upon we go ahead and return null
- if (!localAtomicCompositionOnly && this._outerAtomicComposition != null)
- {
- return this._outerAtomicComposition.TryGetValueInternal<T>(key, localAtomicCompositionOnly, out value);
- }
-
- value = default(T);
- return false;
- }
-
- private void SetValueInternal(object key, object value)
- {
- // Handle overwrites quickly
- for (var index = 0; index < this._valueCount; index++)
- {
- if (this._values[index].Key == key)
- {
- this._values[index] = new KeyValuePair<object,object>(key, value);
- return;
- }
- }
-
- // Expand storage when needed
- if (this._values == null || this._valueCount == this._values.Length)
- {
- var newQueries = new KeyValuePair<object, object>[this._valueCount == 0 ? 5 : this._valueCount * 2];
- if (this._values != null)
- {
- Array.Copy(this._values, newQueries, this._valueCount);
- }
- this._values = newQueries;
- }
-
- // Store a new entry
- this._values[_valueCount] = new KeyValuePair<object, object>(key, value);
- this._valueCount++;
- return;
- }
-
- [DebuggerStepThrough]
- private void ThrowIfContainsInnerAtomicComposition()
- {
- if (this._containsInnerAtomicComposition)
- {
- throw new InvalidOperationException(Strings.AtomicComposition_PartOfAnotherAtomicComposition);
- }
- }
-
- [DebuggerStepThrough]
- private void ThrowIfCompleteed()
- {
- if (this._isCompleted)
- {
- throw new InvalidOperationException(Strings.AtomicComposition_AlreadyCompleted);
- }
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs
deleted file mode 100644
index af57329..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Collections.Generic;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- internal static class AtomicCompositionExtensions
- {
- internal static T GetValueAllowNull<T>(this AtomicComposition atomicComposition, T defaultResultAndKey) where T : class
- {
- Assumes.NotNull(defaultResultAndKey);
-
- return GetValueAllowNull<T>(atomicComposition, defaultResultAndKey, defaultResultAndKey);
- }
-
- internal static T GetValueAllowNull<T>(this AtomicComposition atomicComposition, object key, T defaultResult)
- {
- T result;
- if (atomicComposition != null && atomicComposition.TryGetValue(key, out result))
- {
- return result;
- }
-
- return defaultResult;
- }
-
- internal static void AddRevertActionAllowNull(this AtomicComposition atomicComposition, Action action)
- {
- Assumes.NotNull(action);
-
- if (atomicComposition == null)
- {
- action();
- }
- else
- {
- atomicComposition.AddRevertAction(action);
- }
- }
-
- internal static void AddCompleteActionAllowNull(this AtomicComposition atomicComposition, Action action)
- {
- Assumes.NotNull(action);
-
- if (atomicComposition == null)
- {
- action();
- }
- else
- {
- atomicComposition.AddCompleteAction(action);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs
deleted file mode 100644
index a66471d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogChangeProxy.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using System.Threading;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider : ExportProvider, IDisposable
- {
- private class CatalogChangeProxy : ComposablePartCatalog
- {
- private ComposablePartCatalog _originalCatalog;
- private List<ComposablePartDefinition> _addedParts;
- private HashSet<ComposablePartDefinition> _removedParts;
-
- public CatalogChangeProxy(ComposablePartCatalog originalCatalog,
- IEnumerable<ComposablePartDefinition> addedParts,
- IEnumerable<ComposablePartDefinition> removedParts)
- {
- this._originalCatalog = originalCatalog;
- this._addedParts = new List<ComposablePartDefinition>(addedParts);
- this._removedParts = new HashSet<ComposablePartDefinition>(removedParts);
- }
-
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- return this._originalCatalog.Parts.Concat(this._addedParts).Except(this._removedParts);
- }
- }
-
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(
- ImportDefinition definition)
- {
- Requires.NotNull(definition, "definition");
-
- var originalExports = this._originalCatalog.GetExports(definition);
- var trimmedExports = originalExports.Where(partAndExport =>
- !this._removedParts.Contains(partAndExport.Item1));
-
- var addedExports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var part in this._addedParts)
- {
- foreach (var export in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(export))
- {
- addedExports.Add(new Tuple<ComposablePartDefinition, ExportDefinition>(part, export));
- }
- }
- }
- return trimmedExports.Concat(addedExports);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs
deleted file mode 100644
index 35ea352..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.CatalogExport.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider
- {
- private class CatalogExport : Export
- {
- protected readonly CatalogExportProvider _catalogExportProvider;
- protected readonly ComposablePartDefinition _partDefinition;
- protected readonly ExportDefinition _definition;
- protected ComposablePart _part;
-
- public CatalogExport(CatalogExportProvider catalogExportProvider,
- ComposablePartDefinition partDefinition, ExportDefinition definition)
- {
- this._catalogExportProvider = catalogExportProvider;
- this._partDefinition = partDefinition;
- this._definition = definition;
- }
-
- public override ExportDefinition Definition
- {
- get
- {
- return this._definition;
- }
- }
-
- protected virtual bool IsSharedPart
- {
- get
- {
- return true;
- }
- }
-
- protected override object GetExportedValueCore()
- {
- ComposablePart part = this._catalogExportProvider.GetComposablePart(this._partDefinition, this.IsSharedPart);
- object exportedValue = this._catalogExportProvider.GetExportedValue(part, this._definition, this.IsSharedPart);
- this._part = part;
-
- return exportedValue;
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- public static CatalogExport CreateExport(CatalogExportProvider catalogExportProvider,
- ComposablePartDefinition partDefinition, ExportDefinition definition, CreationPolicy importCreationPolicy)
- {
- CreationPolicy partPolicy = partDefinition.Metadata.GetValue<CreationPolicy>(CompositionConstants.PartCreationPolicyMetadataName);
- bool isSharedPart = ShouldUseSharedPart(partPolicy, importCreationPolicy);
-
- if (isSharedPart)
- {
- return new CatalogExport(catalogExportProvider, partDefinition, definition);
- }
- else
- {
- return new NonSharedCatalogExport(catalogExportProvider, partDefinition, definition);
- }
- }
-
- private static bool ShouldUseSharedPart(CreationPolicy partPolicy, CreationPolicy importPolicy)
- {
- // Matrix that details which policy to use for a given part to satisfy a given import.
- // Part.Any Part.Shared Part.NonShared
- // Import.Any Shared Shared NonShared
- // Import.Shared Shared Shared N/A
- // Import.NonShared NonShared N/A NonShared
-
- switch (partPolicy)
- {
- case CreationPolicy.Any:
- {
- if (importPolicy == CreationPolicy.Any ||
- importPolicy == CreationPolicy.Shared)
- {
- return true;
- }
- return false;
- }
-
- case CreationPolicy.NonShared:
- {
- Assumes.IsTrue(importPolicy != CreationPolicy.Shared);
- return false;
- }
-
- default:
- {
- Assumes.IsTrue(partPolicy == CreationPolicy.Shared);
- Assumes.IsTrue(importPolicy != CreationPolicy.NonShared);
- return true;
- }
- }
- }
- }
-
- private sealed class NonSharedCatalogExport : CatalogExport, IDisposable
- {
- public NonSharedCatalogExport(CatalogExportProvider catalogExportProvider,
- ComposablePartDefinition partDefinition, ExportDefinition definition)
- : base(catalogExportProvider, partDefinition, definition)
- {
- }
-
- protected override bool IsSharedPart
- {
- get
- {
- return false;
- }
- }
-
- void IDisposable.Dispose()
- {
- if (this._part != null)
- {
- this._catalogExportProvider.ReleasePart(this.Value, this._part, null);
- this._part = null;
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs
deleted file mode 100644
index 62202b2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.PartCreatorExport.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider
- {
- internal class PartCreatorExport : Export
- {
- private readonly CatalogExportProvider _catalogExportProvider;
- private readonly ComposablePartDefinition _partDefinition;
- private readonly ExportDefinition _exportDefinition;
- private ExportDefinition _partCreatorExportDefinition;
- private PartCreatorPartDefinition _partCreatorPartDefinition;
-
- public PartCreatorExport(CatalogExportProvider catalogExportProvider, ComposablePartDefinition partDefinition, ExportDefinition exportDefinition)
- {
- this._catalogExportProvider = catalogExportProvider;
- this._partDefinition = partDefinition;
- this._exportDefinition = exportDefinition;
- this._partCreatorExportDefinition = new PartCreatorExportDefinition(this._exportDefinition);
- }
-
- public override ExportDefinition Definition
- {
- get { return this._partCreatorExportDefinition; }
- }
-
- protected override object GetExportedValueCore()
- {
- if (this._partCreatorPartDefinition == null)
- {
- this._partCreatorPartDefinition = new PartCreatorPartDefinition(this);
- }
- return this._partCreatorPartDefinition;
- }
-
- public Export CreateExportProduct()
- {
- return new NonSharedCatalogExport(this._catalogExportProvider, this._partDefinition, this._exportDefinition);
- }
-
- private class PartCreatorPartDefinition : ComposablePartDefinition
- {
- private readonly PartCreatorExport _partCreatorExport;
-
- public PartCreatorPartDefinition(PartCreatorExport partCreatorExport)
- {
- this._partCreatorExport = partCreatorExport;
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get { return new ExportDefinition[] { this._partCreatorExport.Definition }; }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get { return Enumerable.Empty<ImportDefinition>(); }
- }
-
- public ExportDefinition PartCreatorExportDefinition
- {
- get { return this._partCreatorExport.Definition; }
- }
-
- public Export CreateProductExport()
- {
- return this._partCreatorExport.CreateExportProduct();
- }
-
- public override ComposablePart CreatePart()
- {
- return new PartCreatorPart(this);
- }
- }
-
- private sealed class PartCreatorPart : ComposablePart, IDisposable
- {
- private readonly PartCreatorPartDefinition _definition;
- private readonly Export _export;
-
- public PartCreatorPart(PartCreatorPartDefinition definition)
- {
- this._definition = definition;
- this._export = definition.CreateProductExport();
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get { return this._definition.ExportDefinitions; }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get { return this._definition.ImportDefinitions; }
- }
-
- public override object GetExportedValue(ExportDefinition definition)
- {
- if (definition != this._definition.PartCreatorExportDefinition)
- {
- throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
- }
-
- return this._export.Value;
- }
-
- public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
- {
- throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
- }
-
- public void Dispose()
- {
- IDisposable disposable = this._export as IDisposable;
-
- if (disposable != null)
- {
- disposable.Dispose();
- }
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs
deleted file mode 100644
index 9318d80..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs
+++ /dev/null
@@ -1,816 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CatalogExportProvider : ExportProvider, IDisposable
- {
- private readonly CompositionLock _lock;
- private Dictionary<ComposablePartDefinition, ComposablePart> _activatedParts = new Dictionary<ComposablePartDefinition, ComposablePart>();
- private HashSet<ComposablePartDefinition> _rejectedParts = new HashSet<ComposablePartDefinition>();
- private ConditionalWeakTable<object, List<ComposablePart>> _conditionalReferencesForRecomposableParts = new ConditionalWeakTable<object, List<ComposablePart>>();
- private HashSet<IDisposable> _partsToDispose = new HashSet<IDisposable>();
- private ComposablePartCatalog _catalog;
- private volatile bool _isDisposed = false;
- private volatile bool _isRunning = false;
- private ExportProvider _sourceProvider;
- private ImportEngine _importEngine;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CatalogExportProvider"/> class.
- /// </summary>
- /// <param name="catalog">
- /// The <see cref="ComposablePartCatalog"/> that the <see cref="CatalogExportProvider"/>
- /// uses to produce <see cref="Export"/> objects.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="catalog"/> is <see langword="null"/>.
- /// </exception>
- public CatalogExportProvider(ComposablePartCatalog catalog)
- : this(catalog, false)
- {
- }
-
- public CatalogExportProvider(ComposablePartCatalog catalog, bool isThreadSafe)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
-
- var notifyCatalogChanged = this._catalog as INotifyComposablePartCatalogChanged;
- if (notifyCatalogChanged != null)
- {
- notifyCatalogChanged.Changing += this.OnCatalogChanging;
- }
-
- this._lock = new CompositionLock(isThreadSafe);
- }
-
- /// <summary>
- /// Gets the composable part catalog that the provider users to
- /// produce exports.
- /// </summary>
- /// <value>
- /// The <see cref="ComposablePartCatalog"/> that the
- /// <see cref="CatalogExportProvider"/>
- /// uses to produce <see cref="Export"/> objects.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public ComposablePartCatalog Catalog
- {
- get
- {
- ThrowIfDisposed();
-
- return this._catalog;
- }
- }
-
- /// <summary>
- /// Gets the export provider which provides the provider access to additional
- /// exports.
- /// </summary>
- /// <value>
- /// The <see cref="ExportProvider"/> which provides the
- /// <see cref="CatalogExportProvider"/> access to additional
- /// <see cref="Export"/> objects. The default is <see langword="null"/>.
- /// </value>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="value"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// This property has already been set.
- /// <para>
- /// -or-
- /// </para>
- /// The methods on the <see cref="CatalogExportProvider"/>
- /// have already been accessed.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CatalogExportProvider"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// This property must be set before accessing any methods on the
- /// <see cref="CatalogExportProvider"/>.
- /// </remarks>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification="EnsureCanSet ensures that the property is set only once, Dispose is not required")]
- public ExportProvider SourceProvider
- {
- get
- {
- this.ThrowIfDisposed();
- using (this._lock.LockStateForRead())
- {
- return this._sourceProvider;
- }
- }
- set
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(value, "value");
-
- ImportEngine newImportEngine = null;
- bool isThrowing = true;
- try
- {
- newImportEngine = new ImportEngine(value, this._lock.IsThreadSafe);
- value.ExportsChanging += this.OnExportsChangingInternal;
-
- using (this._lock.LockStateForWrite())
- {
- this.EnsureCanSet(this._sourceProvider);
-
- this._sourceProvider = value;
- this._importEngine = newImportEngine;
-
- isThrowing = false;
- }
- }
- finally
- {
- if (isThrowing)
- {
- value.ExportsChanging -= this.OnExportsChangingInternal;
- newImportEngine.Dispose();
- }
- }
- }
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- INotifyComposablePartCatalogChanged catalogToUnsubscribeFrom = null;
- HashSet<IDisposable> partsToDispose = null;
- ExportProvider sourceProviderToUnsubscribeFrom = null;
- ImportEngine importEngineToDispose = null;
-
- try
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isDisposed)
- {
- catalogToUnsubscribeFrom = this._catalog as INotifyComposablePartCatalogChanged;
- this._catalog = null;
-
- sourceProviderToUnsubscribeFrom = this._sourceProvider;
- this._sourceProvider = null;
-
- importEngineToDispose = this._importEngine;
- this._importEngine = null;
-
- partsToDispose = this._partsToDispose;
- this._partsToDispose = new HashSet<IDisposable>();
- this._activatedParts.Clear();
- this._conditionalReferencesForRecomposableParts = null;
-
- disposeLock = true;
- this._isDisposed = true;
- }
- }
- }
- finally
- {
- if (catalogToUnsubscribeFrom != null)
- {
- catalogToUnsubscribeFrom.Changing -= this.OnCatalogChanging;
- }
-
- if (sourceProviderToUnsubscribeFrom != null)
- {
- sourceProviderToUnsubscribeFrom.ExportsChanging -= this.OnExportsChangingInternal;
- }
-
- if (importEngineToDispose != null)
- {
- importEngineToDispose.Dispose();
- }
-
- if (partsToDispose != null)
- {
- foreach (var part in partsToDispose)
- {
- part.Dispose();
- }
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- // Use the version of the catalog appropriate to this atomicComposition
- ComposablePartCatalog currentCatalog = atomicComposition.GetValueAllowNull(this._catalog);
-
- IPartCreatorImportDefinition partCreatorDefinition = definition as IPartCreatorImportDefinition;
- bool isPartCreator = false;
-
- if (partCreatorDefinition != null)
- {
- definition = partCreatorDefinition.ProductImportDefinition;
- isPartCreator = true;
- }
-
- CreationPolicy importPolicy = definition.GetRequiredCreationPolicy();
-
- List<Export> exports = new List<Export>();
- foreach (var partDefinitionAndExportDefinition in currentCatalog.GetExports(definition))
- {
- if (!IsRejected(partDefinitionAndExportDefinition.Item1, atomicComposition))
- {
- if (isPartCreator)
- {
- exports.Add(new PartCreatorExport(this,
- partDefinitionAndExportDefinition.Item1,
- partDefinitionAndExportDefinition.Item2));
- }
- else
- {
- exports.Add(CatalogExport.CreateExport(this,
- partDefinitionAndExportDefinition.Item1,
- partDefinitionAndExportDefinition.Item2,
- importPolicy));
- }
- }
- }
-
- return exports;
- }
-
- private void OnExportsChangingInternal(object sender, ExportsChangeEventArgs e)
- {
- UpdateRejections(e.AddedExports.Concat(e.RemovedExports), e.AtomicComposition);
- }
-
- private static ExportDefinition[] GetExportsFromPartDefinitions(IEnumerable<ComposablePartDefinition> partDefinitions)
- {
- List<ExportDefinition> exports = new List<ExportDefinition>();
-
- foreach (var partDefinition in partDefinitions)
- {
- foreach (var export in partDefinition.ExportDefinitions)
- {
- exports.Add(export);
-
- // While creating a PartCreatorExportDefinition for every changed definition may not be the most
- // efficient way to do this the PartCreatorExportDefinition is very efficient and doesn't do any
- // real work unless its metadata is pulled on. If this turns out to be a bottleneck then we
- // will need to start tracking all the PartCreator's we hand out and only send those which we
- // have handed out. In fact we could do the same thing for all the Exports if we wished but
- // that requires a cache management which we don't want to do at this point.
- exports.Add(new PartCreatorExportDefinition(export));
- }
- }
-
- return exports.ToArray();
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- private void OnCatalogChanging(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- using (var atomicComposition = new AtomicComposition(e.AtomicComposition))
- {
- // Save the preview catalog to use in place of the original while handling
- // this event
- atomicComposition.SetValue(this._catalog,
- new CatalogChangeProxy(this._catalog, e.AddedDefinitions, e.RemovedDefinitions));
-
- IEnumerable<ExportDefinition> addedExports = GetExportsFromPartDefinitions(e.AddedDefinitions);
- IEnumerable<ExportDefinition> removedExports = GetExportsFromPartDefinitions(e.RemovedDefinitions);
-
- // Remove any parts based on eliminated definitions (in a atomicComposition-friendly
- // fashion)
- foreach (var definition in e.RemovedDefinitions)
- {
- ComposablePart removedPart = null;
- bool removed = false;
-
- using (this._lock.LockStateForRead())
- {
- removed = this._activatedParts.TryGetValue(definition, out removedPart);
- }
- if (removed)
- {
- var capturedDefinition = definition;
- ReleasePart(null, removedPart, atomicComposition);
- atomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._activatedParts.Remove(capturedDefinition);
- }
- });
- }
- }
-
- UpdateRejections(addedExports.ConcatAllowingNull(removedExports), atomicComposition);
-
- this.OnExportsChanging(
- new ExportsChangeEventArgs(addedExports, removedExports, atomicComposition));
-
- atomicComposition.AddCompleteAction(() => this.OnExportsChanged(
- new ExportsChangeEventArgs(addedExports, removedExports, null)));
-
- atomicComposition.Complete();
- }
- }
-
- private ComposablePart GetComposablePart(ComposablePartDefinition partDefinition, bool isSharedPart)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- ComposablePart part;
-
- if (isSharedPart)
- {
- part = GetSharedPart(partDefinition);
- }
- else
- {
- part = partDefinition.CreatePart();
-
- IDisposable disposablePart = part as IDisposable;
- if (disposablePart != null)
- {
- using (this._lock.LockStateForWrite())
- {
- this._partsToDispose.Add(disposablePart);
- }
- }
- }
-
- return part;
- }
-
- private ComposablePart GetSharedPart(ComposablePartDefinition partDefinition)
- {
- ComposablePart part;
- bool found = false;
-
- using (this._lock.LockStateForRead())
- {
- found = this._activatedParts.TryGetValue(partDefinition, out part);
- }
-
- if (!found)
- {
- ComposablePart newPart = partDefinition.CreatePart();
-
- using (this._lock.LockStateForWrite())
- {
- found = this._activatedParts.TryGetValue(partDefinition, out part);
-
- if (!found)
- {
- part = newPart;
- this._activatedParts.Add(partDefinition, part);
- IDisposable disposablePart = part as IDisposable;
- if (disposablePart != null)
- {
- this._partsToDispose.Add(disposablePart);
- }
- }
- }
- }
-
- return part;
- }
-
- private object GetExportedValue(ComposablePart part, ExportDefinition export, bool isSharedPart)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- Assumes.NotNull(part, export);
-
- object exportedValue = CompositionServices.GetExportedValueFromComposedPart(
- this._importEngine, part, export);
-
- // Only hold conditional references for recomposable non-shared parts because we are
- // already holding strong references to the shared parts.
- if (exportedValue != null && !isSharedPart && part.IsRecomposable())
- {
- SetConditionalReferenceForRecomposablePart(exportedValue, part);
- }
-
- return exportedValue;
- }
-
- private void ReleasePart(object exportedValue, ComposablePart part, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- Assumes.NotNull(part);
-
- this._importEngine.ReleaseImports(part, atomicComposition);
-
- if (exportedValue != null)
- {
- atomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._conditionalReferencesForRecomposableParts.Remove(exportedValue);
- }
- });
- }
-
- IDisposable diposablePart = part as IDisposable;
- if (diposablePart != null)
- {
- atomicComposition.AddCompleteActionAllowNull(() =>
- {
- bool removed = false;
- using (this._lock.LockStateForWrite())
- {
- removed = this._partsToDispose.Remove(diposablePart);
- }
- if (removed)
- {
- diposablePart.Dispose();
- }
- });
- }
- }
-
- private void SetConditionalReferenceForRecomposablePart(object exportedValue, ComposablePart part)
- {
- Assumes.NotNull(exportedValue, part);
-
- List<ComposablePart> partList;
-
- using (this._lock.LockStateForWrite())
- {
- if (!this._conditionalReferencesForRecomposableParts.TryGetValue(exportedValue, out partList))
- {
- partList = new List<ComposablePart>();
- this._conditionalReferencesForRecomposableParts.Add(exportedValue, partList);
- }
-
- // There is one really obscure case (one part exporting exact value multiple times) where
- // the part may already be in the list but it isn't a scenario that is interesting so
- // we simply always add. Later if we change this to support more than non-shared we may
- // need to check if the part already exists to pervent adding it multiple times.
- partList.Add(part);
- }
- }
-
- private bool IsRejected(ComposablePartDefinition definition, AtomicComposition atomicComposition)
- {
- // Check to see if we're currently working on the definition in question.
- // Recursive queries always answer optimistically, as if the definition hasn't
- // been rejected - because if it is we can discard all decisions that were based
- // on the faulty assumption in the first place.
- var forceRejectionTest = false;
- if (atomicComposition != null)
- {
- var atomicCompositionQuery = GetAtomicCompositionQuery(atomicComposition);
- AtomicCompositionQueryState state = atomicCompositionQuery(definition);
- switch (state)
- {
- case AtomicCompositionQueryState.TreatAsRejected:
- return true;
- case AtomicCompositionQueryState.TreatAsValidated:
- return false;
- case AtomicCompositionQueryState.NeedsTesting:
- forceRejectionTest = true;
- break;
- default:
- Assumes.IsTrue(state == AtomicCompositionQueryState.Unknown);
- // Need to do the work to determine the state
- break;
- }
- }
-
- if (!forceRejectionTest)
- {
- // Next, anything that has been activated is not rejected
- using (this._lock.LockStateForRead())
- {
- if (this._activatedParts.ContainsKey(definition))
- {
- return false;
- }
-
- // Last stop before doing the hard work: check a specific registry of rejected parts
- if (this._rejectedParts.Contains(definition))
- {
- return true;
- }
- }
- }
-
- // Determine whether or not the definition's imports can be satisfied
- return DetermineRejection(definition, atomicComposition);
- }
-
- private bool DetermineRejection(ComposablePartDefinition definition, AtomicComposition parentAtomicComposition)
- {
- ChangeRejectedException exception = null;
-
- using (var localAtomicComposition = new AtomicComposition(parentAtomicComposition))
- {
- // The part definition we're currently working on is treated optimistically
- // as if we know it hasn't been rejected. This handles recursion, and if we
- // later decide that it has been rejected we'll discard all nested progress so
- // all side-effects of the mistake are erased.
- //
- // Note that this means that recursive failures that would be detected by the
- // import engine are not discovered by rejection currently. Loops among
- // prerequisites, runaway import chains involving factories, and prerequisites
- // that cannot be fully satisfied still result in runtime errors. Doing
- // otherwise would be possible but potentially expensive - and could be a v2
- // improvement if deemed worthwhile.
- UpdateAtomicCompositionQuery(localAtomicComposition,
- def => definition.Equals(def), AtomicCompositionQueryState.TreatAsValidated);
-
- var newPart = definition.CreatePart();
- try
- {
- this._importEngine.PreviewImports(newPart, localAtomicComposition);
-
- // Reuse the partially-fleshed out part the next time we need a shared
- // instance to keep the expense of pre-validation to a minimum. Note that
- // _activatedParts holds references to both shared and non-shared parts.
- // The non-shared parts will only be used for rejection purposes only but
- // the shared parts will be handed out when requested via GetExports as
- // well as be used for rejection purposes.
- localAtomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._activatedParts.ContainsKey(definition))
- {
- this._activatedParts.Add(definition, newPart);
- IDisposable newDisposablePart = newPart as IDisposable;
- if (newDisposablePart != null)
- {
- this._partsToDispose.Add(newDisposablePart);
- }
- }
- }
- });
-
- // Success! Complete any recursive work that was conditioned on this part's validation
- localAtomicComposition.Complete();
-
- return false;
- }
- catch (ChangeRejectedException ex)
- {
- exception = ex;
- }
- }
-
- // If we've reached this point then this part has been rejected so we need to
- // record the rejection in our parent composition or execute it immediately if
- // one doesn't exist.
- parentAtomicComposition.AddCompleteActionAllowNull(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._rejectedParts.Add(definition);
- }
-
- CompositionTrace.PartDefinitionRejected(definition, exception);
-
- });
- if (parentAtomicComposition != null)
- {
- UpdateAtomicCompositionQuery(parentAtomicComposition,
- def => definition.Equals(def), AtomicCompositionQueryState.TreatAsRejected);
- }
-
- return true;
- }
-
- private void UpdateRejections(IEnumerable<ExportDefinition> changedExports, AtomicComposition atomicComposition)
- {
- using (var localAtomicComposition = new AtomicComposition(atomicComposition))
- {
- // Reconsider every part definition that has been previously
- // rejected to see if any of them can be added back.
- var affectedRejections = new HashSet<ComposablePartDefinition>();
- var atomicCompositionQuery = GetAtomicCompositionQuery(localAtomicComposition);
-
- ComposablePartDefinition[] rejectedParts;
- using (this._lock.LockStateForRead())
- {
- rejectedParts = this._rejectedParts.ToArray();
- }
- foreach (var definition in rejectedParts)
- {
- if (atomicCompositionQuery(definition) == AtomicCompositionQueryState.TreatAsValidated)
- {
- continue;
- }
-
- foreach (var import in definition.ImportDefinitions.Where(ImportEngine.IsRequiredImportForPreview))
- {
- if (changedExports.Any(export => import.IsConstraintSatisfiedBy(export)))
- {
- affectedRejections.Add(definition);
- break;
- }
- }
- }
- UpdateAtomicCompositionQuery(localAtomicComposition,
- def => affectedRejections.Contains(def), AtomicCompositionQueryState.NeedsTesting);
-
- // Determine if any of the resurrectable parts is now available so that we can
- // notify listeners of the exact changes to exports
- var resurrectedExports = new List<ExportDefinition>();
-
- foreach (var partDefinition in affectedRejections)
- {
- if (!IsRejected(partDefinition, localAtomicComposition))
- {
- // Notify listeners of the newly available exports and
- // prepare to remove the rejected part from the list of rejections
- resurrectedExports.AddRange(partDefinition.ExportDefinitions);
-
- // Capture the local so that the closure below refers to the current definition
- // in the loop and not the value of 'partDefinition' when the closure executes
- var capturedPartDefinition = partDefinition;
- localAtomicComposition.AddCompleteAction(() =>
- {
- using (this._lock.LockStateForWrite())
- {
- this._rejectedParts.Remove(capturedPartDefinition);
- }
-
- CompositionTrace.PartDefinitionResurrected(capturedPartDefinition);
- });
- }
- }
-
- // Notify anyone sourcing exports that the resurrected exports have appeared
- if (resurrectedExports.Any())
- {
- this.OnExportsChanging(
- new ExportsChangeEventArgs(resurrectedExports, new ExportDefinition[0], localAtomicComposition));
-
- localAtomicComposition.AddCompleteAction(() => this.OnExportsChanged(
- new ExportsChangeEventArgs(resurrectedExports, new ExportDefinition[0], null)));
- }
-
- localAtomicComposition.Complete();
- }
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- /// <summary>
- /// EnsureCanRun must be called from within a lock.
- /// </summary>
- [DebuggerStepThrough]
- private void EnsureCanRun()
- {
- if ((this._sourceProvider == null) || (this._importEngine == null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectMustBeInitialized, "SourceProvider")); // NOLOC
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureRunning()
- {
- if (!this._isRunning)
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isRunning)
- {
- this.EnsureCanRun();
- this._isRunning = true;
- }
- }
- }
- }
-
- /// <summary>
- /// EnsureCanSet<T> must be called from within a lock.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="currentValue"></param>
- [DebuggerStepThrough]
- private void EnsureCanSet<T>(T currentValue)
- where T : class
- {
- if ((this._isRunning) || (currentValue != null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectAlreadyInitialized));
- }
- }
-
- private Func<ComposablePartDefinition, AtomicCompositionQueryState> GetAtomicCompositionQuery(AtomicComposition atomicComposition)
- {
- Func<ComposablePartDefinition, AtomicCompositionQueryState> atomicCompositionQuery;
- atomicComposition.TryGetValue(this, out atomicCompositionQuery);
-
- if (atomicCompositionQuery == null)
- {
- return (definition) => AtomicCompositionQueryState.Unknown;
- }
-
- return atomicCompositionQuery;
- }
-
- private void UpdateAtomicCompositionQuery(
- AtomicComposition atomicComposition,
- Func<ComposablePartDefinition, bool> query,
- AtomicCompositionQueryState state)
- {
- var parentQuery = GetAtomicCompositionQuery(atomicComposition);
- Func<ComposablePartDefinition, AtomicCompositionQueryState> newQuery = definition =>
- {
- if (query(definition))
- {
- return state;
- }
- return parentQuery(definition);
- };
-
- atomicComposition.SetValue(this, newQuery);
- }
-
- private enum AtomicCompositionQueryState
- {
- Unknown,
- TreatAsRejected,
- TreatAsValidated,
- NeedsTesting
- };
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs
deleted file mode 100644
index 9d2ee11..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogChangeEventArgs.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Provides data for the <see cref="INotifyComposablePartCatalogChanged.Changed"/> and
- /// <see cref="INotifyComposablePartCatalogChanged.Changing"/> events.
- /// </summary>
- public class ComposablePartCatalogChangeEventArgs : EventArgs
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartCatalogChangeEventArgs"/>.
- /// </summary>
- /// <param name="addedDefinitions">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// are being added to the <see cref="ComposablePartCatalog"/>.
- /// </param>
- /// <param name="removedDefinitions">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// are being removed from the <see cref="ComposablePartCatalog"/>.
- /// </param>
- /// <param name="atomicComposition">
- /// A <see cref="AtomicComposition"/> representing all tentative changes that will
- /// be completed if the change is successful, or discarded if it is not.
- /// <see langword="null"/> if being applied outside a <see cref="AtomicComposition"/>
- /// or during a <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="addedDefinitions"/> or <paramref name="removedDefinitions"/> is <see langword="null"/>.
- /// </exception>
- public ComposablePartCatalogChangeEventArgs(IEnumerable<ComposablePartDefinition> addedDefinitions,
- IEnumerable<ComposablePartDefinition> removedDefinitions, AtomicComposition atomicComposition)
- {
- Requires.NotNull(addedDefinitions, "addedDefinitions");
- Requires.NotNull(removedDefinitions, "removedDefinitions");
-
- this.AddedDefinitions = addedDefinitions.AsArray();
- this.RemovedDefinitions = removedDefinitions.AsArray();
- this.AtomicComposition = atomicComposition;
- }
-
- /// <summary>
- /// Gets the identifiers of the parts that have been added.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// have been added to the <see cref="ComposablePartCatalog"/>.
- /// </value>
- public IEnumerable<ComposablePartDefinition> AddedDefinitions { get; private set; }
-
- /// <summary>
- /// Gets the identifiers of the parts that have been removed.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ComposablePartDefinition"/> objects that
- /// have been removed from from the <see cref="ComposablePartCatalog"/>.
- /// </value>
- public IEnumerable<ComposablePartDefinition> RemovedDefinitions { get; private set; }
-
- /// <summary>
- /// Gets the atomicComposition, if any, that this change applies to.
- /// </summary>
- /// <value>
- /// A <see cref="AtomicComposition"/> that this set of changes applies too.
- /// It can be <see langword="null"/> if the changes are being applied outside a
- /// <see cref="AtomicComposition"/> or during a
- /// <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- ///
- /// When the value is non-null it should be used to record temporary changed state
- /// and actions that will be executed when the atomicComposition is completeed.
- /// </value>
- public AtomicComposition AtomicComposition { get; private set; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs
deleted file mode 100644
index ed20128..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartCatalogCollection.cs
+++ /dev/null
@@ -1,420 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.ObjectModel;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Diagnostics;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// This class implements a threadsafe ICollection{T} of ComposablePartCatalog.
- /// It is exposed as an ICollection(ComposablePartCatalog)
- /// It is threadsafe, notifications are not marshalled using a SynchronizationContext.
- /// It is Disposable.
- /// </summary>
- internal class ComposablePartCatalogCollection : ICollection<ComposablePartCatalog>, INotifyComposablePartCatalogChanged, IDisposable
- {
- private readonly Lock _lock = new Lock();
- private Action<ComposablePartCatalogChangeEventArgs> _onChanged;
- private Action<ComposablePartCatalogChangeEventArgs> _onChanging;
- private List<ComposablePartCatalog> _catalogs = new List<ComposablePartCatalog>();
- private volatile bool _isCopyNeeded = false;
- private volatile bool _isDisposed = false;
- private bool _hasChanged = false;
-
- public ComposablePartCatalogCollection(IEnumerable<ComposablePartCatalog> catalogs)
- : this(catalogs, null, null)
- {
- }
-
- public ComposablePartCatalogCollection(
- IEnumerable<ComposablePartCatalog> catalogs,
- Action<ComposablePartCatalogChangeEventArgs> onChanged,
- Action<ComposablePartCatalogChangeEventArgs> onChanging)
- {
- catalogs = catalogs ?? Enumerable.Empty<ComposablePartCatalog>();
- this._catalogs = new List<ComposablePartCatalog>(catalogs);
- this._onChanged = onChanged;
- this._onChanging = onChanging;
-
- SubscribeToCatalogNotifications(catalogs);
- }
-
- public void Add(ComposablePartCatalog item)
- {
- Requires.NotNull(item, "item");
-
- this.ThrowIfDisposed();
-
- var addedParts = new Lazy<IEnumerable<ComposablePartDefinition>>(() => item.Parts.ToArray(), false);
-
- using (var atomicComposition = new AtomicComposition())
- {
- this.RaiseChangingEvent(addedParts, null, atomicComposition);
-
- using (new WriteLock(this._lock))
- {
- if (this._isCopyNeeded)
- {
- this._catalogs = new List<ComposablePartCatalog>(this._catalogs);
- this._isCopyNeeded = false;
- }
- this._hasChanged = true;
- this._catalogs.Add(item);
- }
-
- this.SubscribeToCatalogNotifications(item);
-
- // Complete after the catalog changes are written
- atomicComposition.Complete();
- }
-
- this.RaiseChangedEvent(addedParts, null);
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changed.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changed;
-
- /// <summary>
- /// Notify when the contents of the Catalog has changing.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changing;
-
- public void Clear()
- {
- this.ThrowIfDisposed();
-
- // No action is required if we are already empty
- ComposablePartCatalog[] catalogs = null;
- using (new ReadLock(this._lock))
- {
- if (this._catalogs.Count == 0)
- {
- return;
- }
- catalogs = this._catalogs.ToArray();
- }
-
- //TODO-MT: This is pretty suspect - we can easily eliminate catalogs that aren't listed as being
- // removed. Then again, the idea of trying to mutate the catalog on two threads at the same time is pretty
- // suspect to begin with. When would that ever result in a meaningful composition?
-
- // We are doing this outside of the lock, so it's possible that the catalog will continute propagating events from things
- // we are about to unsubscribe from. Given the non-specificity of our event, in the worst case scenario we would simply fire
- // unnecessary events.
-
- var removedParts = new Lazy<IEnumerable<ComposablePartDefinition>>(() => catalogs.SelectMany(catalog => catalog.Parts).ToArray(), false);
-
- // Validate the changes before applying them
- using (var atomicComposition = new AtomicComposition())
- {
- this.RaiseChangingEvent(null, removedParts, atomicComposition);
- this.UnsubscribeFromCatalogNotifications(catalogs);
-
- using (new WriteLock(this._lock))
- {
- this._catalogs = new List<ComposablePartCatalog>();
-
- this._isCopyNeeded = false;
- this._hasChanged = true;
- }
-
- // Complete after the catalog changes are written
- atomicComposition.Complete();
- }
-
- this.RaiseChangedEvent(null, removedParts);
- }
-
- public bool Contains(ComposablePartCatalog item)
- {
- Requires.NotNull(item, "item");
-
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- return this._catalogs.Contains(item);
- }
- }
-
- public void CopyTo(ComposablePartCatalog[] array, int arrayIndex)
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- this._catalogs.CopyTo(array, arrayIndex);
- }
- }
-
- public int Count
- {
- get
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- return this._catalogs.Count;
- }
- }
- }
-
- public bool IsReadOnly
- {
- get
- {
- this.ThrowIfDisposed();
-
- return false;
- }
- }
-
- public bool Remove(ComposablePartCatalog item)
- {
- Requires.NotNull(item, "item");
-
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- if (!this._catalogs.Contains(item))
- {
- return false;
- }
- }
-
- bool isSuccessfulRemoval = false;
-
- var removedParts = new Lazy<IEnumerable<ComposablePartDefinition>>(() => item.Parts.ToArray(), false);
- using (var atomicComposition = new AtomicComposition())
- {
- this.RaiseChangingEvent(null, removedParts, atomicComposition);
-
- using (new WriteLock(this._lock))
- {
- if (_isCopyNeeded)
- {
- this._catalogs = new List<ComposablePartCatalog>(this._catalogs);
- this._isCopyNeeded = false;
- }
-
- isSuccessfulRemoval = this._catalogs.Remove(item);
- if (isSuccessfulRemoval)
- {
- this._hasChanged = true;
- }
- }
-
- this.UnsubscribeFromCatalogNotifications(item);
-
- // Complete after the catalog changes are written
- atomicComposition.Complete();
- }
-
- this.RaiseChangedEvent(null, removedParts);
-
- return isSuccessfulRemoval;
- }
-
- internal bool HasChanged
- {
- get
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- return this._hasChanged;
- }
- }
- }
-
- public IEnumerator<ComposablePartCatalog> GetEnumerator()
- {
- this.ThrowIfDisposed();
-
- using (new ReadLock(this._lock))
- {
- IEnumerator<ComposablePartCatalog> enumerator = this._catalogs.GetEnumerator();
- this._isCopyNeeded = true;
- return enumerator;
- }
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this.GetEnumerator();
- }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- IEnumerable<ComposablePartCatalog> catalogs = null;
- try
- {
- using (new WriteLock(this._lock))
- {
- if (!this._isDisposed)
- {
- disposeLock = true;
-
- catalogs = this._catalogs;
- this._catalogs = null;
-
- this._isDisposed = true;
- }
- }
- }
- finally
- {
- if (catalogs != null)
- {
- this.UnsubscribeFromCatalogNotifications(catalogs);
- catalogs.ForEach(catalog => catalog.Dispose());
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
- }
-
- private void RaiseChangedEvent(
- Lazy<IEnumerable<ComposablePartDefinition>> addedDefinitions,
- Lazy<IEnumerable<ComposablePartDefinition>> removedDefinitions)
- {
- if (this._onChanged == null || this.Changed == null)
- {
- return;
- }
-
- var added = (addedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : addedDefinitions.Value);
- var removed = (removedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : removedDefinitions.Value);
-
- this._onChanged.Invoke(new ComposablePartCatalogChangeEventArgs(added, removed, null));
- }
-
- public void OnChanged(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- var changedEvent = this.Changed;
- if (changedEvent != null)
- {
- changedEvent(sender, e);
- }
- }
-
- private void RaiseChangingEvent(
- Lazy<IEnumerable<ComposablePartDefinition>> addedDefinitions,
- Lazy<IEnumerable<ComposablePartDefinition>> removedDefinitions,
- AtomicComposition atomicComposition)
- {
- if (this._onChanging == null || this.Changing == null)
- {
- return;
- }
- var added = (addedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : addedDefinitions.Value);
- var removed = (removedDefinitions == null ? Enumerable.Empty<ComposablePartDefinition>() : removedDefinitions.Value);
-
- this._onChanging.Invoke(new ComposablePartCatalogChangeEventArgs(added, removed, atomicComposition));
- }
-
- public void OnChanging(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- var changingEvent = this.Changing;
- if (changingEvent != null)
- {
- changingEvent(sender, e);
- }
- }
-
- private void OnContainedCatalogChanged(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- if (this._onChanged == null || this.Changed == null)
- {
- return;
- }
-
- this._onChanged.Invoke(e);
- }
-
- private void OnContainedCatalogChanging(object sender, ComposablePartCatalogChangeEventArgs e)
- {
- if (this._onChanging == null || this.Changing == null)
- {
- return;
- }
-
- this._onChanging.Invoke(e);
- }
-
- private void SubscribeToCatalogNotifications(ComposablePartCatalog catalog)
- {
- INotifyComposablePartCatalogChanged notifyCatalog = catalog as INotifyComposablePartCatalogChanged;
- if (notifyCatalog != null)
- {
- notifyCatalog.Changed += this.OnContainedCatalogChanged;
- notifyCatalog.Changing += this.OnContainedCatalogChanging;
- }
- }
-
- private void SubscribeToCatalogNotifications(IEnumerable<ComposablePartCatalog> catalogs)
- {
- foreach (var catalog in catalogs)
- {
- SubscribeToCatalogNotifications(catalog);
- }
- }
-
- private void UnsubscribeFromCatalogNotifications(ComposablePartCatalog catalog)
- {
- INotifyComposablePartCatalogChanged notifyCatalog = catalog as INotifyComposablePartCatalogChanged;
- if (notifyCatalog != null)
- {
- notifyCatalog.Changed -= this.OnContainedCatalogChanged;
- notifyCatalog.Changing -= this.OnContainedCatalogChanging;
- }
- }
-
- private void UnsubscribeFromCatalogNotifications(IEnumerable<ComposablePartCatalog> catalogs)
- {
- foreach (var catalog in catalogs)
- {
- UnsubscribeFromCatalogNotifications(catalog);
- }
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs
deleted file mode 100644
index 5337b4e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs
+++ /dev/null
@@ -1,396 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Globalization;
-using System.Linq;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public class ComposablePartExportProvider : ExportProvider, IDisposable
- {
- private List<ComposablePart> _parts = new List<ComposablePart>();
- private volatile bool _isDisposed = false;
- private volatile bool _isRunning = false;
- private CompositionLock _lock = null;
- private ExportProvider _sourceProvider;
- private ImportEngine _importEngine;
- private volatile bool _currentlyComposing;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartExportProvider"/> class.
- /// </summary>
- public ComposablePartExportProvider() :
- this(false)
- {
- }
-
- public ComposablePartExportProvider(bool isThreadSafe)
- {
- this._lock = new CompositionLock(isThreadSafe);
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- ImportEngine oldImportEngine = null;
- try
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isDisposed)
- {
- oldImportEngine = this._importEngine;
- this._importEngine = null;
- this._sourceProvider = null;
- this._isDisposed = true;
- disposeLock = true;
- }
- }
- }
- finally
- {
- if (oldImportEngine != null)
- {
- oldImportEngine.Dispose();
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
- }
-
- /// <summary>
- /// Gets the export provider which provides the provider access to
- /// exports.
- /// </summary>
- /// <value>
- /// The <see cref="ExportProvider"/> which provides the
- /// <see cref="ComposablePartExportProvider"/> access to <see cref="Export"/> objects.
- /// The default is <see langword="null"/>.
- /// </value>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="value"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// This property has already been set.
- /// <para>
- /// -or-
- /// </para>
- /// The methods on the <see cref="ComposablePartExportProvider"/>
- /// have already been accessed.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartExportProvider"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// This property must be set before accessing any methods on the
- /// <see cref="ComposablePartExportProvider"/>.
- /// </remarks>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "EnsureCanSet ensures that the property is set only once, Dispose is not required")]
- public ExportProvider SourceProvider
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this._sourceProvider;
- }
- set
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(value, "value");
- using (this._lock.LockStateForWrite())
- {
- this.EnsureCanSet(this._sourceProvider);
- this._sourceProvider = value;
- }
-
- // This should be safe to do outside the lock, because only the first setter will ever win
- // and others will throw
- ImportEngine importEngine = new ImportEngine(this._sourceProvider, this._lock.IsThreadSafe);
- Thread.MemoryBarrier();
- this._importEngine = importEngine;
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- // Determine whether there is a composition atomicComposition-specific list of parts to use,
- // failing that use the usual list. We never change the list of parts in place,
- // but rather copy, change and write a new list atomically. Therefore all we need
- // to do here is to read the _parts member.
- List<ComposablePart> parts = null;
- using (this._lock.LockStateForRead())
- {
- parts = atomicComposition.GetValueAllowNull(this, this._parts);
- }
-
- if (parts.Count == 0)
- {
- return Enumerable.Empty<Export>();
- }
-
- List<Export> exports = new List<Export>();
- foreach (var part in parts)
- {
- foreach (var exportDefinition in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(exportDefinition))
- {
- exports.Add(this.CreateExport(part, exportDefinition));
- }
- }
- }
- return exports;
- }
-
- public void Compose(CompositionBatch batch)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- Requires.NotNull(batch, "batch");
-
- // Quick exit test can be done prior to cloning since it's just an optimization, not a
- // change in behavior
- if ((batch.PartsToAdd.Count == 0) && (batch.PartsToRemove.Count == 0))
- {
- return;
- }
-
- CompositionResult result = CompositionResult.SucceededResult;
-
- // Clone the batch, so that the external changes wouldn't happen half-way thorugh compose
- // NOTE : this does not guarantee the atomicity of cloning, which is not the goal anyway,
- // rather the fact that all subsequent calls will deal with an unchanging batch
- batch = new CompositionBatch(batch.PartsToAdd, batch.PartsToRemove);
-
- var newParts = GetUpdatedPartsList(batch);
-
- // Allow only recursive calls from the import engine to see the changes until
- // they've been verified ...
- using (var atomicComposition = new AtomicComposition())
- {
- // Don't allow reentrant calls to compose during previewing to prevent
- // corrupted state.
- if (this._currentlyComposing)
- {
- throw new InvalidOperationException(Strings.ReentrantCompose);
- }
-
- this._currentlyComposing = true;
-
- try
- {
- // In the meantime recursive calls need to be able to see the list as well
- atomicComposition.SetValue(this, newParts);
-
- // Recompose any existing imports effected by the these changes first so that
- // adapters, resurrected parts, etc. can all play their role in satisfying
- // imports for added parts
- this.Recompose(batch, atomicComposition);
-
- // Ensure that required imports can be satisfied
- foreach (ComposablePart part in batch.PartsToAdd)
- {
- // collect the result of previewing all the adds in the batch
- try
- {
- this._importEngine.PreviewImports(part, atomicComposition);
- }
- catch (ChangeRejectedException ex)
- {
- result = result.MergeResult(new CompositionResult(ex.Errors));
- }
- }
-
- result.ThrowOnErrors(atomicComposition);
-
- // Complete the new parts since they passed previewing.`
- using (this._lock.LockStateForWrite())
- {
- this._parts = newParts;
- }
-
- atomicComposition.Complete();
- }
- finally
- {
- this._currentlyComposing = false;
- }
- }
-
- // Satisfy Imports
- // - Satisfy imports on all newly added component parts
- foreach (ComposablePart part in batch.PartsToAdd)
- {
- result = result.MergeResult(CompositionServices.TryInvoke(() =>
- this._importEngine.SatisfyImports(part)));
- }
-
- // return errors
- result.ThrowOnErrors();
- }
-
- private List<ComposablePart> GetUpdatedPartsList(CompositionBatch batch)
- {
- Assumes.NotNull(batch);
-
- // Copy the current list of parts - we are about to modify it
- // This is an OK thing to do as this is the only method that can modify the List AND Compose can
- // only be executed on one thread at a time - thus two different threads cannot tramp over each other
- List<ComposablePart> parts = null;
- using (this._lock.LockStateForRead())
- {
- parts = this._parts.ToList(); // this copies the list
- }
-
- foreach (ComposablePart part in batch.PartsToAdd)
- {
- parts.Add(part);
- }
-
- foreach (ComposablePart part in batch.PartsToRemove)
- {
- parts.Remove(part);
- }
-
- return parts;
- }
-
- private void Recompose(CompositionBatch batch, AtomicComposition atomicComposition)
- {
- Assumes.NotNull(batch);
-
- // Unregister any removed component parts
- foreach (ComposablePart part in batch.PartsToRemove)
- {
- this._importEngine.ReleaseImports(part, atomicComposition);
- }
-
- // Recompose any imports effected by the these changes (the changes are
- // observable through GetExports in the appropriate atomicComposition, thus we can fire
- // the event
- IEnumerable<ExportDefinition> addedExports = batch.PartsToAdd.Count != 0 ?
- batch.PartsToAdd.SelectMany(part => part.ExportDefinitions).ToArray() :
- new ExportDefinition[0];
-
- IEnumerable<ExportDefinition> removedExports = batch.PartsToRemove.Count != 0 ?
- batch.PartsToRemove.SelectMany(part => part.ExportDefinitions).ToArray() :
- new ExportDefinition[0];
-
- this.OnExportsChanging(
- new ExportsChangeEventArgs(addedExports, removedExports, atomicComposition));
-
- atomicComposition.AddCompleteAction(() => this.OnExportsChanged(
- new ExportsChangeEventArgs(addedExports, removedExports, null)));
- }
-
- private Export CreateExport(ComposablePart part, ExportDefinition export)
- {
- return new Export(export, () => GetExportedValue(part, export));
- }
-
- private object GetExportedValue(ComposablePart part, ExportDefinition export)
- {
- this.ThrowIfDisposed();
- this.EnsureRunning();
-
- return CompositionServices.GetExportedValueFromComposedPart(this._importEngine, part, export);
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw new ObjectDisposedException(this.GetType().Name);
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureCanRun()
- {
- if ((this._sourceProvider == null) || (this._importEngine == null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectMustBeInitialized, "SourceProvider")); // NOLOC
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureRunning()
- {
- if (!this._isRunning)
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._isRunning)
- {
- this.EnsureCanRun();
- this._isRunning = true;
- }
- }
- }
- }
-
- [DebuggerStepThrough]
- private void EnsureCanSet<T>(T currentValue)
- where T : class
- {
- if ((this._isRunning) || (currentValue != null))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.ObjectAlreadyInitialized));
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs
deleted file mode 100644
index fd5875e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- partial class CompositionBatch
- {
- // Represents a part that exports a single export
- private class SingleExportComposablePart : ComposablePart
- {
- private readonly Export _export;
-
- public SingleExportComposablePart(Export export)
- {
- Assumes.NotNull(export);
-
- this._export = export;
- }
-
- public override IDictionary<string, object> Metadata
- {
- get { return MetadataServices.EmptyMetadata; }
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get { return new ExportDefinition[] { _export.Definition }; }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get { return Enumerable.Empty<ImportDefinition>(); }
- }
-
- public override object GetExportedValue(ExportDefinition definition)
- {
- Requires.NotNull(definition, "definition");
-
- if (definition != _export.Definition)
- {
- throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
- }
-
- return _export.Value;
- }
-
- public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
- {
- Requires.NotNull(definition, "definition");
- Requires.NotNullOrNullElements(exports, "exports");
-
- throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
- }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.cs
deleted file mode 100644
index 43dd7f9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionBatch.cs
+++ /dev/null
@@ -1,174 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq;
-using Microsoft.Internal;
-using System.Collections.ObjectModel;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CompositionBatch
- {
- private object _lock = new object();
- private bool _copyNeededForAdd;
- private bool _copyNeededForRemove;
- private List<ComposablePart> _partsToAdd;
- private ReadOnlyCollection<ComposablePart> _readOnlyPartsToAdd;
- private List<ComposablePart> _partsToRemove;
- private ReadOnlyCollection<ComposablePart> _readOnlyPartsToRemove;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionBatch"/> class.
- /// </summary>
- public CompositionBatch() :
- this(null, null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionBatch"/> class.
- /// </summary>
- /// <param name="partsToAdd">The parts to add.</param>
- /// <param name="partsToRemove">The parts to remove.</param>
- public CompositionBatch(IEnumerable<ComposablePart> partsToAdd, IEnumerable<ComposablePart> partsToRemove)
- {
- this._partsToAdd = new List<ComposablePart>();
- if (partsToAdd != null)
- {
- foreach (var part in partsToAdd)
- {
- if (part == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("partsToAdd");
- }
- this._partsToAdd.Add(part);
- }
- }
- this._readOnlyPartsToAdd = this._partsToAdd.AsReadOnly();
-
- this._partsToRemove = new List<ComposablePart>();
- if (partsToRemove != null)
- {
- foreach (var part in partsToRemove)
- {
- if (part == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("partsToRemove");
- }
- this._partsToRemove.Add(part);
- }
- }
- this._readOnlyPartsToRemove = this._partsToRemove.AsReadOnly();
- }
-
- /// <summary>
- /// Returns the collection of parts that will be added.
- /// </summary>
- /// <value>The parts to be added.</value>
- public ReadOnlyCollection<ComposablePart> PartsToAdd
- {
- get
- {
- lock (this._lock)
- {
- this._copyNeededForAdd = true;
- return this._readOnlyPartsToAdd;
- }
- }
- }
-
- /// <summary>
- /// Returns the collection of parts that will be removed.
- /// </summary>
- /// <value>The parts to be removed.</value>
- public ReadOnlyCollection<ComposablePart> PartsToRemove
- {
- get
- {
- lock (this._lock)
- {
- this._copyNeededForRemove = true;
- return this._readOnlyPartsToRemove;
- }
- }
- }
-
- /// <summary>
- /// Adds the specified part to the <see cref="CompositionBatch"/>.
- /// </summary>
- /// <param name="part">
- /// The part.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- public void AddPart(ComposablePart part)
- {
- Requires.NotNull(part, "part");
- lock (this._lock)
- {
- if (this._copyNeededForAdd)
- {
- this._partsToAdd = new List<ComposablePart>(this._partsToAdd);
- this._readOnlyPartsToAdd = this._partsToAdd.AsReadOnly();
- this._copyNeededForAdd = false;
- }
- this._partsToAdd.Add(part);
- }
- }
-
- /// <summary>
- /// Removes the specified part from the <see cref="CompositionBatch"/>.
- /// </summary>
- /// <param name="part">
- /// The part.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- public void RemovePart(ComposablePart part)
- {
- Requires.NotNull(part, "part");
- lock (this._lock)
- {
- if (this._copyNeededForRemove)
- {
- this._partsToRemove = new List<ComposablePart>(this._partsToRemove);
- this._readOnlyPartsToRemove = this._partsToRemove.AsReadOnly();
- this._copyNeededForRemove = false;
- }
- this._partsToRemove.Add(part);
- }
- }
-
- /// <summary>
- /// Adds the specified export to the <see cref="CompositionBatch"/>.
- /// </summary>
- /// <param name="export">
- /// The <see cref="Export"/> to add to the <see cref="CompositionBatch"/>.
- /// </param>
- /// <returns>
- /// A <see cref="ComposablePart"/> that can be used remove the <see cref="Export"/>
- /// from the <see cref="CompositionBatch"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="export"/> is <see langword="null"/>.
- /// </exception>
- /// <remarks>
- /// </remarks>
- public ComposablePart AddExport(Export export)
- {
- Requires.NotNull(export, "export");
-
- ComposablePart part = new SingleExportComposablePart(export);
-
- this.AddPart(part);
-
- return part;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionConstants.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionConstants.cs
deleted file mode 100644
index 5a1c29a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionConstants.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public static class CompositionConstants
- {
- private const string CompositionNamespace = "System.ComponentModel.Composition";
-
- public const string PartCreationPolicyMetadataName = CompositionNamespace + ".CreationPolicy";
- public const string ExportTypeIdentityMetadataName = "ExportTypeIdentity";
- internal const string ProductDefinitionMetadataName = "ProductDefinition";
-
- internal const string PartCreatorContractName = CompositionNamespace + ".Contracts.ExportFactory";
- internal static readonly string PartCreatorTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(ComposablePartDefinition));
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionContainer.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionContainer.cs
deleted file mode 100644
index 34c5e6c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionContainer.cs
+++ /dev/null
@@ -1,410 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class CompositionContainer : ExportProvider, ICompositionService, IDisposable
- {
- private ImportEngine _importEngine;
- private ComposablePartExportProvider _partExportProvider;
- private AggregateExportProvider _aggregatingExportProvider;
- private ExportProvider _rootProvider;
- private CatalogExportProvider _catalogExportProvider;
- private readonly ReadOnlyCollection<ExportProvider> _providers;
- private volatile int _isDisposed = 0;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContainer"/> class.
- /// </summary>
- public CompositionContainer()
- : this((ComposablePartCatalog)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContainer"/> class
- /// with the specified export providers.
- /// </summary>
- /// <param name="providers">
- /// A <see cref="Array"/> of <see cref="ExportProvider"/> objects which provide
- /// the <see cref="CompositionContainer"/> access to <see cref="Export"/> objects,
- /// or <see langword="null"/> to set <see cref="Providers"/> to an empty
- /// <see cref="ReadOnlyCollection{T}"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="providers"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public CompositionContainer(params ExportProvider[] providers) :
- this((ComposablePartCatalog)null, providers)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="CompositionContainer"/> class
- /// with the specified catalog and export providers.
- /// </summary>
- /// <param name="providers">
- /// A <see cref="Array"/> of <see cref="ExportProvider"/> objects which provide
- /// the <see cref="CompositionContainer"/> access to <see cref="Export"/> objects,
- /// or <see langword="null"/> to set <see cref="Providers"/> to an empty
- /// <see cref="ReadOnlyCollection{T}"/>.
- /// </param>
- /// <exception cref="ArgumentException">
- /// <paramref name="providers"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public CompositionContainer(ComposablePartCatalog catalog, params ExportProvider[] providers):
- this(catalog, false, providers)
- {
- }
-
- public CompositionContainer(ComposablePartCatalog catalog, bool isThreadSafe, params ExportProvider[] providers)
- {
- this._importEngine = new ImportEngine(this, isThreadSafe);
- this._partExportProvider = new ComposablePartExportProvider(isThreadSafe);
- this._partExportProvider.SourceProvider = this;
- this._providers = new ReadOnlyCollection<ExportProvider>(providers != null ? (ExportProvider[])providers.Clone() : new ExportProvider[0]);
-
- List<ExportProvider> providerList = new List<ExportProvider>();
-
- providerList.Add(this._partExportProvider);
-
- if (catalog != null)
- {
- this._catalogExportProvider = new CatalogExportProvider(catalog, isThreadSafe);
- this._catalogExportProvider.SourceProvider = this;
-
- providerList.Add(this._catalogExportProvider);
- }
-
- foreach (var provider in this._providers)
- {
- if (provider == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("providers");
- }
- providerList.Add(provider);
- }
-
- // we only build the aggregating provider if necessary - that is, if we have more than one provider to aggregate
- if (providerList.Count > 1)
- {
- this._aggregatingExportProvider = new AggregateExportProvider(providerList);
- this._rootProvider = this._aggregatingExportProvider;
- }
- else
- {
- Assumes.IsTrue(providerList.Count == 1);
- this._rootProvider = providerList[0];
- }
-
- this._rootProvider.ExportsChanged += this.OnExportsChangedInternal;
- this._rootProvider.ExportsChanging += this.OnExportsChangingInternal;
- }
-
- /// <summary>
- /// Gets the catalog which provides the container access to exports produced
- /// from composable parts.
- /// </summary>
- /// <value>
- /// The <see cref="ComposablePartCatalog"/> which provides the
- /// <see cref="CompositionContainer"/> access to exports produced from
- /// <see cref="ComposablePart"/> objects. The default is <see langword="null"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public ComposablePartCatalog Catalog
- {
- get
- {
- ThrowIfDisposed();
-
- if (_catalogExportProvider != null)
- {
- return _catalogExportProvider.Catalog;
- }
-
- return null;
- }
- }
-
- /// <summary>
- /// Gets the export providers which provide the container access to additional exports.
- /// </summary>
- /// <value>
- /// A <see cref="ReadOnlyCollection{T}"/> of <see cref="ExportProvider"/> objects
- /// which provide the <see cref="CompositionContainer"/> access to additional
- /// <see cref="Export"/> objects. The default is an empty
- /// <see cref="ReadOnlyCollection{T}"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public ReadOnlyCollection<ExportProvider> Providers
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this._providers;
- }
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this._rootProvider.ExportsChanged -= this.OnExportsChangedInternal;
- this._rootProvider.ExportsChanging -= this.OnExportsChangingInternal;
- if (this._aggregatingExportProvider != null)
- {
- this._aggregatingExportProvider.Dispose();
- }
- this._partExportProvider.Dispose();
- if (this._catalogExportProvider != null)
- {
- this._catalogExportProvider.Dispose();
- }
- this._importEngine.Dispose();
- }
- }
- }
-
- public void Compose(CompositionBatch batch)
- {
- Requires.NotNull(batch, "batch");
-
- this.ThrowIfDisposed();
- this._partExportProvider.Compose(batch);
- }
-
- /// <summary>
- /// Releases the <see cref="Export"/> from the <see cref="CompositionContainer"/>. The behavior
- /// may vary depending on the implementation of the <see cref="ExportProvider"/> that produced
- /// the <see cref="Export"/> instance. As a general rule non shared exports should be early
- /// released causing them to be detached from the container.
- ///
- /// For example the <see cref="CatalogExportProvider"/> will only release
- /// an <see cref="Export"/> if it comes from a <see cref="ComposablePart"/> that was constructed
- /// under a <see cref="CreationPolicy.NonShared" /> context. Release in this context means walking
- /// the dependency chain of the <see cref="Export"/>s, detaching references from the container and
- /// calling Dispose on the <see cref="ComposablePart"/>s as needed. If the <see cref="Export"/>
- /// was constructed under a <see cref="CreationPolicy.Shared" /> context the
- /// <see cref="CatalogExportProvider"/> will do nothing as it may be in use by other requestors.
- /// Those will only be detached when the container is itself disposed.
- /// </summary>
- /// <param name="export"><see cref="Export"/> that needs to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="export"/> is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Performance", "CA1822")]
- public void ReleaseExport(Export export)
- {
- Requires.NotNull(export, "export");
-
- IDisposable dependency = export as IDisposable;
-
- if (dependency != null)
- {
- dependency.Dispose();
- }
- }
-
- /// <summary>
- /// Releases the <see cref="Lazy{T}"/> from the <see cref="CompositionContainer"/>. The behavior
- /// may vary depending on the implementation of the <see cref="ExportProvider"/> that produced
- /// the <see cref="Export"/> instance. As a general rule non shared exports should be early
- /// released causing them to be detached from the container.
- ///
- /// For example the <see cref="CatalogExportProvider"/> will only release
- /// an <see cref="Lazy{T}"/> if it comes from a <see cref="ComposablePart"/> that was constructed
- /// under a <see cref="CreationPolicy.NonShared" /> context. Release in this context means walking
- /// the dependency chain of the <see cref="Export"/>s, detaching references from the container and
- /// calling Dispose on the <see cref="ComposablePart"/>s as needed. If the <see cref="Export"/>
- /// was constructed under a <see cref="CreationPolicy.Shared" /> context the
- /// <see cref="CatalogExportProvider"/> will do nothing as it may be in use by other requestors.
- /// Those will only be detached when the container is itself disposed.
- /// </summary>
- /// <param name="export"><see cref="Export"/> that needs to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="export"/> is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Performance", "CA1822")]
- public void ReleaseExport<T>(Lazy<T> export)
- {
- Requires.NotNull(export, "export");
-
- IDisposable dependency = export as IDisposable;
-
- if (dependency != null)
- {
- dependency.Dispose();
- }
- }
-
- /// <summary>
- /// Releases a set of <see cref="Export"/>s from the <see cref="CompositionContainer"/>.
- /// See also <see cref="ReleaseExport"/>.
- /// </summary>
- /// <param name="exports"><see cref="Export"/>s that need to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// </exception>
- public void ReleaseExports(IEnumerable<Export> exports)
- {
- Requires.NotNullOrNullElements(exports, "exports");
-
- foreach (Export export in exports)
- {
- this.ReleaseExport(export);
- }
- }
-
- /// <summary>
- /// Releases a set of <see cref="Export"/>s from the <see cref="CompositionContainer"/>.
- /// See also <see cref="ReleaseExport"/>.
- /// </summary>
- /// <param name="exports"><see cref="Export"/>s that need to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public void ReleaseExports<T>(IEnumerable<Lazy<T>> exports)
- {
- Requires.NotNullOrNullElements(exports, "exports");
-
- foreach (Lazy<T> export in exports)
- {
- this.ReleaseExport(export);
- }
- }
-
- /// <summary>
- /// Releases a set of <see cref="Export"/>s from the <see cref="CompositionContainer"/>.
- /// See also <see cref="ReleaseExport"/>.
- /// </summary>
- /// <param name="exports"><see cref="Export"/>s that need to be released.</param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public void ReleaseExports<T, TMetadataView>(IEnumerable<Lazy<T, TMetadataView>> exports)
- {
- Requires.NotNullOrNullElements(exports, "exports");
-
- foreach (Lazy<T, TMetadataView> export in exports)
- {
- this.ReleaseExport(export);
- }
- }
-
- /// <summary>
- /// Sets the imports of the specified composable part exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- public void SatisfyImportsOnce(ComposablePart part)
- {
- this.ThrowIfDisposed();
- this._importEngine.SatisfyImportsOnce(part);
- }
-
- internal void OnExportsChangedInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanged(e);
- }
-
- internal void OnExportsChangingInternal(object sender, ExportsChangeEventArgs e)
- {
- this.OnExportsChanging(e);
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> to get.</param>
- /// <returns></returns>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// The implementers should not treat the cardinality-related mismatches as errors, and are not
- /// expected to throw exceptions in those cases.
- /// For instance, if the import requests exactly one export and the provider has no matching exports or more than one,
- /// it should return an empty <see cref="IEnumerable{T}"/> of <see cref="Export"/>.
- /// </note>
- /// </remarks>
- protected override IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- IEnumerable<Export> exports = null;
- this._rootProvider.TryGetExports(definition, atomicComposition, out exports);
-
- return exports;
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionLock.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionLock.cs
deleted file mode 100644
index 4edf397..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionLock.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#define SINGLETHREADEDLOCKENFORCEMENT
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- // This a a lock class that needs to be held in order to perform any mutation of the parts/parts state in the composition
- // Today's implementation relies on the AppDomain-wide re-entrant lock for changes on the composition, and a narrow lock for changes in
- // the state of the specific ImportEngine
- // Today we make several assumptions to ensure thread-safety:
- // 1. Each composition doesn't change lock affinity
- // 2. Every part of the system that updates the status of the parts (in our case ImportEngine) needs to hold the same wide - lock
- // 3. State of the import engine that gets accessed outside of the wide lock needs to be accessed in the context of the narrow lock
- // 4. Narrow lock CAN be taken inside the wide lock
- // 5. Wide lock CANNOT be taken inside the narrow lock
- // 6. No 3rd party code will EVER get called inside the narrow lock
- // Sadly, this means that we WILL be calling 3rd party code under a lock, but as long as the lock is re-entrant and they can't invoke us on anotehr thread
- // we have no issue, other than potential overlocking
- internal sealed class CompositionLock : IDisposable
- {
- // narrow lock
- private readonly Lock _stateLock = null;
- // wide lock
- private static object _compositionLock = new object();
-
- private int _isDisposed = 0;
- private bool _isThreadSafe = false;
-
- private static readonly EmptyLockHolder _EmptyLockHolder = new EmptyLockHolder();
-
- public CompositionLock(bool isThreadSafe)
- {
- this._isThreadSafe = isThreadSafe;
- if (isThreadSafe)
- {
- this._stateLock = new Lock();
- }
- }
-
- public void Dispose()
- {
- if (this._isThreadSafe)
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._stateLock.Dispose();
- }
- }
- }
-
- public bool IsThreadSafe
- {
- get
- {
- return this._isThreadSafe;
- }
- }
-
- private void EnterCompositionLock()
- {
-#pragma warning disable 618
- if (this._isThreadSafe)
- {
- Monitor.Enter(_compositionLock);
- }
-#pragma warning restore 618
- }
-
- private void ExitCompositionLock()
- {
- if (this._isThreadSafe)
- {
- Monitor.Exit(_compositionLock);
- }
- }
-
- public IDisposable LockComposition()
- {
- if (this._isThreadSafe)
- {
- return new CompositionLockHolder(this);
- }
- else
- {
- return _EmptyLockHolder;
- }
- }
-
- public IDisposable LockStateForRead()
- {
- if (this._isThreadSafe)
- {
- return new ReadLock(this._stateLock);
- }
- else
- {
- return _EmptyLockHolder;
- }
- }
-
- public IDisposable LockStateForWrite()
- {
- if (this._isThreadSafe)
- {
- return new WriteLock(this._stateLock);
- }
- else
- {
- return _EmptyLockHolder;
- }
- }
-
- // NOTE : this should NOT be changed to a struct as ImportEngine relies on it
- public sealed class CompositionLockHolder : IDisposable
- {
- private CompositionLock _lock;
- private int _isDisposed;
-
- public CompositionLockHolder(CompositionLock @lock)
- {
- this._lock = @lock;
-
- this._isDisposed = 0;
- this._lock.EnterCompositionLock();
- }
-
- public void Dispose()
- {
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
- {
- this._lock.ExitCompositionLock();
- }
- }
- }
-
- private sealed class EmptyLockHolder : IDisposable
- {
- public void Dispose()
- {
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionServices.cs
deleted file mode 100644
index 77e5fdc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/CompositionServices.cs
+++ /dev/null
@@ -1,522 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.AttributedModel;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.ReflectionModel;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- internal static class CompositionServices
- {
- internal static readonly Type InheritedExportAttributeType = typeof(InheritedExportAttribute);
- internal static readonly Type ExportAttributeType = typeof(ExportAttribute);
- internal static readonly Type AttributeType = typeof(Attribute);
- internal static readonly Type ObjectType = typeof(object);
-
- private static readonly string[] reservedMetadataNames = new string[]
- {
- CompositionConstants.PartCreationPolicyMetadataName
- };
-
- internal static Type GetDefaultTypeFromMember(this MemberInfo member)
- {
- Assumes.NotNull(member);
-
- switch (member.MemberType)
- {
- case MemberTypes.Property:
- return ((PropertyInfo)member).PropertyType;
-
- case MemberTypes.NestedType:
- case MemberTypes.TypeInfo:
- return ((Type)member);
-
- case MemberTypes.Field:
- default:
- Assumes.IsTrue(member.MemberType == MemberTypes.Field);
- return ((FieldInfo)member).FieldType;
- }
- }
-
- internal static string GetContractNameFromExport(this MemberInfo member, ExportAttribute export)
- {
- if (!string.IsNullOrEmpty(export.ContractName))
- {
- return export.ContractName;
- }
-
- if (export.ContractType != null)
- {
- return AttributedModelServices.GetContractName(export.ContractType);
- }
-
- if (member.MemberType == MemberTypes.Method)
- {
- return AttributedModelServices.GetTypeIdentity((MethodInfo)member);
- }
-
- return AttributedModelServices.GetContractName(member.GetDefaultTypeFromMember());
- }
-
- internal static string GetTypeIdentityFromExport(this MemberInfo member, ExportAttribute export)
- {
- if (export.ContractType != null)
- {
- return AttributedModelServices.GetTypeIdentity(export.ContractType);
- }
-
- if (member.MemberType == MemberTypes.Method)
- {
- return AttributedModelServices.GetTypeIdentity((MethodInfo)member);
- }
-
- return AttributedModelServices.GetTypeIdentity(member.GetDefaultTypeFromMember());
- }
-
- internal static Type GetContractTypeFromImport(this IAttributedImport import, ImportType importType)
- {
- if (import.ContractType != null)
- {
- return import.ContractType;
- }
-
- return importType.ContractType;
- }
-
- internal static string GetContractNameFromImport(this IAttributedImport import, ImportType importType)
- {
- if (!string.IsNullOrEmpty(import.ContractName))
- {
- return import.ContractName;
- }
-
- Type contractType = import.GetContractTypeFromImport(importType);
-
- return AttributedModelServices.GetContractName(contractType);
- }
-
- internal static string GetTypeIdentityFromImport(this IAttributedImport import, ImportType importType)
- {
- Type contractType = import.GetContractTypeFromImport(importType);
-
- // For our importers we treat object as not having a type identity
- if (contractType == CompositionServices.ObjectType)
- {
- return null;
- }
-
- return AttributedModelServices.GetTypeIdentity(contractType);
- }
-
- internal static IDictionary<string, object> GetPartMetadataForType(this Type type, CreationPolicy creationPolicy)
- {
- IDictionary<string, object> dictionary = new Dictionary<string, object>(StringComparers.MetadataKeyNames);
-
- if (creationPolicy != CreationPolicy.Any)
- {
- dictionary.Add(CompositionConstants.PartCreationPolicyMetadataName, creationPolicy);
- }
-
- foreach (PartMetadataAttribute partMetadata in type.GetAttributes<PartMetadataAttribute>())
- {
- if (reservedMetadataNames.Contains(partMetadata.Name, StringComparers.MetadataKeyNames)
- || dictionary.ContainsKey(partMetadata.Name))
- {
- // Perhaps we should log an error here so that people know this value is being ignored.
- continue;
- }
-
- dictionary.Add(partMetadata.Name, partMetadata.Value);
- }
-
- if (dictionary.Count == 0)
- {
- return MetadataServices.EmptyMetadata;
- }
- else
- {
- return dictionary;
- }
- }
-
- internal static void TryExportMetadataForMember(this MemberInfo member, out IDictionary<string, object> dictionary)
- {
- dictionary = new Dictionary<string, object>();
-
- foreach (var attr in member.GetAttributes<Attribute>())
- {
- var provider = attr as ExportMetadataAttribute;
-
- if (provider != null)
- {
- if (reservedMetadataNames.Contains(provider.Name, StringComparers.MetadataKeyNames))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_ReservedMetadataNameUsed, member.GetDisplayName(), provider.Name);
- }
-
- // we pass "null" for valueType which would make it inferred. We don;t have additional type information when metadata
- // goes through the ExportMetadataAttribute path
- if (!dictionary.TryContributeMetadataValue(provider.Name, provider.Value, null, provider.IsMultiple))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_DuplicateMetadataNameValues, member.GetDisplayName(), provider.Name);
- }
- }
- else
- {
- Type attrType = attr.GetType();
- if ((attrType != CompositionServices.ExportAttributeType) && attrType.IsAttributeDefined<MetadataAttributeAttribute>(true))
- {
- bool allowsMultiple = false;
- AttributeUsageAttribute usage = attrType.GetFirstAttribute<AttributeUsageAttribute>(true);
-
- if (usage != null)
- {
- allowsMultiple = usage.AllowMultiple;
- }
-
- foreach (PropertyInfo pi in attrType.GetProperties())
- {
- if (pi.DeclaringType == CompositionServices.ExportAttributeType || pi.DeclaringType == CompositionServices.AttributeType)
- {
- // Don't contribute metadata properies from the base attribute types.
- continue;
- }
-
- if (reservedMetadataNames.Contains(pi.Name, StringComparers.MetadataKeyNames))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_ReservedMetadataNameUsed, member.GetDisplayName(), provider.Name);
- }
-
- object value = pi.GetValue(attr, null);
-
- if (value != null && !IsValidAttributeType(value.GetType()))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_MetadataContainsValueWithInvalidType, pi.GetDisplayName(), value.GetType().GetDisplayName());
- }
-
- if (!dictionary.TryContributeMetadataValue(pi.Name, value, pi.PropertyType, allowsMultiple))
- {
- throw ExceptionBuilder.CreateDiscoveryException(Strings.Discovery_DuplicateMetadataNameValues, member.GetDisplayName(), pi.Name);
- }
- }
- }
- }
- }
-
- // Need Keys.ToArray because we alter the dictionary in the loop
- foreach (var key in dictionary.Keys.ToArray())
- {
- var list = dictionary[key] as MetadataList;
- if (list != null)
- {
- dictionary[key] = list.ToArray();
- }
- }
-
- return;
- }
-
- private static bool TryContributeMetadataValue(this IDictionary<string, object> dictionary, string name, object value, Type valueType, bool allowsMultiple)
- {
- object metadataValue;
- if (!dictionary.TryGetValue(name, out metadataValue))
- {
- if (allowsMultiple)
- {
- var list = new MetadataList();
- list.Add(value, valueType);
- value = list;
- }
-
- dictionary.Add(name, value);
- }
- else
- {
- var list = metadataValue as MetadataList;
- if (!allowsMultiple || list == null)
- {
- // Either single value already found when should be multiple
- // or a duplicate name already exists
- dictionary.Remove(name);
- return false;
- }
-
- list.Add(value, valueType);
- }
- return true;
- }
-
- private class MetadataList
- {
- private Type _arrayType = null;
- private bool _containsNulls = false;
- private static readonly Type ObjectType = typeof(object);
- private static readonly Type TypeType = typeof(Type);
- private Collection<object> _innerList = new Collection<object>();
-
- public void Add(object item, Type itemType)
- {
- this._containsNulls |= (item == null);
-
- // if we've been passed typeof(object), we basically have no type inmformation
- if (itemType == ObjectType)
- {
- itemType = null;
- }
-
- // if we have no type information, get it from the item, if we can
- if ((itemType == null) && (item != null))
- {
- itemType = item.GetType();
- }
-
- // Types are special, because the are abstract classes, so if the item casts to Type, we assume System.Type
- if (item is Type)
- {
- itemType = TypeType;
- }
-
- // only try to call this if we got a meaningful type
- if (itemType != null)
- {
- this.InferArrayType(itemType);
- }
-
- this._innerList.Add(item);
- }
-
- private void InferArrayType(Type itemType)
- {
- Assumes.NotNull(itemType);
-
- if (this._arrayType == null)
- {
- // this is the first typed element we've been given, it sets the type of the array
- this._arrayType = itemType;
- }
- else
- {
- // if there's a disagreement on the array type, we flip to Object
- // NOTE : we can try to do better in the future to find common base class, but given that we support very limited set of types
- // in metadata right now, it's a moot point
- if (this._arrayType != itemType)
- {
- this._arrayType = ObjectType;
- }
- }
- }
-
- public Array ToArray()
- {
- if (this._arrayType == null)
- {
- // if the array type has not been set, assume Object
- this._arrayType = ObjectType;
- }
- else if (this._containsNulls && this._arrayType.IsValueType)
- {
- // if the array type is a value type and we have seen nulls, then assume Object
- this._arrayType = ObjectType;
- }
-
- Array array = Array.CreateInstance(this._arrayType, this._innerList.Count);
-
- for(int i = 0; i < array.Length; i++)
- {
- array.SetValue(this._innerList[i], i);
- }
- return array;
- }
- }
-
- //UNDONE: Need to add these warnings somewhere...Dev10:472538 should address this.
- //internal static CompositionResult MatchRequiredMetadata(this IDictionary<string, object> metadata, IEnumerable<string> requiredMetadata, string contractName)
- //{
- // Assumes.IsTrue(metadata != null);
-
- // var result = CompositionResult.SucceededResult;
-
- // var missingMetadata = (requiredMetadata == null) ? null : requiredMetadata.Except<string>(metadata.Keys);
- // if (missingMetadata != null && missingMetadata.Any())
- // {
- // result = result.MergeIssue(
- // CompositionError.CreateIssueAsWarning(CompositionErrorId.RequiredMetadataNotFound,
- // Strings.RequiredMetadataNotFound,
- // contractName,
- // string.Join(", ", missingMetadata.ToArray())));
-
- // return new CompositionResult(false, result.Issues);
- // }
-
- // return result;
- //}
-
- internal static IEnumerable<KeyValuePair<string, Type>> GetRequiredMetadata(Type metadataViewType)
- {
- if ((metadataViewType == null) ||
- ExportServices.IsDefaultMetadataViewType(metadataViewType) ||
- ExportServices.IsDictionaryConstructorViewType(metadataViewType) ||
- !metadataViewType.IsInterface)
- {
- return Enumerable.Empty<KeyValuePair<string, Type>>();
- }
-
- // A metadata view is required to be an Intrerface, and therefore only properties are allowed
- List<PropertyInfo> properties = metadataViewType.GetAllProperties().
- Where(property => property.GetFirstAttribute<DefaultValueAttribute>() == null).
- ToList();
-
- // NOTE : this is a carefully found balance between eager and delay-evaluation - the properties are filtered once and upfront
- // whereas the key/Type pairs are created every time. The latter is fine as KVPs are structs and as such copied on access regardless.
- // This also allows us to avoid creation of List<KVP> which - at least according to FxCop - leads to isues with NGEN
- return properties.Select(property => new KeyValuePair<string, Type>(property.Name, property.PropertyType));
- }
-
- internal static object GetExportedValueFromComposedPart(ImportEngine engine, ComposablePart part, ExportDefinition definition)
- {
- try
- {
- engine.SatisfyImports(part);
- }
- catch (CompositionException ex)
- {
- throw ExceptionBuilder.CreateCannotGetExportedValue(part, definition, ex);
- }
-
- try
- {
- return part.GetExportedValue(definition);
- }
- catch (ComposablePartException ex)
- {
- throw ExceptionBuilder.CreateCannotGetExportedValue(part, definition, ex);
- }
- }
-
- internal static bool IsRecomposable(this ComposablePart part)
- {
- return part.ImportDefinitions.Any(import => import.IsRecomposable);
- }
-
- internal static CompositionResult<T> TryInvoke<T>(Func<T> action)
- {
- try
- {
- T value = action();
- return new CompositionResult<T>(value);
- }
- catch (CompositionException ex)
- {
- return new CompositionResult<T>(ex.Errors);
- }
- }
-
- internal static CompositionResult TryInvoke(Action action)
- {
- try
- {
- action();
- return CompositionResult.SucceededResult;
- }
- catch (CompositionException ex)
- {
- return new CompositionResult(ex.Errors);
- }
- }
-
- internal static CompositionResult TryFire<TEventArgs>(EventHandler<TEventArgs> _delegate, object sender, TEventArgs e)
- where TEventArgs : EventArgs
- {
- CompositionResult result = CompositionResult.SucceededResult;
- foreach (EventHandler<TEventArgs> _subscriber in _delegate.GetInvocationList())
- {
- try
- {
- _subscriber.Invoke(sender, e);
- }
- catch (CompositionException ex)
- {
- result = result.MergeErrors(ex.Errors);
- }
- }
-
- return result;
- }
-
- internal static CreationPolicy GetRequiredCreationPolicy(this ImportDefinition definition)
- {
- ContractBasedImportDefinition contractDefinition = definition as ContractBasedImportDefinition;
-
- if (contractDefinition != null)
- {
- return contractDefinition.RequiredCreationPolicy;
- }
-
- return CreationPolicy.Any;
- }
-
- /// <summary>
- /// Returns a value indicating whether cardinality is
- /// <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/>.
- /// </summary>
- internal static bool IsAtMostOne(this ImportCardinality cardinality)
- {
- return cardinality == ImportCardinality.ZeroOrOne || cardinality == ImportCardinality.ExactlyOne;
- }
-
- private static bool IsValidAttributeType(Type type)
- {
- return IsValidAttributeType(type, true);
- }
-
- private static bool IsValidAttributeType(Type type, bool arrayAllowed)
- {
- Assumes.NotNull(type);
- // Definitions of valid attribute type taken from C# 3.0 Specification section 17.1.3.
-
- // One of the following types: bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort.
- if (type.IsPrimitive)
- {
- return true;
- }
-
- if (type == typeof(string))
- {
- return true;
- }
-
- // An enum type, provided it has public accessibility and the types in which it is nested (if any) also have public accessibility
- if (type.IsEnum && type.IsVisible)
- {
- return true;
- }
-
- if (typeof(Type).IsAssignableFrom(type))
- {
- return true;
- }
-
- // Single-dimensional arrays of the above types.
- if (arrayAllowed && type.IsArray &&
- type.GetArrayRank() == 1 &&
- IsValidAttributeType(type.GetElementType(), false))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs
deleted file mode 100644
index 5c1d7d9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.DirectoryCatalogDebuggerProxy.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- partial class DirectoryCatalog
- {
- internal class DirectoryCatalogDebuggerProxy
- {
- private readonly DirectoryCatalog _catalog;
-
- public DirectoryCatalogDebuggerProxy(DirectoryCatalog catalog)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
- }
-
- public ReadOnlyCollection<Assembly> Assemblies
- {
- get
- {
- return this._catalog._assemblyCatalogs.Values.Select(catalog => catalog.Assembly)
- .ToReadOnlyCollection();
- }
- }
-
- public string SearchPattern
- {
- get { return this._catalog.SearchPattern; }
- }
-
- public string Path
- {
- get { return this._catalog._path; }
- }
-
- public string FullPath
- {
- get { return this._catalog._fullPath; }
- }
-
- public ReadOnlyCollection<string> LoadedFiles
- {
- get { return this._catalog._loadedFiles; }
- }
-
- public ReadOnlyCollection<ComposablePartDefinition> Parts
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying catalog is respected.
- // We use ReadOnlyCollection as arrays do not have the
- // appropriate debugger display attributes applied to them.
- get { return this._catalog.Parts.ToReadOnlyCollection(); }
- }
- }
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs
deleted file mode 100644
index c6430f2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/DirectoryCatalog.cs
+++ /dev/null
@@ -1,542 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !SILVERLIGHT
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel.Composition.Diagnostics;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-using IOPath = System.IO.Path;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- [DebuggerTypeProxy(typeof(DirectoryCatalogDebuggerProxy))]
- public partial class DirectoryCatalog : ComposablePartCatalog, INotifyComposablePartCatalogChanged, ICompositionElement
- {
- private readonly Lock _thisLock = new Lock();
- private ComposablePartCatalogCollection _catalogCollection;
- private Dictionary<string, AssemblyCatalog> _assemblyCatalogs;
- private volatile bool _isDisposed = false;
- private string _path;
- private string _fullPath;
- private string _searchPattern;
- private ReadOnlyCollection<string> _loadedFiles;
- private IQueryable<ComposablePartDefinition> _partsQuery;
-
- /// <summary>
- /// Creates a catalog of <see cref="ComposablePartDefinition"/>s based on all the *.dll files
- /// in the given directory path.
- ///
- /// Possible exceptions that can be thrown are any that <see cref="Directory.GetFiles(string, string)"/> or
- /// <see cref="Assembly.Load(AssemblyName)"/> can throw.
- /// </summary>
- /// <param name="path">
- /// Path to the directory to scan for assemblies to add to the catalog.
- /// The path needs to be absolute or relative to <see cref="AppDomain.BaseDirectory"/>
- /// </param>
- /// <exception cref="ArgumentException">
- /// If <paramref name="path"/> is a zero-length string, contains only white space, or
- /// contains one or more implementation-specific invalid characters.
- /// </exception>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="path"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="DirectoryNotFoundException">
- /// The specified <paramref name="path"/> is invalid (for example, it is on an unmapped drive).
- /// </exception>
- /// <exception cref="PathTooLongException">
- /// The specified <paramref name="path"/>, file name, or both exceed the system-defined maximum length.
- /// For example, on Windows-based platforms, paths must be less than 248 characters and file names must
- /// be less than 260 characters.
- /// </exception>
- /// <exception cref="UnauthorizedAccessException">
- /// The caller does not have the required permission.
- /// </exception>
- public DirectoryCatalog(string path) : this(path, "*.dll")
- {
- }
-
- /// <summary>
- /// Creates a catalog of <see cref="ComposablePartDefinition"/>s based on all the given searchPattern
- /// over the files in the given directory path.
- ///
- /// Possible exceptions that can be thrown are any that <see cref="Directory.GetFiles(string, string)"/> or
- /// <see cref="Assembly.Load(AssemblyName)"/> can throw.
- /// </summary>
- /// <param name="path">
- /// Path to the directory to scan for assemblies to add to the catalog.
- /// The path needs to be absolute or relative to <see cref="AppDomain.BaseDirectory"/>
- /// </param>
- /// <param name="searchPattern">
- /// Any valid searchPattern that <see cref="Directory.GetFiles(string, string)"/> will accept.
- /// </param>
- /// <exception cref="ArgumentException">
- /// If <paramref name="path"/> is a zero-length string, contains only white space, or
- /// contains one or more implementation-specific invalid characters. Or <paramref name="searchPattern"/>
- /// does not contain a valid pattern.
- /// </exception>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="path"/> is <see langword="null"/> or <paramref name="searchPattern"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="DirectoryNotFoundException">
- /// The specified <paramref name="path"/> is invalid (for example, it is on an unmapped drive).
- /// </exception>
- /// <exception cref="PathTooLongException">
- /// The specified <paramref name="path"/>, file name, or both exceed the system-defined maximum length.
- /// For example, on Windows-based platforms, paths must be less than 248 characters and file names must
- /// be less than 260 characters.
- /// </exception>
- /// <exception cref="UnauthorizedAccessException">
- /// The caller does not have the required permission.
- /// </exception>
- public DirectoryCatalog(string path, string searchPattern)
- {
- Requires.NotNullOrEmpty(path, "path");
- this.Initialize(path, searchPattern);
- }
-
- /// <summary>
- /// Translated absolute path of the path passed into the constructor of <see cref="DirectoryCatalog"/>.
- /// </summary>
- public string FullPath
- {
- get
- {
- return this._fullPath;
- }
- }
-
- /// <summary>
- /// Set of files that have currently been loaded into the catalog.
- /// </summary>
- public ReadOnlyCollection<string> LoadedFiles
- {
- get
- {
- using (new ReadLock(this._thisLock))
- {
- return this._loadedFiles;
- }
- }
- }
-
- /// <summary>
- /// Path passed into the constructor of <see cref="DirectoryCatalog"/>.
- /// </summary>
- public string Path
- {
- get
- {
- return this._path;
- }
- }
-
- /// <summary>
- /// Gets the part definitions of the directory catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="DirectoryCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="DirectoryCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- this.ThrowIfDisposed();
- return this._partsQuery;
- }
- }
-
- /// <summary>
- /// SearchPattern passed into the constructor of <see cref="DirectoryCatalog"/>, or the default *.dll.
- /// </summary>
- public string SearchPattern
- {
- get
- {
- return this._searchPattern;
- }
- }
-
- /// <summary>
- /// Notify when the contents of the Catalog has changed.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changed;
-
- /// <summary>
- /// Notify when the contents of the Catalog has changing.
- /// </summary>
- public event EventHandler<ComposablePartCatalogChangeEventArgs> Changing;
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- ComposablePartCatalogCollection catalogs = null;
-
- try
- {
- using (new WriteLock(this._thisLock))
- {
- if (!this._isDisposed)
- {
- disposeLock = true;
- catalogs = this._catalogCollection;
- this._catalogCollection = null;
- this._assemblyCatalogs = null;
- this._isDisposed = true;
- }
- }
- }
- finally
- {
- if (catalogs != null)
- {
- catalogs.Dispose();
- }
-
- if (disposeLock)
- {
- this._thisLock.Dispose();
- }
- }
- }
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="DirectoryCatalog"/> has been disposed of.
- /// </exception>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- return this._catalogCollection.SelectMany(catalog => catalog.GetExports(definition));
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changed"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanged(ComposablePartCatalogChangeEventArgs e)
- {
- EventHandler<ComposablePartCatalogChangeEventArgs> changedEvent = this.Changed;
- if (changedEvent != null)
- {
- changedEvent(this, e);
- }
- }
-
- /// <summary>
- /// Raises the <see cref="INotifyComposablePartCatalogChanged.Changing"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ComposablePartCatalogChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnChanging(ComposablePartCatalogChangeEventArgs e)
- {
- EventHandler<ComposablePartCatalogChangeEventArgs> changingEvent = this.Changing;
- if (changingEvent != null)
- {
- changingEvent(this, e);
- }
- }
-
- /// <summary>
- /// Refreshes the <see cref="ComposablePartDefinition"/>s with the latest files in the directory that match
- /// the searchPattern. If any files have been added they will be added to the catalog and if any files were
- /// removed they will be removed from the catalog. For files that have been removed keep in mind that the
- /// assembly cannot be unloaded from the process so <see cref="ComposablePartDefinition"/>s for those files
- /// will simply be removed from the catalog.
- ///
- /// Possible exceptions that can be thrown are any that <see cref="Directory.GetFiles(string, string)"/> or
- /// <see cref="Assembly.Load(AssemblyName)"/> can throw.
- /// </summary>
- /// <exception cref="DirectoryNotFoundException">
- /// The specified <paramref name="path"/> has been removed since object construction.
- /// </exception>
- public void Refresh()
- {
- this.ThrowIfDisposed();
- Assumes.NotNull(this._loadedFiles);
-
- List<Tuple<string, AssemblyCatalog>> catalogsToAdd;
- List<Tuple<string, AssemblyCatalog>> catalogsToRemove;
- ComposablePartDefinition[] addedDefinitions;
- ComposablePartDefinition[] removedDefinitions;
- object changeReferenceObject;
- string[] afterFiles;
- string[] beforeFiles;
-
- while (true)
- {
- afterFiles = this.GetFiles();
-
- using (new ReadLock(this._thisLock))
- {
- changeReferenceObject = this._loadedFiles;
- beforeFiles = this._loadedFiles.ToArray();
- }
-
- this.DiffChanges(beforeFiles, afterFiles, out catalogsToAdd, out catalogsToRemove);
-
- // Don't go any further if there's no work to do
- if (catalogsToAdd.Count == 0 && catalogsToRemove.Count == 0)
- {
- return;
- }
-
- // Notify listeners to give them a preview before completeting the changes
- addedDefinitions = catalogsToAdd
- .SelectMany(cat => cat.Item2.Parts)
- .ToArray<ComposablePartDefinition>();
-
- removedDefinitions = catalogsToRemove
- .SelectMany(cat => cat.Item2.Parts)
- .ToArray<ComposablePartDefinition>();
-
- using (var atomicComposition = new AtomicComposition())
- {
- var changingArgs = new ComposablePartCatalogChangeEventArgs(addedDefinitions, removedDefinitions, atomicComposition);
- this.OnChanging(changingArgs);
-
- // if the change went through then write the catalog changes
- using (new WriteLock(this._thisLock))
- {
- if (changeReferenceObject != this._loadedFiles)
- {
- // Someone updated the list while we were diffing so we need to try the diff again
- continue;
- }
-
- foreach (var catalogToAdd in catalogsToAdd)
- {
- this._assemblyCatalogs.Add(catalogToAdd.Item1, catalogToAdd.Item2);
- this._catalogCollection.Add(catalogToAdd.Item2);
- }
-
- foreach (var catalogToRemove in catalogsToRemove)
- {
- this._assemblyCatalogs.Remove(catalogToRemove.Item1);
- this._catalogCollection.Remove(catalogToRemove.Item2);
- }
-
- this._partsQuery = this._catalogCollection.AsQueryable().SelectMany(catalog => catalog.Parts);
- this._loadedFiles = afterFiles.ToReadOnlyCollection();
-
- // Lastly complete any changes added to the atomicComposition during the change event
- atomicComposition.Complete();
-
- // Break out of the while(true)
- break;
- } // WriteLock
- } // AtomicComposition
- } // while (true)
-
- var changedArgs = new ComposablePartCatalogChangeEventArgs(addedDefinitions, removedDefinitions, null);
- this.OnChanged(changedArgs);
- }
-
- /// <summary>
- /// Returns a string representation of the directory catalog.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the string representation of the <see cref="DirectoryCatalog"/>.
- /// </returns>
- public override string ToString()
- {
- return GetDisplayName();
- }
-
- private AssemblyCatalog CreateAssemblyCatalogGuarded(string assemblyFilePath)
- {
- Exception exception = null;
-
- try
- {
- return new AssemblyCatalog(assemblyFilePath, this);
- }
- catch (FileNotFoundException ex)
- { // Files should always exists but don't blow up here if they don't
- exception = ex;
- }
- catch (FileLoadException ex)
- { // File was found but could not be loaded
- exception = ex;
- }
- catch (BadImageFormatException ex)
- { // Dlls that contain native code are not loaded, but do not invalidate the Directory
- exception = ex;
- }
- catch (ReflectionTypeLoadException ex)
- { // Dlls that have missing Managed dependencies are not loaded, but do not invalidate the Directory
- exception = ex;
- }
-
- CompositionTrace.AssemblyLoadFailed(this, assemblyFilePath, exception);
-
- return null;
- }
-
- private void DiffChanges(string[] beforeFiles, string[] afterFiles,
- out List<Tuple<string, AssemblyCatalog>> catalogsToAdd,
- out List<Tuple<string, AssemblyCatalog>> catalogsToRemove)
- {
- catalogsToAdd = new List<Tuple<string, AssemblyCatalog>>();
- catalogsToRemove = new List<Tuple<string, AssemblyCatalog>>();
-
- IEnumerable<string> filesToAdd = afterFiles.Except(beforeFiles);
- foreach (string file in filesToAdd)
- {
- AssemblyCatalog catalog = CreateAssemblyCatalogGuarded(file);
-
- if (catalog != null)
- {
- catalogsToAdd.Add(new Tuple<string, AssemblyCatalog>(file, catalog));
- }
- }
-
- IEnumerable<string> filesToRemove = beforeFiles.Except(afterFiles);
- using (new ReadLock(this._thisLock))
- {
- foreach (string file in filesToRemove)
- {
- AssemblyCatalog catalog;
- if (this._assemblyCatalogs.TryGetValue(file, out catalog))
- {
- catalogsToRemove.Add(new Tuple<string, AssemblyCatalog>(file, catalog));
- }
- }
- }
- }
-
- private string GetDisplayName()
- {
- return string.Format(CultureInfo.CurrentCulture,
- "{0} (Path=\"{1}\")", // NOLOC
- this.GetType().Name,
- this._path);
- }
-
- private string[] GetFiles()
- {
- return Directory.GetFiles(this._fullPath, this._searchPattern);
- }
-
- private static string GetFullPath(string path)
- {
- if (!IOPath.IsPathRooted(path) && AppDomain.CurrentDomain.BaseDirectory != null)
- {
- path = IOPath.Combine(AppDomain.CurrentDomain.BaseDirectory, path);
- }
-
- return IOPath.GetFullPath(path);
- }
-
- private void Initialize(string path, string searchPattern)
- {
- this._path = path;
- this._fullPath = GetFullPath(path);
- this._searchPattern = searchPattern;
- this._assemblyCatalogs = new Dictionary<string, AssemblyCatalog>();
- this._catalogCollection = new ComposablePartCatalogCollection(null);
-
- this._loadedFiles = GetFiles().ToReadOnlyCollection();
-
- foreach (string file in this._loadedFiles)
- {
- AssemblyCatalog assemblyCatalog = null;
- assemblyCatalog = CreateAssemblyCatalogGuarded(file);
-
- if (assemblyCatalog != null)
- {
- this._assemblyCatalogs.Add(file, assemblyCatalog);
- this._catalogCollection.Add(assemblyCatalog);
- }
- }
- this._partsQuery = this._catalogCollection.AsQueryable().SelectMany(catalog => catalog.Parts);
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- /// <summary>
- /// Gets the display name of the directory catalog.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="DirectoryCatalog"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- /// <summary>
- /// Gets the composition element from which the directory catalog originated.
- /// </summary>
- /// <value>
- /// This property always returns <see langword="null"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- ICompositionElement ICompositionElement.Origin
- {
- get { return null; }
- }
- }
-}
-
-#endif
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs
deleted file mode 100644
index 2a4c582..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs
+++ /dev/null
@@ -1,817 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Collections.ObjectModel;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public abstract partial class ExportProvider
- {
- /// <summary>
- /// Returns the export with the contract name derived from the specified type parameter,
- /// throwing an exception if there is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> object to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// The <see cref="Lazy{T}"/> object with the contract name derived from
- /// <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> object is an instance of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T}"/> objects with the contract name derived
- /// from <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T}"/> objects with the contract name
- /// derived from <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T> GetExport<T>()
- {
- return this.GetExport<T>((string)null);
- }
-
- /// <summary>
- /// Returns the export with the specified contract name, throwing an exception if there
- /// is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> object to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the <see cref="Lazy{T}"/>
- /// object to return; or <see langword="null"/> or an empty string ("") to use the
- /// default contract name.
- /// </param>
- /// <returns>
- /// The <see cref="Lazy{T}"/> object with the specified contract name.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> object is an instance of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The default contract name is compared using a case-sensitive, non-linguistic
- /// comparison using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T}"/> objects with the specified contract name
- /// in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T}"/> objects with the specified contract
- /// name in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T> GetExport<T>(string contractName)
- {
- return this.GetExportCore<T>(contractName);
- }
-
- /// <summary>
- /// Returns the export with the contract name derived from the specified type parameter,
- /// throwing an exception if there is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> object to return. The
- /// contract name is also derived from this type parameter.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> object
- /// to return.
- /// </typeparam>
- /// <returns>
- /// The <see cref="Lazy{T, TMetadataView}"/> object with the contract name derived
- /// from <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T, TMetadataView}"/> objects with the contract
- /// name derived from <typeparamref name="T"/> in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T, TMetadataView}"/> objects with the
- /// contract name derived from <typeparamref name="T"/> in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T, TMetadataView> GetExport<T, TMetadataView>()
- {
- return this.GetExport<T, TMetadataView>((string)null);
- }
-
- /// <summary>
- /// Returns the export with the specified contract name, throwing an exception if there
- /// is not exactly one matching export.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> object to return.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> object
- /// to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Lazy{T, TMetadataView}"/> object to return; or <see langword="null"/>
- /// or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// The <see cref="Lazy{T, TMetadataView}"/> object with the specified contract name.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero <see cref="Lazy{T, TMetadataView}"/> objects with the
- /// specified contract name in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one <see cref="Lazy{T, TMetadataView}"/> objects with the
- /// specified contract name in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- public Lazy<T, TMetadataView> GetExport<T, TMetadataView>(string contractName)
- {
- return this.GetExportCore<T, TMetadataView>(contractName);
- }
-
- /// <summary>
- /// Returns the exports with the specified contract name.
- /// </summary>
- /// <param name="type">
- /// The <see cref="Type"/> of the <see cref="Export"/> objects to return.
- /// </param>
- /// <param name="metadataViewType">
- /// The <see cref="Type"/> of the metadata view of the <see cref="Export"/> objects to
- /// return.
- /// </param>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/> object to return; or <see langword="null"/>
- /// or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the <see cref="Lazy{Object, Object}"/> objects
- /// with the specified contract name, if found; otherwise, an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Export"/> objects are instances of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where <c>T</c>
- /// is <paramref name="type"/> and <c>TMetadataView</c> is
- /// <paramref name="metadataViewType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <paramref name="type"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="type"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <paramref name="metadataViewType"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<object, object>> GetExports(Type type, Type metadataViewType, string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(type, metadataViewType, contractName, ImportCardinality.ZeroOrMore);
- Collection<Lazy<object, object>> result = new Collection<Lazy<object, object>>();
-
- Func<Export, Lazy<object, object>> typedExportFactory = ExportServices.CreateSemiStronglyTypedLazyFactory(type, metadataViewType);
- foreach (Export export in exports)
- {
- result.Add(typedExportFactory.Invoke(export));
- }
-
- return result;
- }
-
- /// <summary>
- /// Returns the exports with the contract name derived from the specified type parameter.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> objects to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the <see cref="Lazy{T}"/> objects
- /// with the contract name derived from <typeparamref name="T"/>, if found; otherwise,
- /// an empty <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> objects are instances of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T>> GetExports<T>()
- {
- return this.GetExports<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exports with the specified contract name.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T}"/> objects to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the <see cref="Lazy{T}"/>
- /// objects to return; or <see langword="null"/> or an empty string ("") to use the
- /// default contract name.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the <see cref="Lazy{T}"/> objects
- /// with the specified contract name, if found; otherwise, an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The returned <see cref="Lazy{T}"/> objects are instances of
- /// <see cref="Lazy{T, TMetadataView}"/> underneath, where
- /// <c>TMetadataView</c>
- /// is <see cref="IDictionary{TKey, TValue}"/> and where <c>TKey</c>
- /// is <see cref="String"/> and <c>TValue</c> is <see cref="Object"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T>> GetExports<T>(string contractName)
- {
- return this.GetExportsCore<T>(contractName);
- }
-
- /// <summary>
- /// Returns the exports with the contract name derived from the specified type parameter.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> objects to return. The
- /// contract name is also derived from this type parameter.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> objects
- /// to return.
- /// </typeparam>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the
- /// <see cref="Lazy{T, TMetadataView}"/> objects with the contract name derived from
- /// <typeparamref name="T"/>, if found; otherwise, an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T, TMetadataView>> GetExports<T, TMetadataView>()
- {
- return this.GetExports<T, TMetadataView>((string)null);
- }
-
- /// <summary>
- /// Returns the exports with the specified contract name.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the <see cref="Lazy{T, TMetadataView}"/> objects to return. The
- /// contract name is also derived from this type parameter.
- /// </typeparam>
- /// <typeparam name="TMetadataView">
- /// The type of the metadata view of the <see cref="Lazy{T, TMetadataView}"/> objects
- /// to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Lazy{T, TMetadataView}"/> objects to return; or <see langword="null"/>
- /// or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> containing the
- /// <see cref="Lazy{T, TMetadataView}"/> objects with the specified contract name if
- /// found; otherwise, an empty <see cref="IEnumerable{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="InvalidOperationException">
- /// <typeparamref name="TMetadataView"/> is not a valid metadata view type.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006")]
- public IEnumerable<Lazy<T, TMetadataView>> GetExports<T, TMetadataView>(string contractName)
- {
- return this.GetExportsCore<T, TMetadataView>(contractName);
- }
-
- /// <summary>
- /// Returns the exported value with the contract name derived from the specified type
- /// parameter, throwing an exception if there is not exactly one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// The exported <see cref="Object"/> with the contract name derived from
- /// <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero exported values with the contract name derived from
- /// <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one exported values with the contract name derived from
- /// <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValue<T>()
- {
- return this.GetExportedValue<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exported value with the specified contract name, throwing an exception
- /// if there is not exactly one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exported value to return,
- /// or <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// The exported <see cref="Object"/> with the specified contract name.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are zero exported values with the specified contract name in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// -or-
- /// <para>
- /// There are more than one exported values with the specified contract name in the
- /// <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValue<T>(string contractName)
- {
- return this.GetExportedValueCore<T>(contractName, ImportCardinality.ExactlyOne);
- }
-
- /// <summary>
- /// Returns the exported value with the contract name derived from the specified type
- /// parameter, throwing an exception if there is more than one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// The exported <see cref="Object"/> with the contract name derived from
- /// <typeparamref name="T"/>, if found; otherwise, the default value for
- /// <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// If the exported value is not found, then this method returns the appropriate
- /// default value for <typeparamref name="T"/>; for example, 0 (zero) for integer
- /// types, <see langword="false"/> for Boolean types, and <see langword="null"/>
- /// for reference types.
- /// </para>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// There are more than one exported values with the contract name derived from
- /// <typeparamref name="T"/> in the <see cref="CompositionContainer"/>.
- /// </para>
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValueOrDefault<T>()
- {
- return this.GetExportedValueOrDefault<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exported value with the specified contract name, throwing an exception
- /// if there is more than one matching exported value.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exported value to return,
- /// or <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <returns>
- /// The exported <see cref="Object"/> with the specified contract name, if found;
- /// otherwise, the default value for <typeparamref name="T"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// If the exported value is not found, then this method returns the appropriate
- /// default value for <typeparamref name="T"/>; for example, 0 (zero) for integer
- /// types, <see langword="false"/> for Boolean types, and <see langword="null"/>
- /// for reference types.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// The underlying exported value cannot be cast to <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// There are more than one exported values with the specified contract name in the
- /// <see cref="CompositionContainer"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public T GetExportedValueOrDefault<T>(string contractName)
- {
- return this.GetExportedValueCore<T>(contractName, ImportCardinality.ZeroOrOne);
- }
-
- /// <summary>
- /// Returns the exported values with the contract name derived from the specified type
- /// parameter.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return. The contract name is also
- /// derived from this type parameter.
- /// </typeparam>
- /// <returns>
- /// An <see cref="Collection{T}"/> containing the exported values with the contract name
- /// derived from the specified type parameter, if found; otherwise, an empty
- /// <see cref="Collection{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// One or more of the underlying exported values cannot be cast to
- /// <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public IEnumerable<T> GetExportedValues<T>()
- {
- return this.GetExportedValues<T>((string)null);
- }
-
- /// <summary>
- /// Returns the exported values with the specified contract name.
- /// </summary>
- /// <typeparam name="T">
- /// The type of the exported value to return.
- /// </typeparam>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exported values to
- /// return; or <see langword="null"/> or an empty string ("") to use the default
- /// contract name.
- /// </param>
- /// <returns>
- /// An <see cref="Collection{T}"/> containing the exported values with the specified
- /// contract name, if found; otherwise, an empty <see cref="Collection{T}"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on <typeparamref name="T"/>.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- /// <exception cref="CompositionContractMismatchException">
- /// One or more of the underlying exported values cannot be cast to
- /// <typeparamref name="T"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="CompositionContainer"/> has been disposed of.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- public IEnumerable<T> GetExportedValues<T>(string contractName)
- {
- return this.GetExportedValuesCore<T>(contractName);
- }
-
- private IEnumerable<T> GetExportedValuesCore<T>(string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(typeof(T), (Type)null, contractName, ImportCardinality.ZeroOrMore);
-
- Collection<T> result = new Collection<T>();
- foreach (Export export in exports)
- {
- result.Add(ExportServices.GetCastedExportedValue<T>(export));
- }
- return result;
- }
-
- private T GetExportedValueCore<T>(string contractName, ImportCardinality cardinality)
- {
- Assumes.IsTrue(cardinality.IsAtMostOne());
-
- Export export = this.GetExportsCore(typeof(T), (Type)null, contractName, cardinality).SingleOrDefault();
-
- return (export != null) ? ExportServices.GetCastedExportedValue<T>(export) : default(T);
- }
-
- private IEnumerable<Lazy<T>> GetExportsCore<T>(string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(typeof(T), (Type)null, contractName, ImportCardinality.ZeroOrMore);
-
- Collection<Lazy<T>> result = new Collection<Lazy<T>>();
- foreach (Export export in exports)
- {
- result.Add(ExportServices.CreateStronglyTypedLazyOfT<T>(export));
- }
- return result;
- }
-
- private IEnumerable<Lazy<T, TMetadataView>> GetExportsCore<T, TMetadataView>(string contractName)
- {
- IEnumerable<Export> exports = this.GetExportsCore(typeof(T), typeof(TMetadataView), contractName, ImportCardinality.ZeroOrMore);
-
- Collection<Lazy<T, TMetadataView>> result = new Collection<Lazy<T, TMetadataView>>();
- foreach (Export export in exports)
- {
- result.Add(ExportServices.CreateStronglyTypedLazyOfTM<T, TMetadataView>(export));
- }
- return result;
- }
-
- private Lazy<T, TMetadataView> GetExportCore<T, TMetadataView>(string contractName)
- {
- Export export = this.GetExportsCore(typeof(T), typeof(TMetadataView), contractName, ImportCardinality.ExactlyOne).SingleOrDefault();
-
- return (export != null) ? ExportServices.CreateStronglyTypedLazyOfTM<T, TMetadataView>(export) : null;
- }
-
- private Lazy<T> GetExportCore<T>(string contractName)
- {
- Export export = this.GetExportsCore(typeof(T), null, contractName, ImportCardinality.ExactlyOne).SingleOrDefault();
-
- return (export != null) ? ExportServices.CreateStronglyTypedLazyOfT<T>(export) : null;
- }
-
- private IEnumerable<Export> GetExportsCore(Type type, Type metadataViewType, string contractName, ImportCardinality cardinality)
- {
- // Only 'type' cannot be null - the other parameters have sensible defaults.
- Requires.NotNull(type, "type");
-
- if (string.IsNullOrEmpty(contractName))
- {
- contractName = AttributedModelServices.GetContractName(type);
- }
-
- if (metadataViewType == null)
- {
- metadataViewType = ExportServices.DefaultMetadataViewType;
- }
-
- if (!MetadataViewProvider.IsViewTypeValid(metadataViewType))
- {
- throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings.InvalidMetadataView, metadataViewType.Name));
- }
-
- ImportDefinition importDefinition = BuildImportDefinition(type, metadataViewType, contractName, cardinality);
- return this.GetExports(importDefinition, null);
- }
-
- private static ImportDefinition BuildImportDefinition(Type type, Type metadataViewType, string contractName, ImportCardinality cardinality)
- {
- Assumes.NotNull(type, metadataViewType, contractName);
-
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata = CompositionServices.GetRequiredMetadata(metadataViewType);
-
- string requiredTypeIdentity = null;
- if (type != typeof(object))
- {
- requiredTypeIdentity = AttributedModelServices.GetTypeIdentity(type);
- }
-
- return new ContractBasedImportDefinition(contractName, requiredTypeIdentity, requiredMetadata, cardinality, false, true, CreationPolicy.Any);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.cs
deleted file mode 100644
index 39893dc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportProvider.cs
+++ /dev/null
@@ -1,231 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for export providers, which provide
- /// methods for retrieving <see cref="Export"/> objects.
- /// </summary>
- public abstract partial class ExportProvider
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportProvider"/> class.
- /// </summary>
- protected ExportProvider()
- {
- }
-
- /// <summary>
- /// Occurs when the exports in the <see cref="ExportProvider"/> have changed.
- /// </summary>
- public event EventHandler<ExportsChangeEventArgs> ExportsChanged;
-
- /// <summary>
- /// Occurs when the exports in the <see cref="ExportProvider"/> are changing.
- /// </summary>
- public event EventHandler<ExportsChangeEventArgs> ExportsChanging;
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to get.
- /// </param>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ExactlyOne"/> and
- /// there are zero <see cref="Export"/> objects that match the conditions of the specified
- /// <see cref="ImportDefinition"/>.
- /// </para>
- /// -or-
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/> and there are more than one <see cref="Export"/>
- /// objects that match the conditions of the specified <see cref="ImportDefinition"/>.
- /// </para>
- /// </exception>
- public IEnumerable<Export> GetExports(ImportDefinition definition)
- {
- return GetExports(definition, null);
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to get.
- /// </param>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ImportCardinalityMismatchException">
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ExactlyOne"/> and
- /// there are zero <see cref="Export"/> objects that match the conditions of the specified
- /// <see cref="ImportDefinition"/>.
- /// </para>
- /// -or-
- /// <para>
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/> and there are more than one <see cref="Export"/>
- /// objects that match the conditions of the specified <see cref="ImportDefinition"/>.
- /// </para>
- /// </exception>
- public IEnumerable<Export> GetExports(ImportDefinition definition, AtomicComposition atomicComposition)
- {
- Requires.NotNull(definition, "definition");
-
- IEnumerable<Export> exports;
- ExportCardinalityCheckResult result = this.TryGetExportsCore(definition, atomicComposition, out exports);
- switch(result)
- {
- case ExportCardinalityCheckResult.Match:
- return exports;
- case ExportCardinalityCheckResult.NoExports:
- throw new ImportCardinalityMismatchException(string.Format(CultureInfo.CurrentCulture, Strings.CardinalityMismatch_NoExports, definition.Constraint.Body.ToString()));
- default:
- Assumes.IsTrue(result == ExportCardinalityCheckResult.TooManyExports);
- throw new ImportCardinalityMismatchException(string.Format(CultureInfo.CurrentCulture, Strings.CardinalityMismatch_TooManyExports, definition.Constraint.Body.ToString()));
- }
- }
-
- /// <summary>
- /// Returns all exports that match the conditions of the specified import.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to get.
- /// </param>
- /// <param name="exports">
- /// When this method returns, contains an <see cref="IEnumerable{T}"/> of <see cref="Export"/>
- /// objects that match the conditions defined by <see cref="ImportDefinition"/>, if found;
- /// otherwise, an empty <see cref="IEnumerable{T}"/>.
- /// </param>
- /// <returns>
- /// <see langword="true"/> if <see cref="ImportDefinition.Cardinality"/> is
- /// <see cref="ImportCardinality.ZeroOrOne"/> or <see cref="ImportCardinality.ZeroOrMore"/> and
- /// there are zero <see cref="Export"/> objects that match the conditions of the specified
- /// <see cref="ImportDefinition"/>. <see langword="true"/> if
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/> and there is exactly one <see cref="Export"/>
- /// that matches the conditions of the specified <see cref="ImportDefinition"/>; otherwise,
- /// <see langword="false"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- public bool TryGetExports(ImportDefinition definition, AtomicComposition atomicComposition, out IEnumerable<Export> exports)
- {
- Requires.NotNull(definition, "definition");
-
- exports = null;
- ExportCardinalityCheckResult result = this.TryGetExportsCore(definition, atomicComposition, out exports);
- return (result == ExportCardinalityCheckResult.Match);
- }
-
- /// <summary>
- /// Returns all exports that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="Export"/> objects to return.
- /// </param>
- /// <result>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects that match
- /// the conditions defined by <see cref="ImportDefinition"/>, if found; otherwise, an
- /// empty <see cref="IEnumerable{T}"/>.
- /// </result>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this method should not treat cardinality-related mismatches
- /// as errors, and should not throw exceptions in those cases. For instance,
- /// if <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ExactlyOne"/>
- /// and there are zero <see cref="Export"/> objects that match the conditions of the
- /// specified <see cref="ImportDefinition"/>, an <see cref="IEnumerable{T}"/> should be returned.
- /// </note>
- /// </remarks>
- protected abstract IEnumerable<Export> GetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition);
-
- /// <summary>
- /// Raises the <see cref="ExportsChanged"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ExportsChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnExportsChanged(ExportsChangeEventArgs e)
- {
- EventHandler<ExportsChangeEventArgs> changedEvent = this.ExportsChanged;
- if (changedEvent != null)
- {
- CompositionResult result = CompositionServices.TryFire(changedEvent, this, e);
- result.ThrowOnErrors(e.AtomicComposition);
- }
- }
-
- /// <summary>
- /// Raises the <see cref="ExportsChanging"/> event.
- /// </summary>
- /// <param name="e">
- /// An <see cref="ExportsChangeEventArgs"/> containing the data for the event.
- /// </param>
- protected virtual void OnExportsChanging(ExportsChangeEventArgs e)
- {
- EventHandler<ExportsChangeEventArgs> changingEvent = this.ExportsChanging;
- if (changingEvent != null)
- {
- CompositionResult result = CompositionServices.TryFire(changingEvent, this, e);
- result.ThrowOnErrors(e.AtomicComposition);
- }
- }
-
- private ExportCardinalityCheckResult TryGetExportsCore(ImportDefinition definition, AtomicComposition atomicComposition, out IEnumerable<Export> exports)
- {
- Assumes.NotNull(definition);
-
- exports = this.GetExportsCore(definition, atomicComposition);
-
- if (exports == null)
- {
- exports = Enumerable.Empty<Export>();
- }
-
- var checkResult = ExportServices.CheckCardinality(definition, exports);
-
- // Export providers treat >1 match as zero for cardinality 0-1 imports
- // If this policy is moved we need to revisit the assumption that the
- // ImportEngine made during previewing the only required imports to
- // now also preview optional imports.
- if (checkResult == ExportCardinalityCheckResult.TooManyExports &&
- definition.Cardinality == ImportCardinality.ZeroOrOne)
- {
- checkResult = ExportCardinalityCheckResult.Match;
- exports = Enumerable.Empty<Export>();
- }
-
- return checkResult;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs
deleted file mode 100644
index 6cff6b6..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ExportsChangeEventArgs.cs
+++ /dev/null
@@ -1,110 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Provides data for the <see cref="ExportProvider.ExportsChanged"/> and
- /// <see cref="ExportProvider.ExportsChanging"/> events.
- /// </summary>
- public class ExportsChangeEventArgs : EventArgs
- {
- private IEnumerable<string> _changedContractNames = null;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportsChangeEventArgs"/> class with
- /// the specified changed export definitions.
- /// </summary>
- /// <param name="addedExports">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/>s of the exports
- /// that have been added.
- /// </param>
- /// <param name="removedExports">
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/>s of the exports
- /// that have been removed.
- /// </param>
- /// <param name="atomicComposition">
- /// A <see cref="AtomicComposition"/> representing all tentative changes that will
- /// be completed if the change is successful, or discarded if it is not.
- /// <see langword="null"/> if being applied outside a <see cref="AtomicComposition"/>
- /// or during a <see cref="ExportProvider.ExportsChanged"/> event.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="addedExports"/> or <paramref name="removedExports"/> is <see langword="null"/>.
- /// </exception>
- public ExportsChangeEventArgs(IEnumerable<ExportDefinition> addedExports,
- IEnumerable<ExportDefinition> removedExports, AtomicComposition atomicComposition)
- {
- Requires.NotNull(addedExports, "addedExports");
- Requires.NotNull(removedExports, "removedExports");
-
- this.AddedExports = addedExports.AsArray();
- this.RemovedExports = removedExports.AsArray();
- this.AtomicComposition = atomicComposition;
- }
-
- /// <summary>
- /// Gets the export definitions for the exports that have been added.
- /// </summary>
- /// <value>
- /// A <see cref="IEnumerable{T}"/> of ExportDefinitions representing
- /// the exports that have been added to the <see cref="CompositionContainer"/>.
- /// </value>
- public IEnumerable<ExportDefinition> AddedExports { get; private set; }
-
- /// <summary>
- /// Gets the export definitions for the exports that have been removed.
- /// </summary>
- /// <value>
- /// A <see cref="IEnumerable{T}"/> of ExportDefinitions representing
- /// the exports that have been added to the <see cref="CompositionContainer"/>.
- /// </value>
- public IEnumerable<ExportDefinition> RemovedExports { get; private set; }
-
- /// <summary>
- /// Gets the contract names of the exports that have changed.
- /// </summary>
- /// <value>
- /// A <see cref="IEnumerable{T}"/> of strings representing the contract names of
- /// the exports that have changed in the <see cref="CompositionContainer"/>.
- /// </value>
- public IEnumerable<string> ChangedContractNames
- {
- get
- {
- if (this._changedContractNames == null)
- {
- this._changedContractNames = this.AddedExports
- .Concat(this.RemovedExports)
- .Select(export => export.ContractName)
- .Distinct()
- .ToArray();
- }
- return this._changedContractNames;
- }
- }
-
- /// <summary>
- /// Gets the atomicComposition, if any, that this change applies to.
- /// </summary>
- /// <value>
- /// A <see cref="AtomicComposition"/> that this set of changes applies too.
- ///
- /// It can be <see langword="null"/> if the changes are being applied outside a
- /// <see cref="AtomicComposition"/> or during a
- /// <see cref="ExportProvider.ExportsChanged"/> event.
- ///
- /// When the value is non-null it should be used to record temporary changed state
- /// and actions that will be executed when the atomicComposition is completeed.
- /// </value>
- public AtomicComposition AtomicComposition { get; private set; }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs
deleted file mode 100644
index 28d013b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/INotifyComposablePartCatalogChanged.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// Notifications when a ComposablePartCatalog changes.
- /// </summary>
- public interface INotifyComposablePartCatalogChanged
- {
- event EventHandler<ComposablePartCatalogChangeEventArgs> Changed;
- event EventHandler<ComposablePartCatalogChangeEventArgs> Changing;
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs
deleted file mode 100644
index d5fb427..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class ImportEngine
- {
- /// <summary>
- /// Used to wrap the start and stop of enforcing export changes don't
- /// break required imports. This context is stored in a AtomicComposition.
- /// </summary>
- private class EngineContext
- {
- private ImportEngine _importEngine;
- private List<PartManager> _addedPartManagers = new List<PartManager>();
- private List<PartManager> _removedPartManagers = new List<PartManager>();
- private EngineContext _parentEngineContext;
-
- public EngineContext(ImportEngine importEngine, EngineContext parentEngineContext)
- {
- this._importEngine = importEngine;
- this._parentEngineContext = parentEngineContext;
- }
-
- public void AddPartManager(PartManager part)
- {
- Assumes.NotNull(part);
- if (!this._removedPartManagers.Remove(part))
- {
- this._addedPartManagers.Add(part);
- }
- }
-
- public void RemovePartManager(PartManager part)
- {
- Assumes.NotNull(part);
- if (!this._addedPartManagers.Remove(part))
- {
- this._removedPartManagers.Add(part);
- }
- }
-
- public IEnumerable<PartManager> GetAddedPartManagers()
- {
- if (this._parentEngineContext != null)
- {
- return this._addedPartManagers.ConcatAllowingNull(this._parentEngineContext.GetAddedPartManagers());
- }
- return this._addedPartManagers;
- }
-
- public IEnumerable<PartManager> GetRemovedPartManagers()
- {
- if (this._parentEngineContext != null)
- {
- return this._removedPartManagers.ConcatAllowingNull(this._parentEngineContext.GetRemovedPartManagers());
- }
- return this._removedPartManagers;
- }
-
- public void Complete()
- {
- foreach (var partManager in this._addedPartManagers)
- {
- this._importEngine.StartSatisfyingImports(partManager, null);
- }
-
- foreach (var partManager in this._removedPartManagers)
- {
- this._importEngine.StopSatisfyingImports(partManager, null);
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs
deleted file mode 100644
index 2af4197..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.PartManager.cs
+++ /dev/null
@@ -1,211 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class ImportEngine
- {
- /// <summary>
- /// Used by the <see cref="ImportEngine"/> to manage the composition of a given part.
- /// It stores things like the list of disposable exports used to satisfy the imports as
- /// well as the caching of the exports discovered during previewing of a part.
- /// </summary>
- private class PartManager
- {
- private Dictionary<ImportDefinition, List<IDisposable>> _importedDisposableExports;
- private Dictionary<ImportDefinition, Export[]> _importCache;
- private string[] _importedContractNames;
- private ComposablePart _part;
- private ImportState _state = ImportState.NoImportsSatisfied;
- private readonly ImportEngine _importEngine;
-
- public PartManager(ImportEngine importEngine, ComposablePart part)
- {
- this._importEngine = importEngine;
- this._part = part;
- }
-
- public ComposablePart Part
- {
- get
- {
- return this._part;
- }
- }
-
- public ImportState State
- {
- get
- {
- using (this._importEngine._lock.LockStateForRead())
- {
- return this._state;
- }
- }
- set
- {
- using (this._importEngine._lock.LockStateForWrite())
- {
- this._state = value;
- }
- }
- }
-
- public bool TrackingImports { get; set; }
-
- public IEnumerable<string> GetImportedContractNames()
- {
- if (this.Part == null)
- {
- return Enumerable.Empty<string>();
- }
-
- if (this._importedContractNames == null)
- {
- this._importedContractNames = this.Part.ImportDefinitions.Select(import => import.ContractName ?? ImportDefinition.EmptyContractName).Distinct().ToArray();
- }
- return this._importedContractNames;
- }
-
- public CompositionResult TrySetImport(ImportDefinition import, IEnumerable<Export> exports)
- {
- try
- {
- this.Part.SetImport(import, exports);
- UpdateDisposableDependencies(import, exports);
- return CompositionResult.SucceededResult;
- }
- catch (CompositionException ex)
- { // Pulling on one of the exports failed
-
- return new CompositionResult(
- ErrorBuilder.CreatePartCannotSetImport(Part, import, ex));
- }
- catch (ComposablePartException ex)
- { // Type mismatch between export and import
-
- return new CompositionResult(
- ErrorBuilder.CreatePartCannotSetImport(Part, import, ex));
- }
- }
-
- public void SetSavedImport(ImportDefinition import, Export[] exports, AtomicComposition atomicComposition)
- {
- if (atomicComposition != null)
- {
- var savedExports = this.GetSavedImport(import);
-
- // Add a revert action to revert the stored exports
- // in the case that this atomicComposition gets rolled back.
- atomicComposition.AddRevertAction(() =>
- this.SetSavedImport(import, savedExports, null));
- }
-
- if (this._importCache == null)
- {
- this._importCache = new Dictionary<ImportDefinition, Export[]>();
- }
-
- this._importCache[import] = exports;
- }
-
- public Export[] GetSavedImport(ImportDefinition import)
- {
- Export[] exports = null;
- if (this._importCache != null)
- {
- // We don't care about the return value we just want the exports
- // and if it isn't present we just return the initialized null value
- this._importCache.TryGetValue(import, out exports);
- }
- return exports;
- }
-
- public void ClearSavedImports()
- {
- this._importCache = null;
- }
-
- public CompositionResult TryOnComposed()
- {
- try
- {
- this.Part.Activate();
- return CompositionResult.SucceededResult;
- }
- catch (ComposablePartException ex)
- { // Type failed to be constructed, imports could not be set, etc
- return new CompositionResult(
- ErrorBuilder.CreatePartCannotActivate(this.Part, ex));
- }
- }
-
- public void UpdateDisposableDependencies(ImportDefinition import, IEnumerable<Export> exports)
- {
- // Determine if there are any new disposable exports, optimizing for the most
- // likely case, which is that there aren't any
- List<IDisposable> disposableExports = null;
- foreach (var disposableExport in exports.OfType<IDisposable>())
- {
- if (disposableExports == null)
- {
- disposableExports = new List<IDisposable>();
- }
- disposableExports.Add(disposableExport);
- }
-
- // Dispose any existing references previously set on this import
- List<IDisposable> oldDisposableExports = null;
- if (this._importedDisposableExports != null &&
- this._importedDisposableExports.TryGetValue(import, out oldDisposableExports))
- {
- oldDisposableExports.ForEach(disposable => disposable.Dispose());
-
- // If there aren't any replacements, get rid of the old storage
- if (disposableExports == null)
- {
- this._importedDisposableExports.Remove(import);
- if (!this._importedDisposableExports.FastAny())
- {
- this._importedDisposableExports = null;
- }
-
- return;
- }
- }
-
- // Record the new collection
- if (disposableExports != null)
- {
- if (this._importedDisposableExports == null)
- {
- this._importedDisposableExports = new Dictionary<ImportDefinition, List<IDisposable>>();
- }
- this._importedDisposableExports[import] = disposableExports;
- }
- }
-
- public void DisposeAllDependencies()
- {
- if (this._importedDisposableExports != null)
- {
- IEnumerable<IDisposable> dependencies = this._importedDisposableExports.Values
- .SelectMany(exports => exports);
-
- this._importedDisposableExports = null;
-
- dependencies.ForEach(disposableExport => disposableExport.Dispose());
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs
deleted file mode 100644
index ba1f98a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.RecompositionManager.cs
+++ /dev/null
@@ -1,159 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- public partial class ImportEngine
- {
- /// <summary>
- /// Used by the <see cref="ImportEngine"/> to effiecently store and retrieve the list of parts
- /// that will be affected by changes to exports. This allows the <see cref="ImportEngine"/> to properly
- /// block breaking changes and also recompose imports as appropriate.
- /// </summary>
- private class RecompositionManager
- {
- private WeakReferenceCollection<PartManager> _partsToIndex = new WeakReferenceCollection<PartManager>();
- private WeakReferenceCollection<PartManager> _partsToUnindex = new WeakReferenceCollection<PartManager>();
- private Dictionary<string, WeakReferenceCollection<PartManager>> _partManagerIndex = new Dictionary<string, WeakReferenceCollection<PartManager>>();
-
- public void AddPartToIndex(PartManager partManager)
- {
- this._partsToIndex.Add(partManager);
- }
-
- public void AddPartToUnindex(PartManager partManager)
- {
- this._partsToUnindex.Add(partManager);
- }
-
- public IEnumerable<PartManager> GetAffectedParts(IEnumerable<string> changedContractNames)
- {
- this.UpdateImportIndex();
-
- List<PartManager> parts = new List<PartManager>();
-
- parts.AddRange(GetPartsImporting(ImportDefinition.EmptyContractName));
-
- foreach (string contractName in changedContractNames)
- {
- parts.AddRange(GetPartsImporting(contractName));
- }
-
- return parts;
- }
-
- public static IEnumerable<ImportDefinition> GetAffectedImports(ComposablePart part, IEnumerable<ExportDefinition> changedExports)
- {
- return part.ImportDefinitions.Where(import => IsAffectedImport(import, changedExports));
- }
-
- private static bool IsAffectedImport(ImportDefinition import, IEnumerable<ExportDefinition> changedExports)
- {
- // This could be more efficient still if the export definitions were indexed by contract name,
- // only worth revisiting if we need to squeeze more performance out of recomposition
- foreach (var export in changedExports)
- {
- if (import.IsConstraintSatisfiedBy(export))
- {
- return true;
- }
- }
-
- return false;
- }
-
- public IEnumerable<PartManager> GetPartsImporting(string contractName)
- {
- WeakReferenceCollection<PartManager> partManagerList;
- if (!this._partManagerIndex.TryGetValue(contractName, out partManagerList))
- {
- return Enumerable.Empty<PartManager>();
- }
-
- return partManagerList.AliveItemsToList();
- }
-
- private void AddIndexEntries(PartManager partManager)
- {
- foreach (string contractName in partManager.GetImportedContractNames())
- {
- WeakReferenceCollection<PartManager> indexEntries;
- if (!this._partManagerIndex.TryGetValue(contractName, out indexEntries))
- {
- indexEntries = new WeakReferenceCollection<PartManager>();
- this._partManagerIndex.Add(contractName, indexEntries);
- }
-
- if (!indexEntries.Contains(partManager))
- {
- indexEntries.Add(partManager);
- }
- }
- }
-
- private void RemoveIndexEntries(PartManager partManager)
- {
- foreach (string contractName in partManager.GetImportedContractNames())
- {
- WeakReferenceCollection<PartManager> indexEntries;
- if (this._partManagerIndex.TryGetValue(contractName, out indexEntries))
- {
- indexEntries.Remove(partManager);
- var aliveItems = indexEntries.AliveItemsToList();
-
- if (aliveItems.Count == 0)
- {
- this._partManagerIndex.Remove(contractName);
- }
- }
- }
- }
-
- private void UpdateImportIndex()
- {
- var partsToIndex = this._partsToIndex.AliveItemsToList();
- this._partsToIndex.Clear();
-
- var partsToUnindex = this._partsToUnindex.AliveItemsToList();
- this._partsToUnindex.Clear();
-
- if (partsToIndex.Count == 0 && partsToUnindex.Count == 0)
- {
- return;
- }
-
- foreach (var partManager in partsToIndex)
- {
- var index = partsToUnindex.IndexOf(partManager);
-
- // If the same part is being added and removed we can ignore both
- if (index >= 0)
- {
- partsToUnindex[index] = null;
- }
- else
- {
- AddIndexEntries(partManager);
- }
- }
-
- foreach (var partManager in partsToUnindex)
- {
- if (partManager != null)
- {
- RemoveIndexEntries(partManager);
- }
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.cs
deleted file mode 100644
index 18b296a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/ImportEngine.cs
+++ /dev/null
@@ -1,754 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- // This class guarantees thread-safety under the follwoing conditions:
- // - Each composition is executed on a single thread
- // - No recomposition ever takes place
- // - The class is created with isThreadSafe=true
- public partial class ImportEngine : ICompositionService, IDisposable
- {
- private const int MaximumNumberOfCompositionIterations = 100;
-
- private volatile bool _isDisposed;
- private ExportProvider _sourceProvider;
- private Stack<PartManager> _recursionStateStack = new Stack<PartManager>();
- private ConditionalWeakTable<ComposablePart, PartManager> _partManagers = new ConditionalWeakTable<ComposablePart, PartManager>();
- private RecompositionManager _recompositionManager = new RecompositionManager();
- private readonly CompositionLock _lock = null;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportEngine"/> class.
- /// </summary>
- /// <param name="sourceProvider">
- /// The <see cref="ExportProvider"/> which provides the
- /// <see cref="ImportEngine"/> access to <see cref="Export"/>s.
- /// </param>
- public ImportEngine(ExportProvider sourceProvider)
- : this(sourceProvider, false)
- {
- }
-
- public ImportEngine(ExportProvider sourceProvider, bool isThreadSafe)
- {
- Requires.NotNull(sourceProvider, "sourceProvider");
-
- this._sourceProvider = sourceProvider;
- this._sourceProvider.ExportsChanging += this.OnExportsChanging;
- this._lock = new CompositionLock(isThreadSafe);
- }
-
- /// <summary>
- /// Previews all the required imports for the given <see cref="ComposablePart"/> to
- /// ensure they can all be satisified. The preview does not actually set the imports
- /// only ensures that they exist in the source provider. If the preview succeeds then
- /// the <see cref="ImportEngine"/> also enforces that changes to exports in the source
- /// provider will not break any of the required imports. If this enforcement needs to be
- /// lifted for this part then <see cref="ReleaseImports"/> needs to be called for this
- /// <see cref="ComposablePart"/>.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to preview the required imports.
- /// </param>
- /// <param name="atomicComposition"></param>
- /// <exception cref="CompositionException">
- /// An error occurred during previewing and <paramref name="atomicComposition"/> is null.
- /// <see cref="CompositionException.Errors"/> will contain a collection of errors that occurred.
- /// The pre-existing composition is in an unknown state, depending on the errors that occured.
- /// </exception>
- /// <exception cref="ChangeRejectedException">
- /// An error occurred during the previewing and <paramref name="atomicComposition"/> is not null.
- /// <see cref="CompositionException.Errors"/> will contain a collection of errors that occurred.
- /// The pre-existing composition remains in valid state.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ImportEngine"/> has been disposed of.
- /// </exception>
- public void PreviewImports(ComposablePart part, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- // NOTE : this is a very intricate area threading-wise, please use caution when changing, otherwise state corruption or deadlocks will ensue
- // The gist of what we are doing is as follows:
- // We need to lock the composition, as we will proceed modifying our internal state. The tricky part is when we release the lock
- // Due to the fact that some actions will take place AFTER we leave this method, we need to KEEP THAT LOCK HELD until the transation is commiited or rolled back
- // This is the reason we CAN'T use "using here.
- // Instead, if the transaction is present we will queue up the release of the lock, otherwise we will release it when we exit this method
- // We add the "release" lock to BOTH Commit and Revert queues, because they are mutually exclusive, and we need to release the lock regardless.
-
- // This will take the lock, if necesary
- IDisposable compositionLockHolder = this._lock.IsThreadSafe ? this._lock.LockComposition() : null;
- bool compositionLockTaken = (compositionLockHolder != null);
- try
- {
- // revert actions are processed in the reverse order, so we have to add the "release lock" action now
- if (compositionLockTaken && (atomicComposition != null))
- {
- atomicComposition.AddRevertAction(() => compositionLockHolder.Dispose());
- }
-
- var partManager = GetPartManager(part, true);
- var result = TryPreviewImportsStateMachine(partManager, part, atomicComposition);
- result.ThrowOnErrors(atomicComposition);
-
- StartSatisfyingImports(partManager, atomicComposition);
-
- // Add the "release lock" to the commit actions
- if (compositionLockTaken && (atomicComposition != null))
- {
- atomicComposition.AddCompleteAction(() => compositionLockHolder.Dispose());
- }
- }
- finally
- {
- // We haven't updated the queues, so we can release the lock now
- if (compositionLockTaken && (atomicComposition == null))
- {
- compositionLockHolder.Dispose();
- }
- }
- }
-
- /// <summary>
- /// Satisfies the imports of the specified composable part. If the satisfy succeeds then
- /// the <see cref="ImportEngine"/> also enforces that changes to exports in the source
- /// provider will not break any of the required imports. If this enforcement needs to be
- /// lifted for this part then <see cref="ReleaseImports"/> needs to be called for this
- /// <see cref="ComposablePart"/>.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ImportEngine"/> has been disposed of.
- /// </exception>
- public void SatisfyImports(ComposablePart part)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- // NOTE : the following two calls use the state lock
- PartManager partManager = this.GetPartManager(part, true);
- if (partManager.State == ImportState.Composed)
- {
- return;
- }
-
- using (this._lock.LockComposition())
- {
- var result = TrySatisfyImports(partManager, part, true);
- result.ThrowOnErrors(); // throw CompositionException not ChangeRejectedException
- }
- }
-
- /// <summary>
- /// Sets the imports of the specified composable part exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- public void SatisfyImportsOnce(ComposablePart part)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- // NOTE : the following two calls use the state lock
- PartManager partManager = this.GetPartManager(part, true);
- if (partManager.State == ImportState.Composed)
- {
- return;
- }
-
- using (this._lock.LockComposition())
- {
- var result = TrySatisfyImports(partManager, part, false);
- result.ThrowOnErrors(); // throw CompositionException not ChangeRejectedException
- }
- }
-
- /// <summary>
- /// Removes any state stored in the <see cref="ImportEngine"/> for the associated
- /// <see cref="ComposablePart"/> and releases all the <see cref="Export"/>s used to
- /// satisfy the imports on the <see cref="ComposablePart"/>.
- ///
- /// Also removes the enforcement for changes that would break a required import on
- /// <paramref name="part"/>.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to release the imports on.
- /// </param>
- /// <param name="atomicComposition">
- /// The <see cref="AtomicComposition"/> that the release imports is running under.
- /// </param>
- public void ReleaseImports(ComposablePart part, AtomicComposition atomicComposition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(part, "part");
-
- using (this._lock.LockComposition())
- {
- PartManager partManager = this.GetPartManager(part, false);
- if (partManager != null)
- {
- this.StopSatisfyingImports(partManager, atomicComposition);
- }
- }
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- this.Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources
- /// </summary>
- /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (!this._isDisposed)
- {
- bool disposeLock = false;
- ExportProvider sourceProviderToUnsubscribeFrom = null;
- using (this._lock.LockStateForWrite())
- {
- if (!this._isDisposed)
- {
- sourceProviderToUnsubscribeFrom = this._sourceProvider;
- this._sourceProvider = null;
- this._recompositionManager = null;
- this._partManagers = null;
- this._isDisposed = true;
- disposeLock = true;
- }
- }
-
- if (sourceProviderToUnsubscribeFrom != null)
- {
- sourceProviderToUnsubscribeFrom.ExportsChanging -= this.OnExportsChanging;
- }
-
- if (disposeLock)
- {
- this._lock.Dispose();
- }
- }
- }
- }
-
- private CompositionResult TryPreviewImportsStateMachine(PartManager partManager,
- ComposablePart part, AtomicComposition atomicComposition)
- {
- var result = CompositionResult.SucceededResult;
-
- if (partManager.State == ImportState.ImportsPreviewing)
- {
- // We shouldn't nomally ever hit this case but if we do
- // then we should just error with a cycle error.
- return new CompositionResult(ErrorBuilder.CreatePartCycle(part));
- }
-
- // Transition from NoImportsStatisified to ImportsPreviewed
- if (partManager.State == ImportState.NoImportsSatisfied)
- {
- partManager.State = ImportState.ImportsPreviewing;
-
- var requiredImports = part.ImportDefinitions.Where(IsRequiredImportForPreview);
-
- // If this atomicComposition gets rolledback for any reason we need to reset our state
- atomicComposition.AddRevertActionAllowNull(() => partManager.State = ImportState.NoImportsSatisfied);
-
- result = result.MergeResult(
- this.TrySatisfyImportSubset(partManager, requiredImports, atomicComposition));
-
- if (!result.Succeeded)
- {
- partManager.State = ImportState.NoImportsSatisfied;
- return result;
- }
-
- partManager.State = ImportState.ImportsPreviewed;
- }
-
- return result;
- }
-
- private CompositionResult TrySatisfyImportsStateMachine(PartManager partManager, ComposablePart part)
- {
- var result = CompositionResult.SucceededResult;
-
- while (partManager.State < ImportState.Composed)
- {
- var previousState = partManager.State;
-
- switch (partManager.State)
- {
- // "ed" states which represent a some sort of steady state and will
- // attempt to do a state transition
- case ImportState.NoImportsSatisfied:
- case ImportState.ImportsPreviewed:
- {
- partManager.State = ImportState.PreExportImportsSatisfying;
-
- var prereqImports = part.ImportDefinitions.Where(import => import.IsPrerequisite);
- result = result.MergeResult(
- this.TrySatisfyImportSubset(partManager, prereqImports, null));
-
- partManager.State = ImportState.PreExportImportsSatisfied;
- break;
- }
- case ImportState.PreExportImportsSatisfied:
- {
- partManager.State = ImportState.PostExportImportsSatisfying;
-
- var requiredImports = part.ImportDefinitions.Where(import => !import.IsPrerequisite);
-
- result = result.MergeResult(
- this.TrySatisfyImportSubset(partManager, requiredImports, null));
-
- partManager.State = ImportState.PostExportImportsSatisfied;
- break;
- }
- case ImportState.PostExportImportsSatisfied:
- {
- partManager.State = ImportState.ComposedNotifying;
-
- partManager.ClearSavedImports();
- result = result.MergeResult(partManager.TryOnComposed());
-
- partManager.State = ImportState.Composed;
- break;
- }
-
-
- // "ing" states which represent some sort of cycle
- // These state should always return, error or not, instead of breaking
- case ImportState.ImportsPreviewing:
- {
- // We shouldn't nomally ever hit this case but if we do
- // then we should just error with a cycle error.
- return new CompositionResult(ErrorBuilder.CreatePartCycle(part));
- }
- case ImportState.PreExportImportsSatisfying:
- case ImportState.PostExportImportsSatisfying:
- {
- if (InPrerequisiteLoop())
- {
- return result.MergeError(ErrorBuilder.CreatePartCycle(part));
- }
- // Cycles in post export imports are allowed so just return in that case
- return result;
- }
- case ImportState.ComposedNotifying:
- {
- // We are currently notifying so don't notify again just return
- return result;
- }
- }
-
- // if an error occured while doing a state transition
- if (!result.Succeeded)
- {
- // revert to the previous state and return the error
- partManager.State = previousState;
- return result;
- }
- }
- return result;
- }
-
- private CompositionResult TrySatisfyImports(PartManager partManager, ComposablePart part, bool shouldTrackImports)
- {
- Assumes.NotNull(part);
-
- var result = CompositionResult.SucceededResult;
-
- // get out if the part is already composed
- if (partManager.State == ImportState.Composed)
- {
- return result;
- }
-
- // Track number of recursive iterations and throw an exception before the stack
- // fills up and debugging the root cause becomes tricky
- if (this._recursionStateStack.Count >= MaximumNumberOfCompositionIterations)
- {
- return result.MergeError(
- ErrorBuilder.ComposeTookTooManyIterations(MaximumNumberOfCompositionIterations));
- }
-
- // Maintain the stack to detect whether recursive loops cross prerequisites
- this._recursionStateStack.Push(partManager);
- try
- {
- result = result.MergeResult(
- TrySatisfyImportsStateMachine(partManager, part));
- }
- finally
- {
- this._recursionStateStack.Pop();
- }
-
- if (shouldTrackImports)
- {
- StartSatisfyingImports(partManager, null);
- }
-
- return result;
- }
-
- private CompositionResult TrySatisfyImportSubset(PartManager partManager,
- IEnumerable<ImportDefinition> imports, AtomicComposition atomicComposition)
- {
- CompositionResult result = CompositionResult.SucceededResult;
-
- var part = partManager.Part;
- foreach (ImportDefinition import in imports)
- {
- var exports = partManager.GetSavedImport(import);
-
- if (exports == null)
- {
- CompositionResult<IEnumerable<Export>> exportsResult = TryGetExports(
- this._sourceProvider, part, import, atomicComposition);
-
- if (!exportsResult.Succeeded)
- {
- result = result.MergeResult(exportsResult.ToResult());
- continue;
- }
- exports = exportsResult.Value.AsArray();
- }
-
- if (atomicComposition == null)
- {
- result = result.MergeResult(
- partManager.TrySetImport(import, exports));
- }
- else
- {
- partManager.SetSavedImport(import, exports, atomicComposition);
- }
- }
- return result;
- }
-
- private void OnExportsChanging(object sender, ExportsChangeEventArgs e)
- {
- CompositionResult result = CompositionResult.SucceededResult;
-
- // Prepare for the recomposition effort by minimizing the amount of work we'll have to do later
- AtomicComposition atomicComposition = e.AtomicComposition;
-
- IEnumerable<PartManager> affectedParts = this._recompositionManager.GetAffectedParts(e.ChangedContractNames);
-
- // When in a atomicComposition account for everything that isn't yet reflected in the
- // index
- if (atomicComposition != null)
- {
- EngineContext engineContext;
- if (atomicComposition.TryGetValue(this, out engineContext))
- {
- // always added the new part managers to see if they will also be
- // affected by these changes
- affectedParts = affectedParts.ConcatAllowingNull(engineContext.GetAddedPartManagers())
- .Except(engineContext.GetRemovedPartManagers());
- }
- }
-
- var changedExports = e.AddedExports.ConcatAllowingNull(e.RemovedExports);
-
- foreach (var partManager in affectedParts)
- {
- result = result.MergeResult(this.TryRecomposeImports(partManager, changedExports, atomicComposition));
- }
-
- result.ThrowOnErrors(atomicComposition);
- }
-
- private CompositionResult TryRecomposeImports(PartManager partManager,
- IEnumerable<ExportDefinition> changedExports, AtomicComposition atomicComposition)
- {
- var result = CompositionResult.SucceededResult;
-
- switch (partManager.State)
- {
- case ImportState.ImportsPreviewed:
- case ImportState.Composed:
- // Validate states to continue.
- break;
-
- default:
- {
- // All other states are invalid and for recomposition.
- return new CompositionResult(ErrorBuilder.InvalidStateForRecompposition(partManager.Part));
- }
- }
-
- var affectedImports = RecompositionManager.GetAffectedImports(partManager.Part, changedExports);
- bool partComposed = (partManager.State == ImportState.Composed);
-
- bool recomposedImport = false;
- foreach (var import in affectedImports)
- {
- result = result.MergeResult(
- TryRecomposeImport(partManager, partComposed, import, atomicComposition));
-
- recomposedImport = true;
- }
-
- // Knowing that the part has already been composed before and that the only possible
- // changes are to recomposable imports, we can safely go ahead and do this now or
- // schedule it for later
- if (result.Succeeded && recomposedImport && partComposed)
- {
- if (atomicComposition == null)
- {
- result = result.MergeResult(partManager.TryOnComposed());
- }
- else
- {
- atomicComposition.AddCompleteAction(() => partManager.TryOnComposed().ThrowOnErrors());
- }
- }
-
- return result;
- }
-
- private CompositionResult TryRecomposeImport(PartManager partManager, bool partComposed,
- ImportDefinition import, AtomicComposition atomicComposition)
- {
- if (partComposed && !import.IsRecomposable)
- {
- return new CompositionResult(ErrorBuilder.PreventedByExistingImport(partManager.Part, import));
- }
-
- // During recomposition you must always requery with the new atomicComposition you cannot use any
- // cached value in the part manager
- var exportsResult = TryGetExports(this._sourceProvider, partManager.Part, import, atomicComposition);
- if (!exportsResult.Succeeded)
- {
- return exportsResult.ToResult();
- }
- var exports = exportsResult.Value.AsArray();
-
- if (partComposed)
- {
- // Knowing that the part has already been composed before and that the only possible
- // changes are to recomposable imports, we can safely go ahead and do this now or
- // schedule it for later
- if (atomicComposition == null)
- {
- return partManager.TrySetImport(import, exports);
- }
- else
- {
- atomicComposition.AddCompleteAction(() => partManager.TrySetImport(import, exports).ThrowOnErrors());
- }
- }
- else
- {
- partManager.SetSavedImport(import, exports, atomicComposition);
- }
-
- return CompositionResult.SucceededResult;
- }
-
- private void StartSatisfyingImports(PartManager partManager, AtomicComposition atomicComposition)
- {
- // When not running in a atomicCompositional state, schedule reindexing after ensuring
- // that this isn't a redundant addition
- if (atomicComposition == null)
- {
- if (!partManager.TrackingImports)
- {
- partManager.TrackingImports = true;
- this._recompositionManager.AddPartToIndex(partManager);
- }
- }
- else
- {
- // While in a atomicCompositional state use a less efficient but effective means
- // of achieving the same results
- GetEngineContext(atomicComposition).AddPartManager(partManager);
- }
- }
-
- private void StopSatisfyingImports(PartManager partManager, AtomicComposition atomicComposition)
- {
- // When not running in a atomicCompositional state, schedule reindexing after ensuring
- // that this isn't a redundant removal
- if (atomicComposition == null)
- {
- this._partManagers.Remove(partManager.Part);
-
- // Take care of lifetime requirements
- partManager.DisposeAllDependencies();
-
- if (partManager.TrackingImports)
- {
- partManager.TrackingImports = false;
- this._recompositionManager.AddPartToUnindex(partManager);
- }
- }
- else
- {
- // While in a atomicCompositional state use a less efficient but effective means
- // of achieving the same results
- GetEngineContext(atomicComposition).RemovePartManager(partManager);
- }
- }
-
- private PartManager GetPartManager(ComposablePart part, bool createIfNotpresent)
- {
- PartManager partManager = null;
- using (this._lock.LockStateForRead())
- {
- if (this._partManagers.TryGetValue(part, out partManager))
- {
- return partManager;
- }
- }
-
- if (createIfNotpresent)
- {
- using (this._lock.LockStateForWrite())
- {
- if (!this._partManagers.TryGetValue(part, out partManager))
- {
- partManager = new PartManager(this, part);
- this._partManagers.Add(part, partManager);
- }
- }
- }
- return partManager;
- }
-
-
- private EngineContext GetEngineContext(AtomicComposition atomicComposition)
- {
- Assumes.NotNull(atomicComposition);
-
- EngineContext engineContext;
- if (!atomicComposition.TryGetValue(this, true, out engineContext))
- {
- EngineContext parentContext;
- atomicComposition.TryGetValue(this, false, out parentContext);
- engineContext = new EngineContext(this, parentContext);
- atomicComposition.SetValue(this, engineContext);
- atomicComposition.AddCompleteAction(engineContext.Complete);
- }
- return engineContext;
- }
-
- private bool InPrerequisiteLoop()
- {
- PartManager firstPart = this._recursionStateStack.First();
- PartManager lastPart = null;
-
- foreach (PartManager testPart in this._recursionStateStack.Skip(1))
- {
- if (testPart.State == ImportState.PreExportImportsSatisfying)
- {
- return true;
- }
-
- if (testPart == firstPart)
- {
- lastPart = testPart;
- break;
- }
- }
-
- // This should only be called when a loop has been detected - so it should always be on the stack
- Assumes.IsTrue(lastPart == firstPart);
- return false;
- }
-
- [DebuggerStepThrough]
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- private static CompositionResult<IEnumerable<Export>> TryGetExports(ExportProvider provider,
- ComposablePart part, ImportDefinition definition, AtomicComposition atomicComposition)
- {
- try
- {
- var exports = provider.GetExports(definition, atomicComposition).AsArray();
- return new CompositionResult<IEnumerable<Export>>(exports);
- }
- catch (ImportCardinalityMismatchException ex)
- {
- // Either not enough or too many exports that match the definition
- CompositionException exception = new CompositionException(ErrorBuilder.CreateImportCardinalityMismatch(ex, definition));
-
- return new CompositionResult<IEnumerable<Export>>(
- ErrorBuilder.CreatePartCannotSetImport(part, definition, exception));
- }
- }
-
- internal static bool IsRequiredImportForPreview(ImportDefinition import)
- {
- return import.Cardinality == ImportCardinality.ExactlyOne;
- }
-
- // Ordering of this enum is important so be sure to use caution if you
- // try to reorder them.
- private enum ImportState
- {
- NoImportsSatisfied = 0,
- ImportsPreviewing = 1,
- ImportsPreviewed = 2,
- PreExportImportsSatisfying = 3,
- PreExportImportsSatisfied = 4,
- PostExportImportsSatisfying = 5,
- PostExportImportsSatisfied = 6,
- ComposedNotifying = 7,
- Composed = 8,
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/TypeCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/TypeCatalog.cs
deleted file mode 100644
index 6d3be39..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Hosting/TypeCatalog.cs
+++ /dev/null
@@ -1,347 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.AttributedModel;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Hosting
-{
- /// <summary>
- /// An immutable ComposablePartCatalog created from a type array or a list of managed types. This class is threadsafe.
- /// It is Disposable.
- /// </summary>
- [DebuggerTypeProxy(typeof(ComposablePartCatalogDebuggerProxy))]
- public class TypeCatalog : ComposablePartCatalog, ICompositionElement
- {
- private readonly object _thisLock = new object();
- private Type[] _types = null;
- private volatile IQueryable<ComposablePartDefinition> _queryableParts;
- private volatile bool _isDisposed = false;
- private readonly ICompositionElement _definitionOrigin;
- private readonly Lazy<IDictionary<string, List<ComposablePartDefinition>>> _contractPartIndex;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="TypeCatalog"/> class
- /// with the specified types.
- /// </summary>
- /// <param name="types">
- /// An <see cref="Array"/> of attributed <see cref="Type"/> objects to add to the
- /// <see cref="TypeCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="types"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="types"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="types"/> contains an element that was loaded in the Reflection-only context.
- /// </exception>
- public TypeCatalog(params Type[] types)
- : this(types, (ICompositionElement)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="TypeCatalog"/> class
- /// with the specified types.
- /// </summary>
- /// <param name="types">
- /// An <see cref="IEnumerable{T}"/> of attributed <see cref="Type"/> objects to add
- /// to the <see cref="TypeCatalog"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="types"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="types"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="types"/> contains an element that was loaded in the reflection-only context.
- /// </exception>
- public TypeCatalog(IEnumerable<Type> types)
- : this(types, (ICompositionElement)null)
- {
- }
-
- internal TypeCatalog(IEnumerable<Type> types, ICompositionElement definitionOrigin)
- {
- Requires.NotNull(types, "types");
-
- foreach (Type type in types)
- {
- if (type == null)
- {
- throw ExceptionBuilder.CreateContainsNullElement("types");
- }
-#if !SILVERLIGHT
- if (type.Assembly.ReflectionOnly)
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.Argument_ElementReflectionOnlyType, "types"), "types");
- }
-#endif
- }
-
- this._types = types.ToArray();
- this._definitionOrigin = definitionOrigin ?? this;
-#if !SILVERLIGHT
- this._contractPartIndex = new Lazy<IDictionary<string, List<ComposablePartDefinition>>>(this.CreateIndex, true);
-#else
- this._contractPartIndex = new Lazy<IDictionary<string, List<ComposablePartDefinition>>>(this.CreateIndex);
-#endif
-
- }
-
- /// <summary>
- /// Gets the part definitions of the catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="TypeCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="TypeCatalog"/> has been disposed of.
- /// </exception>
- public override IQueryable<ComposablePartDefinition> Parts
- {
- get
- {
- this.ThrowIfDisposed();
-
- return this.PartsInternal;
- }
- }
-
- /// <summary>
- /// Gets the display name of the type catalog.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="TypeCatalog"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- /// <summary>
- /// Gets the composition element from which the type catalog originated.
- /// </summary>
- /// <value>
- /// This property always returns <see langword="null"/>.
- /// </value>
- [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
- ICompositionElement ICompositionElement.Origin
- {
- get { return null; }
- }
-
- private IQueryable<ComposablePartDefinition> PartsInternal
- {
- get
- {
- if (this._queryableParts == null)
- {
- lock (this._thisLock)
- {
- if (this._queryableParts == null)
- {
- Assumes.NotNull(this._types);
-
- var collection = new List<ComposablePartDefinition>();
- foreach (Type type in this._types)
- {
- var definition = AttributedModelDiscovery.CreatePartDefinitionIfDiscoverable(type, _definitionOrigin);
- if (definition != null)
- {
- collection.Add(definition);
- }
- }
- IQueryable<ComposablePartDefinition> queryableParts = collection.AsQueryable();
- Thread.MemoryBarrier();
-
- this._types = null;
- this._queryableParts = queryableParts;
- }
- }
- }
-
- return this._queryableParts;
- }
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>, if no
- /// <see cref="ExportDefinition"/> match the conditions defined by
- /// <paramref name="definition"/>, return an empty <see cref="IEnumerable{T}"/>.
- /// </note>
- /// </remarks>
- public override IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- IEnumerable<ComposablePartDefinition> candidateParts = this.GetCandidateParts(definition);
- if (candidateParts == null)
- {
- return Enumerable.Empty<Tuple<ComposablePartDefinition, ExportDefinition>>();
- }
-
- var exports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var part in candidateParts)
- {
- foreach (var export in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(export))
- {
- exports.Add(new Tuple<ComposablePartDefinition, ExportDefinition>(part, export));
- }
- }
- }
- return exports;
- }
-
- private IEnumerable<ComposablePartDefinition> GetCandidateParts(ImportDefinition definition)
- {
- string contractName = definition.ContractName;
-
- // Empty string represents a non-contract based import and thus the constraint needs
- // to be applied to all the possible exports in this catalog.
- if (string.IsNullOrEmpty(contractName))
- {
- return this.PartsInternal;
- }
-
- List<ComposablePartDefinition> candidateParts = null;
- if (this._contractPartIndex.Value.TryGetValue(contractName, out candidateParts))
- {
- return candidateParts;
- }
- else
- {
- return null;
- }
- }
-
- private IDictionary<string, List<ComposablePartDefinition>> CreateIndex()
- {
- Dictionary<string, List<ComposablePartDefinition>> index = new Dictionary<string, List<ComposablePartDefinition>>(StringComparers.ContractName);
-
- foreach (var part in this.PartsInternal)
- {
- foreach (string contractName in part.ExportDefinitions.Select(export => export.ContractName).Distinct())
- {
- List<ComposablePartDefinition> contractParts = null;
- if (!index.TryGetValue(contractName, out contractParts))
- {
- contractParts = new List<ComposablePartDefinition>();
- index.Add(contractName, contractParts);
- }
- contractParts.Add(part);
- }
- }
- return index;
- }
-
- /// <summary>
- /// Returns a string representation of the type catalog.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the string representation of the <see cref="TypeCatalog"/>.
- /// </returns>
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- this._isDisposed = true;
- }
-
- base.Dispose(disposing);
- }
-
- private string GetDisplayName()
- {
- return String.Format(CultureInfo.CurrentCulture,
- Strings.TypeCatalog_DisplayNameFormat,
- this.GetType().Name,
- this.GetTypesDisplay());
- }
-
- private string GetTypesDisplay()
- {
- int count = this.PartsInternal.Count();
- if (count == 0)
- {
- return Strings.TypeCatalog_Empty;
- }
-
- const int displayCount = 2;
- StringBuilder builder = new StringBuilder();
- foreach (ReflectionComposablePartDefinition definition in this.PartsInternal.Take(displayCount))
- {
- if (builder.Length > 0)
- {
- builder.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator);
- builder.Append(" ");
- }
-
- builder.Append(definition.GetPartType().GetDisplayName());
- }
-
- if (count > displayCount)
- { // Add an elipse to indicate that there
- // are more types than actually listed
- builder.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator);
- builder.Append(" ...");
- }
-
- return builder.ToString();
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/IAttributedImport.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/IAttributedImport.cs
deleted file mode 100644
index 28b3b4f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/IAttributedImport.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- internal interface IAttributedImport
- {
- string ContractName { get; }
- Type ContractType { get; }
- bool AllowRecomposition { get; }
- CreationPolicy RequiredCreationPolicy { get; }
- ImportCardinality Cardinality { get; }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionError.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionError.cs
deleted file mode 100644
index 12af595..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionError.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- // Internal interface for providing access to the composition error
- // identifier for an exception or error that participates in composition.
- internal interface ICompositionError
- {
- CompositionErrorId Id
- {
- get;
- }
-
- ICompositionElement Element
- {
- get;
- }
-
- Exception InnerException
- {
- get;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionService.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionService.cs
deleted file mode 100644
index 9cb9feb..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ICompositionService.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Provides methods for composing <see cref="ComposablePart"/> objects.
- /// </summary>
- public interface ICompositionService
- {
- /// <summary>
- /// Sets the imports of the specified composable part exactly once and they will not
- /// ever be recomposed.
- /// </summary>
- /// <param name="part">
- /// The <see cref="ComposablePart"/> to set the imports.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="part"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ICompositionService"/> has been disposed of.
- /// </exception>
- void SatisfyImportsOnce(ComposablePart part);
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs
deleted file mode 100644
index 7969e0c..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/IPartImportsSatisfiedNotification.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- public interface IPartImportsSatisfiedNotification
- {
- void OnImportsSatisfied();
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportAttribute.cs
deleted file mode 100644
index d2879f7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportAttribute.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a property, field, or parameter imports a particular export.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
- AllowMultiple = false, Inherited = false)]
- public class ImportAttribute : Attribute, IAttributedImport
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportAttribute"/> class, importing the
- /// export with the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportAttribute()
- : this((string)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportAttribute"/> class, importing the
- /// export with the contract name derived from the specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name of the export to import, or
- /// <see langword="null"/> to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportAttribute"/> class, importing the
- /// export with the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the export to import, or
- /// <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- public ImportAttribute(string contractName, Type contractType)
- {
- this.ContractName = contractName;
- this.ContractType = contractType;
- }
-
- /// <summary>
- /// Gets the contract name of the export to import.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the export to import. The
- /// default value is an empty string ("").
- /// </value>
- public string ContractName { get; private set; }
-
- /// <summary>
- /// Get the contract type of the export to import.
- /// </summary>
- /// <value>
- /// A <see cref="Type"/> of the export that this import is expecting. The default value is
- /// <see langword="null"/> which means that the type will be obtained by looking at the type on
- /// the member that this import is attached to. If the type is <see cref="object"/> then the
- /// importer is delaring they can accept any exported type.
- /// </value>
- public Type ContractType { get; private set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the property, field or parameter will be set
- /// to its type's default value when an export with the contract name is not present in
- /// the container.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the property, field or parameter will be set
- /// its type's default value when an export with the <see cref="ContractName"/> is not
- /// present in the <see cref="CompositionContainer"/>; otherwise, <see langword="false"/>.
- /// The default value is <see langword="false"/>.
- /// </value>
- /// <remarks>
- /// <para>
- /// The default value of a property's, field's or parameter's type is
- /// <see langword="null"/> for reference types and 0 for numeric value types. For
- /// other value types, the default value will be each field of the value type
- /// initialized to zero, if the field is a value type or <see langword="null"/> if
- /// the field is a reference type.
- /// </para>
- /// </remarks>
- public bool AllowDefault { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the property or field will be recomposed
- /// when exports that provide the same contract that this import expects, have changed
- /// in the container.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the property or field allows for recomposition when exports
- /// that provide the same <see cref="ContractName"/> are added or removed from the
- /// <see cref="CompositionContainer"/>; otherwise, <see langword="false"/>.
- /// The default value is <see langword="false"/>.
- /// </value>
- public bool AllowRecomposition { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating that the importer requires a specific
- /// <see cref="CreationPolicy"/> for the exports used to satisfy this import. T
- /// </summary>
- /// <value>
- /// <see cref="CreationPolicy.Any"/> - default value, used if the importer doesn't
- /// require a specific <see cref="CreationPolicy"/>.
- ///
- /// <see cref="CreationPolicy.Shared"/> - Requires that all exports used should be shared
- /// by everyone in the container.
- ///
- /// <see cref="CreationPolicy.NonShared"/> - Requires that all exports used should be
- /// non-shared in a container and thus everyone gets their own instance.
- /// </value>
- public CreationPolicy RequiredCreationPolicy { get; set; }
-
- ImportCardinality IAttributedImport.Cardinality
- {
- get
- {
- if (this.AllowDefault == true)
- {
- return ImportCardinality.ZeroOrOne;
- }
- return ImportCardinality.ExactlyOne;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportCardinalityMismatchException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportCardinalityMismatchException.cs
deleted file mode 100644
index e7e09c7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportCardinalityMismatchException.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Runtime.Serialization;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// The exception that is thrown when the cardinality of a <see cref="ImportDefinition"/>
- /// does not match the cardinality of the <see cref="Export"/> objects available in an
- /// <see cref="ExportProvider"/>.
- /// </summary>
- [Serializable]
- public class ImportCardinalityMismatchException : Exception
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class.
- /// </summary>
- public ImportCardinalityMismatchException()
- : this((string)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ImportCardinalityMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public ImportCardinalityMismatchException(string message)
- : this(message, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ImportCardinalityMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ImportCardinalityMismatchException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public ImportCardinalityMismatchException(string message, Exception innerException)
- : base(message, innerException)
- {
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportCardinalityMismatchException"/> class
- /// with the specified serialization data.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="ImportCardinalityMismatchException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="SerializationException">
- /// <paramref name="info"/> is missing a required value.
- /// </exception>
- /// <exception cref="InvalidCastException">
- /// <paramref name="info"/> contains a value that cannot be cast to the correct type.
- /// </exception>
- [System.Security.SecuritySafeCritical]
- protected ImportCardinalityMismatchException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
-#endif //!SILVERLIGHT
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportManyAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportManyAttribute.cs
deleted file mode 100644
index cdd1163..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportManyAttribute.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a property, field, or parameter imports a particular set of exports.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
- AllowMultiple = false, Inherited = false)]
- public class ImportManyAttribute : Attribute, IAttributedImport
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportManyAttribute"/> class, importing the
- /// set of exports with the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the element\item type of
- /// theproperty, field, or parameter type that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportManyAttribute()
- : this((string)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportManyAttribute"/> class, importing the
- /// set of exports with the contract name derived from the specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name of the exports to import, or
- /// <see langword="null"/> to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportManyAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportManyAttribute"/> class, importing the
- /// set of exports with the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the exports to import, or
- /// <see langword="null"/> or an empty string ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the property, field,
- /// or parameter type that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public ImportManyAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- public ImportManyAttribute(string contractName, Type contractType)
- {
- this.ContractName = contractName;
- this.ContractType = contractType;
- }
-
- /// <summary>
- /// Gets the contract name of the exports to import.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the exports to import. The
- /// default value is an empty string ("").
- /// </value>
- public string ContractName { get; private set; }
-
- /// <summary>
- /// Get the contract type of the export to import.
- /// </summary>
- /// <value>
- /// A <see cref="Type"/> of the export that this import is expecting. The default value is
- /// <see langword="null"/> which means that the type will be obtained by looking at the type on
- /// the member that this import is attached to. If the type is <see cref="object"/> then the
- /// importer is delaring they can accept any exported type.
- /// </value>
- public Type ContractType { get; private set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the property or field will be recomposed
- /// when exports that provide the same contract that this import expects, have changed
- /// in the container.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the property or field allows for recomposition when exports
- /// that provide the same <see cref="ContractName"/> are added or removed from the
- /// <see cref="CompositionContainer"/>; otherwise, <see langword="false"/>.
- /// The default value is <see langword="false"/>.
- /// </value>
- public bool AllowRecomposition { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating that the importer requires a specific
- /// <see cref="CreationPolicy"/> for the exports used to satisfy this import. T
- /// </summary>
- /// <value>
- /// <see cref="CreationPolicy.Any"/> - default value, used if the importer doesn't
- /// require a specific <see cref="CreationPolicy"/>.
- ///
- /// <see cref="CreationPolicy.Shared"/> - Requires that all exports used should be shared
- /// by everyone in the container.
- ///
- /// <see cref="CreationPolicy.NonShared"/> - Requires that all exports used should be
- /// non-shared in a container and thus everyone gets their own instance.
- /// </value>
- public CreationPolicy RequiredCreationPolicy { get; set; }
-
- ImportCardinality IAttributedImport.Cardinality
- {
- get { return ImportCardinality.ZeroOrMore; }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportingConstructorAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportingConstructorAttribute.cs
deleted file mode 100644
index db4a5eb..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ImportingConstructorAttribute.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a constructor should be used when constructing an attributed part.
- /// </summary>
- /// <remarks>
- /// By default, only a default parameter-less constructor, if available, is used to
- /// construct an attributed part. Use this attribute to indicate that a specific constructor
- /// should be used.
- /// </remarks>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
- public class ImportingConstructorAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportingConstructorAttribute"/> class.
- /// </summary>
- public ImportingConstructorAttribute()
- {
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/InheritedExportAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/InheritedExportAttribute.cs
deleted file mode 100644
index fb411bc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/InheritedExportAttribute.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that a type or interface that provides a particular export.
- /// </summary>
- [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = true, Inherited = true)]
- public class InheritedExportAttribute : ExportAttribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type marked with this attribute under the default contract name.
- /// </summary>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type itself,
- /// that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute()
- : this((string)null, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type marked with this attribute under a contract name derived from the specified type.
- /// </summary>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// <paramref name="contractType"/>.
- /// </para>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on the type of the
- /// itself, that is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute(Type contractType)
- : this((string)null, contractType)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute(string contractName)
- : this(contractName, (Type)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportAttribute"/> class, exporting the
- /// type or member marked with this attribute under the specified contract name.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> or an empty string
- /// ("") to use the default contract name.
- /// </param>
- /// <param name="contractType">
- /// A <see cref="Type"/> of which to derive the contract name to export the type
- /// marked with this attribute, under; or <see langword="null"/> to use the
- /// default contract name.
- /// </param>
- /// <remarks>
- /// <para>
- /// The default contract name is the result of calling
- /// <see cref="AttributedModelServices.GetContractName(Type)"/> on
- /// the type itself that this is marked with this attribute.
- /// </para>
- /// <para>
- /// The contract name is compared using a case-sensitive, non-linguistic comparison
- /// using <see cref="StringComparer.Ordinal"/>.
- /// </para>
- /// </remarks>
- public InheritedExportAttribute(string contractName, Type contractType)
- : base(contractName, contractType)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataAttributeAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataAttributeAttribute.cs
deleted file mode 100644
index 81ad7e9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataAttributeAttribute.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies that an attribute can be used to provide metadata for a type, property, field,
- /// or method marked with the <see cref="ExportAttribute"/>.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class,
- AllowMultiple=false, Inherited=true)]
- public sealed class MetadataAttributeAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MetadataAttributeAttribute"/> class.
- /// </summary>
- public MetadataAttributeAttribute()
- {
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataServices.cs
deleted file mode 100644
index fa363c0..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataServices.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition
-{
- internal static class MetadataServices
- {
- public static readonly IDictionary<string, object> EmptyMetadata = new ReadOnlyDictionary<string, object>(null);
-
- public static IDictionary<string, object> AsReadOnly(this IDictionary<string, object> metadata)
- {
- if (metadata == null)
- {
- return EmptyMetadata;
- }
-
- if (metadata is ReadOnlyDictionary<string, object>)
- {
- return metadata;
- }
-
- return new ReadOnlyDictionary<string, object>(metadata);
- }
-
- public static T GetValue<T>(this IDictionary<string, object> metadata, string key)
- {
- Assumes.NotNull(metadata, "metadata");
-
- object untypedValue = true;
- if (!metadata.TryGetValue(key, out untypedValue))
- {
- return default(T);
- }
-
- if (untypedValue is T)
- {
- return (T)untypedValue;
- }
- else
- {
- return default(T);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewGenerator.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewGenerator.cs
deleted file mode 100644
index e40aa62..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewGenerator.cs
+++ /dev/null
@@ -1,321 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using Microsoft.Internal;
-using System.Reflection.Emit;
-using System.Collections;
-
-namespace System.ComponentModel.Composition
-{
- // // Assume TMetadataView is
- // //interface Foo
- // //{
- // // public typeRecord1 Record1 { get; }
- // // public typeRecord2 Record2 { get; }
- // // public typeRecord3 Record3 { get; }
- // // public typeRecord4 Record4 { get; }
- // //}
- // // The class to be generated will look approximately like:
- // public class __Foo__MedataViewProxy : TMetadataView
- // {
- // public __Foo__MedataViewProxy (IDictionary<string, object> metadata)
- // {
- // if(metadata == null)
- // {
- // throw InvalidArgumentException("metadata");
- // }
- // try
- // {
- // Record1 = (typeRecord1)Record1;
- // Record2 = (typeRecord1)Record2;
- // Record3 = (typeRecord1)Record3;
- // Record4 = (typeRecord1)Record4;
- // }
- // catch(InvalidCastException ice)
- // {
- // //Annotate exception .Data with diagnostic info
- // }
- // catch(NulLReferenceException ice)
- // {
- // //Annotate exception .Data with diagnostic info
- // }
- // }
- // // Interface
- // public typeRecord1 Record1 { get; }
- // public typeRecord2 Record2 { get; }
- // public typeRecord3 Record3 { get; }
- // public typeRecord4 Record4 { get; }
- // }
- internal static class MetadataViewGenerator
- {
- public const string MetadataViewType = "MetadataViewType";
- public const string MetadataItemKey = "MetadataItemKey";
- public const string MetadataItemTargetType = "MetadataItemTargetType";
- public const string MetadataItemSourceType = "MetadataItemSourceType";
- public const string MetadataItemValue = "MetadataItemValue";
-
- private static Lock _lock = new Lock();
- private static Dictionary<Type, Type> _proxies = new Dictionary<Type, Type>();
-
- private static AssemblyName ProxyAssemblyName = new AssemblyName(string.Format(CultureInfo.InvariantCulture, "MetadataViewProxies_{0}", Guid.NewGuid()));
- private static AssemblyBuilder ProxyAssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(ProxyAssemblyName, AssemblyBuilderAccess.Run);
- private static ModuleBuilder ProxyModuleBuilder = ProxyAssemblyBuilder.DefineDynamicModule("MetadataViewProxiesModule");
- private static Type[] CtorArgumentTypes = new Type[] { typeof(IDictionary<string, object>) };
- private static MethodInfo _mdvDictionaryTryGet = CtorArgumentTypes[0].GetMethod("TryGetValue");
- private static readonly MethodInfo ObjectGetType = typeof(object).GetMethod("GetType", Type.EmptyTypes);
-
- public static Type GenerateView(Type viewType)
- {
- Assumes.NotNull(viewType);
- Assumes.IsTrue(viewType.IsInterface);
-
- Type proxyType;
- bool foundProxy;
-
- using (new ReadLock(_lock))
- {
- foundProxy = _proxies.TryGetValue(viewType, out proxyType);
- }
-
- // No factory exists
- if(!foundProxy)
- {
- // Try again under a write lock if still none generate the proxy
- using (new WriteLock(_lock))
- {
- foundProxy = _proxies.TryGetValue(viewType, out proxyType);
-
- if (!foundProxy)
- {
- proxyType = GenerateInterfaceViewProxyType(viewType);
- Assumes.NotNull(proxyType);
-
- _proxies.Add(viewType, proxyType);
- }
- }
- }
- return proxyType;
- }
-
- private static void GenerateLocalAssignmentFromDefaultAttribute(this ILGenerator IL, DefaultValueAttribute[] attrs, LocalBuilder local)
- {
- if (attrs.Length > 0)
- {
- DefaultValueAttribute defaultAttribute = attrs[0];
- IL.LoadValue(defaultAttribute.Value);
- if ((defaultAttribute.Value != null) && (defaultAttribute.Value.GetType().IsValueType))
- {
- IL.Emit(OpCodes.Box, defaultAttribute.Value.GetType());
- }
- IL.Emit(OpCodes.Stloc, local);
- }
- }
-
- private static void GenerateFieldAssignmentFromLocalValue(this ILGenerator IL, LocalBuilder local, FieldBuilder field)
- {
- IL.Emit(OpCodes.Ldarg_0);
- IL.Emit(OpCodes.Ldloc, local);
- IL.Emit(field.FieldType.IsValueType ? OpCodes.Unbox_Any : OpCodes.Castclass, field.FieldType);
- IL.Emit(OpCodes.Stfld, field);
- }
-
- private static void GenerateLocalAssignmentFromFlag(this ILGenerator IL, LocalBuilder local, bool flag)
- {
- IL.Emit(flag ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0);
- IL.Emit(OpCodes.Stloc, local);
- }
-
- // This must be called with _readerWriterLock held for Write
- private static Type GenerateInterfaceViewProxyType(Type viewType)
- {
- // View type is an interface let's cook an implementation
- Type proxyType;
- TypeBuilder proxyTypeBuilder;
- Type[] interfaces = { viewType };
-
- proxyTypeBuilder = ProxyModuleBuilder.DefineType(
- string.Format(CultureInfo.InvariantCulture, "_proxy_{0}_{1}", viewType.FullName, Guid.NewGuid()),
- TypeAttributes.Public,
- typeof(object),
- interfaces);
-
- // Implement Constructor
- ILGenerator proxyCtorIL = proxyTypeBuilder.CreateGeneratorForPublicConstructor(CtorArgumentTypes);
- LocalBuilder exception = proxyCtorIL.DeclareLocal(typeof(Exception));
- LocalBuilder exceptionData = proxyCtorIL.DeclareLocal(typeof(IDictionary));
- LocalBuilder sourceType = proxyCtorIL.DeclareLocal(typeof(Type));
- LocalBuilder value = proxyCtorIL.DeclareLocal(typeof(object));
- LocalBuilder usesExportedMD = proxyCtorIL.DeclareLocal(typeof(bool));
-
- Label tryConstructView = proxyCtorIL.BeginExceptionBlock();
-
- // Implement interface properties
- foreach (PropertyInfo propertyInfo in viewType.GetAllProperties())
- {
- string fieldName = string.Format(CultureInfo.InvariantCulture, "_{0}_{1}", propertyInfo.Name, Guid.NewGuid());
-
- // Cache names and type for exception
- string propertyName = string.Format(CultureInfo.InvariantCulture, "{0}", propertyInfo.Name);
-
- Type[] propertyTypeArguments = new Type[] { propertyInfo.PropertyType };
- Type[] optionalModifiers = null;
- Type[] requiredModifiers = null;
-
-#if !SILVERLIGHT
- // PropertyInfo does not support GetOptionalCustomModifiers and GetRequiredCustomModifiers on Silverlight
- optionalModifiers = propertyInfo.GetOptionalCustomModifiers();
- requiredModifiers = propertyInfo.GetRequiredCustomModifiers();
- Array.Reverse(optionalModifiers);
- Array.Reverse(requiredModifiers);
-#endif
- // Generate field
- FieldBuilder proxyFieldBuilder = proxyTypeBuilder.DefineField(
- fieldName,
- propertyInfo.PropertyType,
- FieldAttributes.Private);
-
- // Generate property
- PropertyBuilder proxyPropertyBuilder = proxyTypeBuilder.DefineProperty(
- propertyName,
- PropertyAttributes.None,
- propertyInfo.PropertyType,
- propertyTypeArguments);
-
- // Generate constructor code for retrieving the metadata value and setting the field
- Label tryCastValue = proxyCtorIL.BeginExceptionBlock();
- Label innerTryCastValue;
-
- DefaultValueAttribute[] attrs = propertyInfo.GetAttributes<DefaultValueAttribute>(false);
- if(attrs.Length > 0)
- {
- innerTryCastValue = proxyCtorIL.BeginExceptionBlock();
- }
-
- // In constructor set the backing field with the value from the dictionary
- Label doneGettingDefaultValue = proxyCtorIL.DefineLabel();
- GenerateLocalAssignmentFromFlag(proxyCtorIL, usesExportedMD, true);
-
- proxyCtorIL.Emit(OpCodes.Ldarg_1);
- proxyCtorIL.Emit(OpCodes.Ldstr, propertyInfo.Name);
- proxyCtorIL.Emit(OpCodes.Ldloca, value);
- proxyCtorIL.Emit(OpCodes.Callvirt, _mdvDictionaryTryGet);
- proxyCtorIL.Emit(OpCodes.Brtrue, doneGettingDefaultValue);
-
- proxyCtorIL.GenerateLocalAssignmentFromFlag(usesExportedMD, false);
- proxyCtorIL.GenerateLocalAssignmentFromDefaultAttribute(attrs, value);
-
- proxyCtorIL.MarkLabel(doneGettingDefaultValue);
- proxyCtorIL.GenerateFieldAssignmentFromLocalValue(value, proxyFieldBuilder);
- proxyCtorIL.Emit(OpCodes.Leave, tryCastValue);
-
- // catch blocks for innerTryCastValue start here
- if (attrs.Length > 0)
- {
- proxyCtorIL.BeginCatchBlock(typeof(InvalidCastException));
- {
- Label notUsesExportedMd = proxyCtorIL.DefineLabel();
- proxyCtorIL.Emit(OpCodes.Ldloc, usesExportedMD);
- proxyCtorIL.Emit(OpCodes.Brtrue, notUsesExportedMd);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- proxyCtorIL.MarkLabel(notUsesExportedMd);
- proxyCtorIL.GenerateLocalAssignmentFromDefaultAttribute(attrs, value);
- proxyCtorIL.GenerateFieldAssignmentFromLocalValue(value, proxyFieldBuilder);
- }
- proxyCtorIL.EndExceptionBlock();
- }
-
- // catch blocks for tryCast start here
- proxyCtorIL.BeginCatchBlock(typeof(NullReferenceException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemKey, propertyName);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemTargetType, propertyInfo.PropertyType);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
-
- proxyCtorIL.BeginCatchBlock(typeof(InvalidCastException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemKey, propertyName);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataItemTargetType, propertyInfo.PropertyType);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
-
- proxyCtorIL.EndExceptionBlock();
-
- if (propertyInfo.CanWrite)
- {
- // The MetadataView '{0}' is invalid because property '{1}' has a property set method.
- throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture,
- Strings.InvalidSetterOnMetadataField,
- viewType,
- propertyName));
- }
- if (propertyInfo.CanRead)
- {
- // Generate "get" method implementation.
- MethodBuilder getMethodBuilder = proxyTypeBuilder.DefineMethod(
- string.Format(CultureInfo.InvariantCulture, "get_{0}", propertyName),
- MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.NewSlot | MethodAttributes.Virtual | MethodAttributes.Final,
- CallingConventions.HasThis,
- propertyInfo.PropertyType,
- requiredModifiers,
- optionalModifiers,
- Type.EmptyTypes, null, null);
-
- proxyTypeBuilder.DefineMethodOverride(getMethodBuilder, propertyInfo.GetGetMethod());
- ILGenerator getMethodIL = getMethodBuilder.GetILGenerator();
- getMethodIL.Emit(OpCodes.Ldarg_0);
- getMethodIL.Emit(OpCodes.Ldfld, proxyFieldBuilder);
- getMethodIL.Emit(OpCodes.Ret);
-
- proxyPropertyBuilder.SetGetMethod(getMethodBuilder);
- }
- }
-
- proxyCtorIL.Emit(OpCodes.Leave, tryConstructView);
-
- // catch blocks for constructView start here
- proxyCtorIL.BeginCatchBlock(typeof(NullReferenceException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataViewType, viewType);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
- proxyCtorIL.BeginCatchBlock(typeof(InvalidCastException));
- {
- proxyCtorIL.Emit(OpCodes.Stloc, exception);
-
- proxyCtorIL.GetExceptionDataAndStoreInLocal(exception, exceptionData);
- proxyCtorIL.Emit(OpCodes.Ldloc, value);
- proxyCtorIL.Emit(OpCodes.Call, ObjectGetType);
- proxyCtorIL.Emit(OpCodes.Stloc, sourceType);
- proxyCtorIL.AddItemToLocalDictionary(exceptionData, MetadataViewType, viewType);
- proxyCtorIL.AddLocalToLocalDictionary(exceptionData, MetadataItemSourceType, sourceType);
- proxyCtorIL.AddLocalToLocalDictionary(exceptionData, MetadataItemValue, value);
- proxyCtorIL.Emit(OpCodes.Rethrow);
- }
- proxyCtorIL.EndExceptionBlock();
-
- // Finished implementing interface and constructor
- proxyCtorIL.Emit(OpCodes.Ret);
- proxyType = proxyTypeBuilder.CreateType();
-
- return proxyType;
- }
-
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewProvider.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewProvider.cs
deleted file mode 100644
index a6efbd5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/MetadataViewProvider.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using Microsoft.Internal;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Diagnostics.CodeAnalysis;
-
-namespace System.ComponentModel.Composition
-{
- internal static class MetadataViewProvider
- {
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- public static TMetadataView GetMetadataView<TMetadataView>(IDictionary<string, object> metadata)
- {
- Type metadataViewType = typeof(TMetadataView);
-
- // If the Metadata dictionary is cast compatible with the passed in type
- if (metadataViewType.IsAssignableFrom(typeof(IDictionary<string, object>)))
- {
- return (TMetadataView)metadata;
- }
- // otherwise is it a metadata view
- else
- {
- Type proxyType;
- if (metadataViewType.IsInterface)
- {
- try
- {
- proxyType = MetadataViewGenerator.GenerateView(metadataViewType);
- }
- catch (TypeLoadException ex)
- {
- throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings.NotSupportedInterfaceMetadataView, metadataViewType.FullName), ex);
- }
- }
- else
- {
- proxyType = metadataViewType;
- }
-
- // Now we have the type for the proxy create it
- try
- {
- return (TMetadataView)proxyType.SafeCreateInstance(metadata);
- }
- catch (MissingMethodException ex)
- {
- // Unable to create an Instance of the Metadata view '{0}' because a constructor could not be selected. Ensure that the type implements a constructor which takes an argument of type IDictionary<string, object>.
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.CompositionException_MetadataViewInvalidConstructor,
- proxyType.AssemblyQualifiedName), ex);
- }
- catch (TargetInvocationException ex)
- {
- //Unwrap known failures that we want to present as CompositionContractMismatchException
- if(metadataViewType.IsInterface)
- {
- if(ex.InnerException.GetType() == typeof(InvalidCastException))
- {
- // Unable to create an Instance of the Metadata view {0} because the exporter exported the metadata for the item {1} with the value {2} as type {3} but the view imports it as type {4}.
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.ContractMismatch_InvalidCastOnMetadataField,
- ex.InnerException.Data[MetadataViewGenerator.MetadataViewType],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemKey],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemValue],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemSourceType],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemTargetType]), ex);
- }
- else if (ex.InnerException.GetType() == typeof(NullReferenceException))
- {
- // Unable to create an Instance of the Metadata view {0} because the exporter exported the metadata for the item {1} with a null value and null is not a valid value for type {2}.
- throw new CompositionContractMismatchException(string.Format(CultureInfo.CurrentCulture,
- Strings.ContractMismatch_NullReferenceOnMetadataField,
- ex.InnerException.Data[MetadataViewGenerator.MetadataViewType],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemKey],
- ex.InnerException.Data[MetadataViewGenerator.MetadataItemTargetType]), ex);
- }
- }
- throw;
- }
- }
- }
-
- public static bool IsViewTypeValid(Type metadataViewType)
- {
- Assumes.NotNull(metadataViewType);
-
- // If the Metadata dictionary is cast compatible with the passed in type
- if (ExportServices.IsDefaultMetadataViewType(metadataViewType)
- || metadataViewType.IsInterface
- || ExportServices.IsDictionaryConstructorViewType(metadataViewType))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartCreationPolicyAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/PartCreationPolicyAttribute.cs
deleted file mode 100644
index 43d0fc9..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartCreationPolicyAttribute.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies <see cref="CreationPolicy"/> for a given <see cref="ComposablePart" />.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
- public sealed class PartCreationPolicyAttribute : Attribute
- {
- internal static PartCreationPolicyAttribute Default = new PartCreationPolicyAttribute(CreationPolicy.Any);
- internal static PartCreationPolicyAttribute Shared = new PartCreationPolicyAttribute(CreationPolicy.Shared);
-
- /// <summary>
- /// Initializes a new instance of the <see cref="PartCreationPolicyAttribute"/> class.
- /// </summary>
- public PartCreationPolicyAttribute(CreationPolicy creationPolicy)
- {
- this.CreationPolicy = creationPolicy;
- }
-
- /// <summary>
- /// Gets or sets a value indicating the creation policy of the attributed part.
- /// </summary>
- /// <value>
- /// One of the <see cref="CreationPolicy"/> values indicating the creation policy of the
- /// attributed part. The default is
- /// <see cref="System.ComponentModel.Composition.CreationPolicy.Any"/>.
- /// </value>
- public CreationPolicy CreationPolicy { get; private set; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartMetadataAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/PartMetadataAttribute.cs
deleted file mode 100644
index a75aa4e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartMetadataAttribute.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Specifies metadata for a type to be used as a <see cref="ComposablePartDefinition"/> and
- /// <see cref="ComposablePart"/>.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
- public sealed class PartMetadataAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="PartMetadataAttribute"/> with the
- /// specified name and metadata value.
- /// </summary>
- /// <param name="name">
- /// A <see cref="String"/> containing the name of the metadata value; or
- /// <see langword="null"/> to use an empty string ("").
- /// </param>
- /// <param name="value">
- /// An <see cref="object"/> containing the metadata value. This can be
- /// <see langword="null"/>.
- /// </param>
- public PartMetadataAttribute(string name, object value)
- {
- this.Name = name ?? string.Empty;
- this.Value = value;
- }
-
- /// <summary>
- /// Gets the name of the metadata value.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the name of the metadata value.
- /// </value>
- public string Name
- {
- get;
- private set;
- }
-
- /// <summary>
- /// Gets the metadata value.
- /// </summary>
- /// <value>
- /// An <see cref="object"/> containing the metadata value.
- /// </value>
- public object Value
- {
- get;
- private set;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs
deleted file mode 100644
index 02c8246..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/PartNotDiscoverableAttribute.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition
-{
- /// <summary>
- /// Place on a type that should not be discovered as a <see cref="ComposablePart" /> in
- /// a <see cref="ComposablePartCatalog" />.
- /// </summary>
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
- public sealed class PartNotDiscoverableAttribute : Attribute
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="PartNotDiscoverableAttribute"/> class.
- /// </summary>
- public PartNotDiscoverableAttribute()
- {
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePart.cs
deleted file mode 100644
index 0632fee..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePart.cs
+++ /dev/null
@@ -1,210 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for composable parts, which
- /// import and produce exported values.
- /// </summary>
- public abstract class ComposablePart
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePart"/> class.
- /// </summary>
- protected ComposablePart()
- {
- }
-
- /// <summary>
- /// Gets the export definitions that describe the exported values provided by the part.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/> objects describing
- /// the exported values provided by the <see cref="ComposablePart"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// If the <see cref="ComposablePart"/> was created from a
- /// <see cref="ComposablePartDefinition"/>, this property should return the result of
- /// <see cref="ComposablePartDefinition.ExportDefinitions"/>.
- /// </note>
- /// </para>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> does not have exports, return an empty
- /// <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public abstract IEnumerable<ExportDefinition> ExportDefinitions { get; }
-
- /// <summary>
- /// Gets the import definitions that describe the imports required by the part.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ImportDefinition"/> objects describing
- /// the imports required by the <see cref="ComposablePart"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// If the <see cref="ComposablePart"/> was created from a
- /// <see cref="ComposablePartDefinition"/>, this property should return the result of
- /// <see cref="ComposablePartDefinition.ImportDefinitions"/>.
- /// </note>
- /// </para>
- /// <para>
- /// <note type="inheritinfo">
- /// Overrides of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> does not have imports, return an empty
- /// <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public abstract IEnumerable<ImportDefinition> ImportDefinitions { get; }
-
- /// <summary>
- /// Gets the metadata of the part.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ComposablePart"/>. The default is an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// If the <see cref="ComposablePart"/> was created from a
- /// <see cref="ComposablePartDefinition"/>, this property should return the result of
- /// <see cref="ComposablePartDefinition.Metadata"/>.
- /// </note>
- /// </para>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should return a read-only
- /// <see cref="IDictionary{TKey, TValue}"/> object with a case-sensitive,
- /// non-linguistic comparer, such as <see cref="StringComparer.Ordinal"/>,
- /// and should never return <see langword="null"/>. If the
- /// <see cref="ComposablePart"/> does not contain metadata, return an
- /// empty <see cref="IDictionary{TKey, TValue}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public virtual IDictionary<string, object> Metadata
- {
- get
- {
- return MetadataServices.EmptyMetadata;
- }
- }
-
- /// <summary>
- /// Called by the composition engine when all required imports on the part have been
- /// satisfied.
- /// </summary>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <exception cref="ComposablePartException">
- /// An error occurred activating the <see cref="ComposablePart"/>.
- /// </exception>
- public virtual void Activate()
- {
- }
-
- /// <summary>
- /// Gets the exported value described by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// One of the <see cref="ExportDefinition"/> objects from the
- /// <see cref="ExportDefinitions"/> property describing the exported value
- /// to return.
- /// </param>
- /// <returns>
- /// The exported value described by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="definition"/> did not originate from the <see cref="ExportDefinitions"/>
- /// property on the <see cref="ComposablePart"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// One or more pre-requisite imports, indicated by <see cref="ImportDefinition.IsPrerequisite"/>,
- /// have not been set.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <exception cref="ComposablePartException">
- /// An error occurred getting the exported value described by the <see cref="ExportDefinition"/>.
- /// </exception>
- public abstract object GetExportedValue(ExportDefinition definition);
-
- /// <summary>
- /// Sets the import described by the specified definition with the specified exports.
- /// </summary>
- /// <param name="definition">
- /// One of the <see cref="ImportDefinition"/> objects from the
- /// <see cref="ImportDefinitions"/> property describing the import to be set.
- /// </param>
- /// <param name="exports">
- /// An <see cref="IEnumerable{T}"/> of <see cref="Export"/> objects of which
- /// to set the import described by <paramref name="definition"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="definition"/> did not originate from the <see cref="ImportDefinitions"/>
- /// property on the <see cref="ComposablePart"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> is empty and <see cref="ImportDefinition.Cardinality"/> is
- /// <see cref="ImportCardinality.ExactlyOne"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exports"/> contains more than one element and
- /// <see cref="ImportDefinition.Cardinality"/> is <see cref="ImportCardinality.ZeroOrOne"/> or
- /// <see cref="ImportCardinality.ExactlyOne"/>.
- /// </exception>
- /// <exception cref="InvalidOperationException">
- /// <see cref="Activate"/> has been previously called and
- /// <see cref="ImportDefinition.IsRecomposable"/> is <see langword="false"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePart"/> has been disposed of.
- /// </exception>
- /// <exception cref="ComposablePartException">
- /// An error occurred setting the import described by the <see cref="ImportDefinition"/>.
- /// </exception>
- public abstract void SetImport(ImportDefinition definition, IEnumerable<Export> exports);
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs
deleted file mode 100644
index 59b55b2..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalog.cs
+++ /dev/null
@@ -1,129 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for composable part catalogs, which produce
- /// and return <see cref="ComposablePartDefinition"/> objects.
- /// </summary>
- /// <remarks>
- /// This type is thread safe.
- /// </remarks>
- [DebuggerTypeProxy(typeof(ComposablePartCatalogDebuggerProxy))]
- public abstract class ComposablePartCatalog : IDisposable
- {
- private bool _isDisposed;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartCatalog"/> class.
- /// </summary>
- protected ComposablePartCatalog()
- {
- }
-
- /// <summary>
- /// Gets the part definitions of the catalog.
- /// </summary>
- /// <value>
- /// A <see cref="IQueryable{T}"/> of <see cref="ComposablePartDefinition"/> objects of the
- /// <see cref="ComposablePartCatalog"/>.
- /// </value>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// </note>
- /// </remarks>
- public abstract IQueryable<ComposablePartDefinition> Parts
- {
- get;
- }
-
- /// <summary>
- /// Returns the export definitions that match the constraint defined by the specified definition.
- /// </summary>
- /// <param name="definition">
- /// The <see cref="ImportDefinition"/> that defines the conditions of the
- /// <see cref="ExportDefinition"/> objects to return.
- /// </param>
- /// <returns>
- /// An <see cref="IEnumerable{T}"/> of <see cref="Tuple{T1, T2}"/> containing the
- /// <see cref="ExportDefinition"/> objects and their associated
- /// <see cref="ComposablePartDefinition"/> for objects that match the constraint defined
- /// by <paramref name="definition"/>.
- /// </returns>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ObjectDisposedException">
- /// The <see cref="ComposablePartCatalog"/> has been disposed of.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>, if no
- /// <see cref="ExportDefinition"/> match the conditions defined by
- /// <paramref name="definition"/>, return an empty <see cref="IEnumerable{T}"/>.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public virtual IEnumerable<Tuple<ComposablePartDefinition, ExportDefinition>> GetExports(ImportDefinition definition)
- {
- this.ThrowIfDisposed();
-
- Requires.NotNull(definition, "definition");
-
- var exports = new List<Tuple<ComposablePartDefinition, ExportDefinition>>();
- foreach (var part in this.Parts)
- {
- foreach (var export in part.ExportDefinitions)
- {
- if (definition.IsConstraintSatisfiedBy(export))
- {
- exports.Add(new Tuple<ComposablePartDefinition, ExportDefinition>(part, export));
- }
- }
- }
- return exports;
-
- }
-
- /// <summary>
- /// Releases the unmanaged resources used by the <see cref="ComposablePartCatalog"/> and
- /// optionally releases the managed resources.
- /// </summary>
- /// <param name="disposing">
- /// <see langword="true"/> to release both managed and unmanaged resources;
- /// <see langword="false"/> to release only unmanaged resources.
- /// </param>
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- this._isDisposed = true;
- }
-
- private void ThrowIfDisposed()
- {
- if (this._isDisposed)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs
deleted file mode 100644
index 15f0031..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartCatalogDebuggerProxy.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.ObjectModel;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // This proxy is needed to pretty up ComposablePartCatalog.Parts; IQueryable<T>
- // instances are not displayed in a very friendly way in the debugger.
- internal class ComposablePartCatalogDebuggerProxy
- {
- private readonly ComposablePartCatalog _catalog;
-
- public ComposablePartCatalogDebuggerProxy(ComposablePartCatalog catalog)
- {
- Requires.NotNull(catalog, "catalog");
-
- this._catalog = catalog;
- }
-
- public ReadOnlyCollection<ComposablePartDefinition> Parts
- {
- // NOTE: This shouldn't be cached, so that on every query of
- // the current value of the underlying catalog is respected.
- // We use ReadOnlyCollection as arrays do not have the
- // appropriate debugger display attributes applied to them.
- get { return this._catalog.Parts.ToReadOnlyCollection(); }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs
deleted file mode 100644
index b82f590..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartDefinition.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Defines the <see langword="abstract"/> base class for composable part definitions, which
- /// describe, and allow the creation of, <see cref="ComposablePart"/> objects.
- /// </summary>
- public abstract class ComposablePartDefinition
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartDefinition"/> class.
- /// </summary>
- protected ComposablePartDefinition()
- {
- }
-
- /// <summary>
- /// Gets the export definitions that describe the exported values provided by parts
- /// created by the definition.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ExportDefinition"/> objects describing
- /// the exported values provided by <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/>.
- /// </value>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overrides of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/> do not provide exported values, return
- /// an empty <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </remarks>
- public abstract IEnumerable<ExportDefinition> ExportDefinitions { get; }
-
- /// <summary>
- /// Gets the import definitions that describe the imports required by parts created
- /// by the definition.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of <see cref="ImportDefinition"/> objects describing
- /// the imports required by <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/>.
- /// </value>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// If the <see cref="ComposablePart"/> objects created by the
- /// <see cref="ComposablePartDefinition"/> do not have imports, return an empty
- /// <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </remarks>
- public abstract IEnumerable<ImportDefinition> ImportDefinitions { get; }
-
- /// <summary>
- /// Gets the metadata of the definition.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ComposablePartDefinition"/>. The default is an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </value>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should return a read-only
- /// <see cref="IDictionary{TKey, TValue}"/> object with a case-sensitive,
- /// non-linguistic comparer, such as <see cref="StringComparer.Ordinal"/>,
- /// and should never return <see langword="null"/>. If the
- /// <see cref="ComposablePartDefinition"/> does contain metadata,
- /// return an empty <see cref="IDictionary{TKey, TValue}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public virtual IDictionary<string, object> Metadata
- {
- get { return MetadataServices.EmptyMetadata; }
- }
-
- /// <summary>
- /// Creates a new instance of a part that the definition describes.
- /// </summary>
- /// <returns>
- /// The created <see cref="ComposablePart"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// Derived types overriding this method should return a new instance of a
- /// <see cref="ComposablePart"/> on every invoke and should never return
- /// <see langword="null"/>.
- /// </note>
- /// </para>
- /// </remarks>
- public abstract ComposablePart CreatePart();
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartException.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartException.cs
deleted file mode 100644
index 72b1a33..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ComposablePartException.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-using Microsoft.Internal;
-
-#if !SILVERLIGHT
-using Microsoft.Internal.Runtime.Serialization;
-#endif
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// The exception that is thrown when an error occurs when calling methods on a
- /// <see cref="ComposablePart"/>.
- /// </summary>
- [Serializable]
- public class ComposablePartException : Exception, ICompositionError
- {
- private readonly CompositionErrorId _id;
- private readonly ICompositionElement _element;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class.
- /// </summary>
- public ComposablePartException()
- : this(CompositionErrorId.Unknown, (string)null, (ICompositionElement)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="ComposablePartException.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- public ComposablePartException(string message)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message and composition element that is the cause of
- /// the exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- public ComposablePartException(string message, ICompositionElement element)
- : this(CompositionErrorId.Unknown, message, element, (Exception)null)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message and exception that is the cause of the
- /// exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public ComposablePartException(string message, Exception innerException)
- : this(CompositionErrorId.Unknown, message, (ICompositionElement)null, innerException)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified error message, and composition element and exception that
- /// are the cause of the exception.
- /// </summary>
- /// <param name="message">
- /// A <see cref="String"/> containing a message that describes the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.Message"/> property to its default value.
- /// </param>
- /// <param name="element">
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="ComposablePartException.Element"/> property to
- /// <see langword="null"/>.
- /// </param>
- /// <param name="innerException">
- /// The <see cref="Exception"/> that is the underlying cause of the
- /// <see cref="ComposablePartException"/>; or <see langword="null"/> to set
- /// the <see cref="Exception.InnerException"/> property to <see langword="null"/>.
- /// </param>
- public ComposablePartException(string message, ICompositionElement element, Exception innerException)
- : this(CompositionErrorId.Unknown, message, element, innerException)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message)
- : this(id, message, (ICompositionElement)null, (Exception)null)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message, Exception exception)
- : this(id, message, (ICompositionElement)null, exception)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message, ICompositionElement element)
- : this(id, message, (ICompositionElement)element, (Exception)null)
- {
- }
-
- internal ComposablePartException(CompositionErrorId id, string message, ICompositionElement element, Exception innerException)
- : base(message, innerException)
- {
- _id = id;
- _element = element;
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ComposablePartException"/> class
- /// with the specified serialization data.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="ComposablePartException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="SerializationException">
- /// <paramref name="info"/> is missing a required value.
- /// </exception>
- /// <exception cref="InvalidCastException">
- /// <paramref name="info"/> contains a value that cannot be cast to the correct type.
- /// </exception>
- [System.Security.SecuritySafeCritical]
- protected ComposablePartException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- _id = info.GetValue<CompositionErrorId>("Id");
- _element = info.GetValue<ICompositionElement>("Element");
- }
-
-#endif
-
- /// <summary>
- /// Gets the composition element that is the cause of the exception.
- /// </summary>
- /// <value>
- /// The <see cref="ICompositionElement"/> that is the cause of the
- /// <see cref="ComposablePartException"/>. The default is <see langword="null"/>.
- /// </value>
- public ICompositionElement Element
- {
- get { return _element; }
- }
-
- CompositionErrorId ICompositionError.Id
- {
- get { return _id; }
- }
-
-#if !SILVERLIGHT
-
- /// <summary>
- /// Gets the serialization data of the exception.
- /// </summary>
- /// <param name="info">
- /// The <see cref="SerializationInfo"/> that holds the serialized object data about the
- /// <see cref="ComposablePartException"/>.
- /// </param>
- /// <param name="context">
- /// The <see cref="StreamingContext"/> that contains contextual information about the
- /// source or destination.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="info"/> is <see langword="null"/>.
- /// </exception>
- [System.Security.SecurityCritical]
- public override void GetObjectData(SerializationInfo info, StreamingContext context)
- {
- base.GetObjectData(info, context);
-
- info.AddValue("Id", _id);
- info.AddValue("Element", _element.ToSerializableElement());
- }
-
-#endif
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElement.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElement.cs
deleted file mode 100644
index 23f7677..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElement.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // Represents the ICompositionElement placeholder for an
- // object that does not implement ICompositionElement
- [DebuggerTypeProxy(typeof(CompositionElementDebuggerProxy))]
- [Serializable]
- internal class CompositionElement : SerializableCompositionElement
- {
- private static readonly ICompositionElement UnknownOrigin = new SerializableCompositionElement(Strings.CompositionElement_UnknownOrigin, (ICompositionElement)null);
- private readonly object _underlyingObject;
-
- public CompositionElement(object underlyingObject)
- : base(underlyingObject.ToString(), UnknownOrigin)
- {
- this._underlyingObject = underlyingObject;
- }
-
- public object UnderlyingObject
- {
- get { return _underlyingObject; }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs
deleted file mode 100644
index 00442c5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementDebuggerProxy.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // Because the debugger displays only the members available on ICompositionElement
- // when viewing CompositionError.Element in the watch and data tips windows, we
- // need this proxy so that the underlying object wrapped by the CompositionElement
- // placeholder is displayed by default.
- internal class CompositionElementDebuggerProxy
- {
- private readonly CompositionElement _element;
-
- public CompositionElementDebuggerProxy(CompositionElement element)
- {
- Requires.NotNull(element, "element");
-
- this._element = element;
- }
-
- public string DisplayName
- {
- get { return this._element.DisplayName; }
- }
-
- public ICompositionElement Origin
- {
- get { return this._element.Origin; }
- }
-
- public object UnderlyingObject
- {
- get { return this._element.UnderlyingObject; }
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs
deleted file mode 100644
index 0f34d72..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/CompositionElementExtensions.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- internal static class CompositionElementExtensions
- {
-#if !SILVERLIGHT
- public static ICompositionElement ToSerializableElement(this ICompositionElement element)
- {
- return SerializableCompositionElement.FromICompositionElement(element);
- }
-#endif
- public static ICompositionElement ToElement(this Export export)
- {
- // First try the export
- ICompositionElement element = export as ICompositionElement;
- if (element != null)
- {
- return element;
- }
-
- // Otherwise, try the definition
- return ToElement(export.Definition);
- }
-
- public static ICompositionElement ToElement(this ExportDefinition definition)
- {
- return ToElementCore(definition);
- }
-
- public static ICompositionElement ToElement(this ImportDefinition definition)
- {
- return ToElementCore(definition);
- }
-
- public static ICompositionElement ToElement(this ComposablePart part)
- {
- return ToElementCore(part);
- }
-
- public static ICompositionElement ToElement(this ComposablePartDefinition definition)
- {
- return ToElementCore(definition);
- }
-
- public static string GetDisplayName(this ComposablePartDefinition definition)
- {
- return GetDisplayNameCore(definition);
- }
-
- public static string GetDisplayName(this ComposablePartCatalog catalog)
- {
- return GetDisplayNameCore(catalog);
- }
-
- private static string GetDisplayNameCore(object value)
- {
- ICompositionElement element = value as ICompositionElement;
- if (element != null)
- {
- return element.DisplayName;
- }
-
- return value.ToString();
- }
-
- private static ICompositionElement ToElementCore(object value)
- {
- ICompositionElement element = value as ICompositionElement;
- if (element != null)
- {
- return element;
- }
-
- return new CompositionElement(value);
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs
deleted file mode 100644
index 148f46b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ContractBasedImportDefinition.cs
+++ /dev/null
@@ -1,309 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-using System.Globalization;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents a contract name and metadata-based import
- /// required by a <see cref="ComposablePart"/> object.
- /// </summary>
- public class ContractBasedImportDefinition : ImportDefinition
- {
- // Unlike contract name, required metadata has a sensible default; set it to an empty
- // enumerable, so that derived definitions only need to override ContractName by default.
- private readonly IEnumerable<KeyValuePair<string, Type>> _requiredMetadata = Enumerable.Empty<KeyValuePair<string, Type>>();
- private Expression<Func<ExportDefinition, bool>> _constraint;
- private readonly CreationPolicy _requiredCreationPolicy = CreationPolicy.Any;
- private readonly string _requiredTypeIdentity = null;
- private bool _isRequiredMetadataValidated = false;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ContractBasedImportDefinition"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor can optionally override the
- /// <see cref="ImportDefinition.ContractName"/>, <see cref="RequiredTypeIdentity"/>,
- /// <see cref="RequiredMetadata"/>, <see cref="ImportDefinition.Cardinality"/>,
- /// <see cref="ImportDefinition.IsPrerequisite"/>, <see cref="ImportDefinition.IsRecomposable"/>
- /// and <see cref="RequiredCreationPolicy"/> properties.
- /// </note>
- /// </remarks>
- protected ContractBasedImportDefinition()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ContractBasedImportDefinition"/> class
- /// with the specified contract name, required metadataq, cardinality, value indicating
- /// if the import definition is recomposable and a value indicating if the import definition
- /// is a prerequisite.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/> required by the <see cref="ContractBasedImportDefinition"/>.
- /// </param>
- /// <param name="requiredTypeIdentity">
- /// The type identity of the export type expected. Use <see cref="AttributedModelServices.GetTypeIdentity(Type)"/>
- /// to generate a type identity for a given type. If no specific type is required pass <see langword="null"/>.
- /// </param>
- /// <param name="requiredMetadata">
- /// An <see cref="IEnumerable{T}"/> of <see cref="String"/> objects containing
- /// the metadata names of the <see cref="Export"/> required by the
- /// <see cref="ContractBasedImportDefinition"/>; or <see langword="null"/> to
- /// set the <see cref="RequiredMetadata"/> property to an empty <see cref="IEnumerable{T}"/>.
- /// </param>
- /// <param name="cardinality">
- /// One of the <see cref="ImportCardinality"/> values indicating the
- /// cardinality of the <see cref="Export"/> objects required by the
- /// <see cref="ContractBasedImportDefinition"/>.
- /// </param>
- /// <param name="isRecomposable">
- /// <see langword="true"/> if the <see cref="ContractBasedImportDefinition"/> can be satisfied
- /// multiple times throughout the lifetime of a <see cref="ComposablePart"/>, otherwise,
- /// <see langword="false"/>.
- /// </param>
- /// <param name="isPrerequisite">
- /// <see langword="true"/> if the <see cref="ContractBasedImportDefinition"/> is required to be
- /// satisfied before a <see cref="ComposablePart"/> can start producing exported
- /// objects; otherwise, <see langword="false"/>.
- /// </param>
- /// <param name="requiredCreationPolicy">
- /// A value indicating that the importer requires a specific <see cref="CreationPolicy"/> for
- /// the exports used to satisfy this import. If no specific <see cref="CreationPolicy"/> is needed
- /// pass the default <see cref="CreationPolicy.Any"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="requiredMetadata"/> contains an element that is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="cardinality"/> is not one of the <see cref="ImportCardinality"/>
- /// values.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public ContractBasedImportDefinition(string contractName, string requiredTypeIdentity, IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality, bool isRecomposable, bool isPrerequisite, CreationPolicy requiredCreationPolicy)
- : base(contractName, cardinality, isRecomposable, isPrerequisite)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
-
- this._requiredTypeIdentity = requiredTypeIdentity;
-
- if (requiredMetadata != null)
- {
- this._requiredMetadata = requiredMetadata;
- }
-
- this._requiredCreationPolicy = requiredCreationPolicy;
- }
-
- /// <summary>
- /// The type identity of the export type expected.
- /// </summary>
- /// <value>
- /// A <see cref="string"/> that is generated by <see cref="AttributedModelServices.GetTypeIdentity(Type)"/>
- /// on the type that this import expects. If the value is <see langword="null"/> then this import
- /// doesn't expect a particular type.
- /// </value>
- public virtual string RequiredTypeIdentity
- {
- get { return this._requiredTypeIdentity; }
- }
-
- /// <summary>
- /// Gets the metadata names of the export required by the import definition.
- /// </summary>
- /// <value>
- /// An <see cref="IEnumerable{T}"/> of pairs of metadata keys and types of the <see cref="Export"/> required by the
- /// <see cref="ContractBasedImportDefinition"/>. The default is an empty
- /// <see cref="IEnumerable{T}"/>.
- /// </value>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>
- /// or return an <see cref="IEnumerable{T}"/> that contains an element that is
- /// <see langword="null"/>. If the definition does not contain required metadata,
- /// return an empty <see cref="IEnumerable{T}"/> instead.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public virtual IEnumerable<KeyValuePair<string, Type>> RequiredMetadata
- {
- get
- {
- // NOTE : unlike other arguments, we validate this one as late as possible, because its validation may lead to type loading
- this.ValidateRequiredMetadata();
-
- return this._requiredMetadata;
- }
- }
-
- private void ValidateRequiredMetadata()
- {
- if (!this._isRequiredMetadataValidated)
- {
- foreach (KeyValuePair<string, Type> metadataItem in this._requiredMetadata)
- {
- if ((metadataItem.Key == null) || (metadataItem.Value == null))
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.Argument_NullElement, "requiredMetadata"));
- }
- }
- this._isRequiredMetadataValidated = true;
- }
- }
-
- /// <summary>
- /// Gets or sets a value indicating that the importer requires a specific
- /// <see cref="CreationPolicy"/> for the exports used to satisfy this import. T
- /// </summary>
- /// <value>
- /// <see cref="CreationPolicy.Any"/> - default value, used if the importer doesn't
- /// require a specific <see cref="CreationPolicy"/>.
- ///
- /// <see cref="CreationPolicy.Shared"/> - Requires that all exports used should be shared
- /// by everyone in the container.
- ///
- /// <see cref="CreationPolicy.NonShared"/> - Requires that all exports used should be
- /// non-shared in a container and thus everyone gets their own instance.
- /// </value>
- public virtual CreationPolicy RequiredCreationPolicy
- {
- get { return this._requiredCreationPolicy; }
- }
-
- /// <summary>
- /// Gets an expression that defines conditions that must be matched for the import
- /// described by the import definition to be satisfied.
- /// </summary>
- /// <returns>
- /// A <see cref="Expression{TDelegate}"/> containing a <see cref="Func{T, TResult}"/>
- /// that defines the conditions that must be matched for the
- /// <see cref="ImportDefinition"/> to be satisfied by an <see cref="Export"/>.
- /// </returns>
- /// <remarks>
- /// <para>
- /// This property returns an expression that defines conditions based on the
- /// <see cref="ImportDefinition.ContractName"/>, <see cref="RequiredTypeIdentity"/>,
- /// <see cref="RequiredMetadata"/>, and <see cref="RequiredCreationPolicy"/>
- /// properties.
- /// </para>
- /// </remarks>
- public override Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- if (this._constraint == null)
- {
- this._constraint = ConstraintServices.CreateConstraint(this.ContractName, this.RequiredTypeIdentity, this.RequiredMetadata, this.RequiredCreationPolicy);
- }
-
- return this._constraint;
- }
- }
-
- /// <summary>
- /// Executes an optimized version of the contraint given by the <see cref="Constraint"/> property
- /// </summary>
- /// <param name="exportDefinition">
- /// A definition for a <see cref="Export"/> used to determine if it satisfies the
- /// requirements for this <see cref="ImportDefinition"/>.
- /// </param>
- /// <returns>
- /// <see langword="True"/> if the <see cref="Export"/> satisfies the requirements for
- /// this <see cref="ImportDefinition"/>, otherwise returns <see langword="False"/>.
- /// </returns>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overrides of this method can provide a more optimized execution of the
- /// <see cref="Constraint"/> property but the result should remain consistent.
- /// </note>
- /// </remarks>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exportDefinition"/> is <see langword="null"/>.
- /// </exception>
- public override bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- Requires.NotNull(exportDefinition, "exportDefinition");
-
- if (!StringComparers.ContractName.Equals(this.ContractName, exportDefinition.ContractName))
- {
- return false;
- }
-
- return MatchRequiredMatadata(exportDefinition);
- }
-
- private bool MatchRequiredMatadata(ExportDefinition definition)
- {
- if (!string.IsNullOrEmpty(this.RequiredTypeIdentity))
- {
- string exportTypeIdentity = definition.Metadata.GetValue<string>(CompositionConstants.ExportTypeIdentityMetadataName);
-
- if (!StringComparers.ContractName.Equals(this.RequiredTypeIdentity, exportTypeIdentity))
- {
- return false;
- }
- }
-
- foreach (KeyValuePair<string, Type> metadataItem in this.RequiredMetadata)
- {
- string metadataKey = metadataItem.Key;
- Type metadataValueType = metadataItem.Value;
-
- object metadataValue = null;
- if (!definition.Metadata.TryGetValue(metadataKey, out metadataValue))
- {
- return false;
- }
-
- if (metadataValue != null)
- {
- // the metadata value is not null, we can rely on IsInstanceOfType to do the right thing
- if (!metadataValueType.IsInstanceOfType(metadataValue))
- {
- return false;
- }
- }
- else
- {
- // this is an unfortunate special case - typeof(object).IsInstanceofType(null) == false
- // basically nulls are not considered valid values for anything
- // We want them to match anything that is a reference type
- if (metadataValueType.IsValueType)
- {
- // this is a pretty expensive check, but we only invoke it when metadata values are null, which is very rare
- return false;
- }
- }
- }
-
- if (this.RequiredCreationPolicy == CreationPolicy.Any)
- {
- return true;
- }
-
- CreationPolicy exportPolicy = definition.Metadata.GetValue<CreationPolicy>(CompositionConstants.PartCreationPolicyMetadataName);
- return exportPolicy == CreationPolicy.Any ||
- exportPolicy == this.RequiredCreationPolicy;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/Export.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/Export.cs
deleted file mode 100644
index e347551..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/Export.cs
+++ /dev/null
@@ -1,245 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents an export. That is, a type that is made up of a delay-created exported value
- /// and metadata that describes that object.
- /// </summary>
- public class Export
- {
- private readonly ExportDefinition _definition;
- private readonly Func<object> _exportedValueGetter;
- private static readonly object _EmptyValue = new object();
- private volatile object _exportedValue = Export._EmptyValue;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor must override <see cref="Definition"/>
- /// and <see cref="GetExportedValueCore"/>.
- /// </note>
- /// </remarks>
- protected Export()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class
- /// with the specified contract name and exported value getter.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/>.
- /// </param>
- /// <param name="exportedValueGetter">
- /// A <see cref="Func{T}"/> that is called to create the exported value of the
- /// <see cref="Export"/>. This allows the creation of the object to be delayed
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exportedValueGetter"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// </exception>
- public Export(string contractName, Func<object> exportedValueGetter)
- : this(new ExportDefinition(contractName, (IDictionary<string, object>)null), exportedValueGetter)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class
- /// with the specified contract name, metadata and exported value getter.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="Export"/>.
- /// </param>
- /// <param name="metadata">
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="Export"/>; or <see langword="null"/> to set the
- /// <see cref="Metadata"/> property to an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </param>
- /// <param name="exportedValueGetter">
- /// A <see cref="Func{T}"/> that is called to create the exported value of the
- /// <see cref="Export"/>. This allows the creation of the object to be delayed.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exportedValueGetter"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// </exception>
- public Export(string contractName, IDictionary<string, object> metadata, Func<object> exportedValueGetter)
- : this(new ExportDefinition(contractName, metadata), exportedValueGetter)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Export"/> class
- /// with the specified export definition and exported value getter.
- /// </summary>
- /// <param name="definition">
- /// An <see cref="ExportDefinition"/> that describes the contract that the
- /// <see cref="Export"/> satisfies.
- /// </param>
- /// <param name="exportedValueGetter">
- /// A <see cref="Func{T}"/> that is called to create the exported value of the
- /// <see cref="Export"/>. This allows the creation of the object to be delayed.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="definition"/> is <see langword="null"/>.
- /// <para>
- /// -or-
- /// </para>
- /// <paramref name="exportedValueGetter"/> is <see langword="null"/>.
- /// </exception>
- public Export(ExportDefinition definition, Func<object> exportedValueGetter)
- {
- Requires.NotNull(definition, "definition");
- Requires.NotNull(exportedValueGetter, "exportedValueGetter");
-
- this._definition = definition;
- this._exportedValueGetter = exportedValueGetter;
- }
-
- /// <summary>
- /// Gets the definition that describes the contract that the export satisfies.
- /// </summary>
- /// <value>
- /// An <see cref="ExportDefinition"/> that describes the contract that
- /// the <see cref="Export"/> satisfies.
- /// </value>
- /// <exception cref="NotImplementedException">
- /// This property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return
- /// <see langword="null"/>.
- /// </note>
- /// </remarks>
- public virtual ExportDefinition Definition
- {
- get
- {
- if (_definition != null)
- {
- return _definition;
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("Definition");
- }
- }
-
- /// <summary>
- /// Gets the metadata of the export.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="Export"/>.
- /// </value>
- /// <exception cref="NotImplementedException">
- /// The <see cref="Definition"/> property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <para>
- /// This property returns the value of <see cref="ExportDefinition.Metadata"/>
- /// of the <see cref="Definition"/> property.
- /// </para>
- /// </remarks>
- public IDictionary<string, object> Metadata
- {
- get { return Definition.Metadata; }
- }
-
- /// <summary>
- /// Returns the exported value of the export.
- /// </summary>
- /// <returns>
- /// The exported <see cref="Object"/> of the <see cref="Export"/>.
- /// </returns>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="CompositionContractMismatchException">
- /// The current instance is an instance of <see cref="Lazy{T}"/> and the underlying
- /// exported value cannot be cast to <c>T</c>.
- /// </exception>
- /// <exception cref="NotImplementedException">
- /// The <see cref="GetExportedValueCore"/> method was not overridden by a derived class.
- /// </exception>
- public object Value
- {
- get
- {
- // NOTE : the logic below guarantees that the value will be set exactly once. It DOES NOT, however, guarantee that GetExportedValueCore() will be executed
- // more than once, as locking would be required for that. The said locking is problematic, as we can't reliable call 3rd party code under a lock.
- if (this._exportedValue == Export._EmptyValue)
- {
- object exportedValue = this.GetExportedValueCore();
-
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- Interlocked.CompareExchange(ref this._exportedValue, exportedValue, Export._EmptyValue);
-#pragma warning restore 420
- }
-
- return this._exportedValue;
- }
- }
-
- /// <summary>
- /// Returns the exported value of the export.
- /// </summary>
- /// <returns>
- /// The exported <see cref="Object"/> of the <see cref="Export"/>.
- /// </returns>
- /// <exception cref="CompositionException">
- /// An error occurred during composition. <see cref="CompositionException.Errors"/> will
- /// contain a collection of errors that occurred.
- /// </exception>
- /// <exception cref="CompositionContractMismatchException">
- /// The current instance is an instance of <see cref="Lazy{T}"/> and the underlying
- /// exported value cannot be cast to <c>T</c>.
- /// </exception>
- /// <exception cref="NotImplementedException">
- /// The method was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this method should never return
- /// <see langword="null"/>.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
- protected virtual object GetExportedValueCore()
- {
- if (this._exportedValueGetter != null)
- {
- return this._exportedValueGetter.Invoke();
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("GetExportedValueCore");
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportDefinition.cs
deleted file mode 100644
index fb3db62..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportDefinition.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Describes the contract that an <see cref="Export"/> object satisfies.
- /// </summary>
- public class ExportDefinition
- {
- // Unlike contract name, metadata has a sensible default; set it to an empty bag,
- // so that derived definitions only need to override ContractName by default.
- private readonly IDictionary<string, object> _metadata = MetadataServices.EmptyMetadata;
- private readonly string _contractName;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportDefinition"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor must override <see cref="ContractName"/>
- /// and optionally, <see cref="Metadata"/>. By default, <see cref="Metadata"/>
- /// returns an empty, read-only dictionary.
- /// </note>
- /// </remarks>
- protected ExportDefinition()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ExportDefinition"/> class with
- /// the specified contract name and metadata.
- /// </summary>
- /// <param name="contractName">
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="ExportDefinition"/>.
- /// </param>
- /// <param name="metadata">
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ExportDefinition"/>; or <see langword="null"/> to set the
- /// <see cref="Metadata"/> property to an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="contractName"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="contractName"/> is an empty string ("").
- /// </exception>
- public ExportDefinition(string contractName, IDictionary<string, object> metadata)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
-
- _contractName = contractName;
-
- if (metadata != null)
- {
- _metadata = metadata.AsReadOnly();
- }
- }
-
- /// <summary>
- /// Gets the contract name of the export definition.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the
- /// <see cref="ExportDefinition"/>.
- /// </value>
- /// <exception cref="NotImplementedException">
- /// The property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>
- /// or an empty string ("").
- /// </note>
- /// </remarks>
- public virtual string ContractName
- {
- get
- {
- if (_contractName != null)
- {
- return _contractName;
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("ContractName");
- }
- }
-
- /// <summary>
- /// Gets the metadata of the export definition.
- /// </summary>
- /// <value>
- /// An <see cref="IDictionary{TKey, TValue}"/> containing the metadata of the
- /// <see cref="ExportDefinition"/>. The default is an empty, read-only
- /// <see cref="IDictionary{TKey, TValue}"/>.
- /// </value>
- /// <remarks>
- /// <para>
- /// <note type="inheritinfo">
- /// Overriders of this property should return a read-only
- /// <see cref="IDictionary{TKey, TValue}"/> object with a case-sensitive,
- /// non-linguistic comparer, such as <see cref="StringComparer.Ordinal"/>,
- /// and should never return <see langword="null"/>.
- /// If the <see cref="ExportDefinition"/> does not contain metadata
- /// return an empty <see cref="IDictionary{TKey, TValue}"/> instead.
- /// </note>
- /// </para>
- /// </remarks>
- public virtual IDictionary<string, object> Metadata
- {
- get { return _metadata; }
- }
-
- /// <summary>
- /// Returns a string representation of the export definition.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the value of the <see cref="ContractName"/> property.
- /// </returns>
- public override string ToString()
- {
- return this.ContractName;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs
deleted file mode 100644
index 438b0dd..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs
+++ /dev/null
@@ -1,97 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- [SuppressMessage("Microsoft.Naming", "CA1711:IdentifiersShouldNotHaveIncorrectSuffix")]
- public class ExportedDelegate
- {
- private object _instance;
- private MethodInfo _method;
-
- protected ExportedDelegate() { }
-#if !SILVERLIGHT
- [System.Security.SecurityCritical]
-#endif
- public ExportedDelegate(object instance, MethodInfo method)
- {
- Requires.NotNull(method, "method");
-
- this._instance = instance;
- this._method = method;
- }
-
- public virtual Delegate CreateDelegate(Type delegateType)
- {
- Requires.NotNull(delegateType, "delegateType");
-
- if (delegateType == typeof(Delegate) || delegateType == typeof(MulticastDelegate))
- {
- Type funcOrAction = ConvertMethodInfoToFuncOrActionType(this._method);
-
- if (funcOrAction != null)
- {
- delegateType = funcOrAction;
- }
- else
- {
- return null;
- }
- }
-
- return Delegate.CreateDelegate(delegateType, this._instance, this._method, false);
- }
-
- private static Type[] _funcTypes =
- {
- typeof(Func<>), typeof(Func<,>), typeof(Func<,,>), typeof(Func<,,,>), typeof(Func<,,,,>)
-#if CLR40 && !SILVERLIGHT
- , typeof(Func<,,,,,>), typeof(Func<,,,,,,>), typeof(Func<,,,,,,,>), typeof(Func<,,,,,,,,>)
-#endif
- };
-
- private static Type[] _actionTypes =
- {
- typeof(Action), typeof(Action<>), typeof(Action<,>), typeof(Action<,,>), typeof(Action<,,,>)
-#if CLR40 && !SILVERLIGHT
- , typeof(Action<,,,,>), typeof(Action<,,,,,>), typeof(Action<,,,,,,>), typeof(Action<,,,,,,,>)
-#endif
- };
-
- private static Type ConvertMethodInfoToFuncOrActionType(MethodInfo method)
- {
- ParameterInfo[] parameters = method.GetParameters();
-
- bool isVoid = method.ReturnType == typeof(void);
- Type[] typeArray = isVoid ? _actionTypes : _funcTypes;
-
- if (parameters.Length >= typeArray.Length)
- {
- return null;
- }
-
- Type[] genericArgTypes = new Type[parameters.Length + (isVoid ? 0 : 1)];
-
- for (int i = 0; i < parameters.Length; i++)
- {
- genericArgTypes[i] = parameters[i].ParameterType;
- }
-
- if (!isVoid)
- {
- genericArgTypes[parameters.Length] = method.ReturnType;
- }
-
- Type delegateType = typeArray[parameters.Length].IsGenericType ?
- typeArray[parameters.Length].MakeGenericType(genericArgTypes) :
- typeArray[parameters.Length];
-
- return delegateType;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ICompositionElement.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ICompositionElement.cs
deleted file mode 100644
index 32ff5f7..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ICompositionElement.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents an element that participates in composition.
- /// </summary>
- public interface ICompositionElement
- {
- /// <summary>
- /// Gets the display name of the composition element.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing a human-readable display name of the <see cref="ICompositionElement"/>.
- /// </value>
- /// <remarks>
- /// <note type="implementnotes">
- /// Implementors of this property should never return <see langword="null"/> or an empty
- /// string ("").
- /// </note>
- /// </remarks>
- string DisplayName
- {
- get;
- }
-
- /// <summary>
- /// Gets the composition element from which the current composition element
- /// originated.
- /// </summary>
- /// <value>
- /// A <see cref="ICompositionElement"/> from which the current
- /// <see cref="ICompositionElement"/> originated, or <see langword="null"/>
- /// if the <see cref="ICompositionElement"/> is the root composition element.
- /// </value>
- ICompositionElement Origin
- {
- get;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs
deleted file mode 100644
index 27ac034..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/IPartCreatorImportDefinition.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- internal interface IPartCreatorImportDefinition
- {
- ContractBasedImportDefinition ProductImportDefinition { get; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportCardinality.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportCardinality.cs
deleted file mode 100644
index 5ce945f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportCardinality.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Indicates the cardinality of the <see cref="Export"/> objects required by an <see cref="ImportDefinition"/>.
- /// </summary>
- public enum ImportCardinality
- {
- /// <summary>
- /// Zero or one <see cref="Export"/> objects are required by an <see cref="ImportDefinition"/>.
- /// </summary>
- ZeroOrOne = 0,
-
- /// <summary>
- /// Exactly one <see cref="Export"/> object is required by an <see cref="ImportDefinition"/>.
- /// </summary>
- ExactlyOne = 1,
-
- /// <summary>
- /// Zero or more <see cref="Export"/> objects are required by an <see cref="ImportDefinition"/>.
- /// </summary>
- ZeroOrMore = 2,
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportDefinition.cs
deleted file mode 100644
index cff9886..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/ImportDefinition.cs
+++ /dev/null
@@ -1,236 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- /// <summary>
- /// Represents an import required by a <see cref="ComposablePart"/> object.
- /// </summary>
- public class ImportDefinition
- {
- internal static readonly string EmptyContractName = string.Empty;
- private readonly Expression<Func<ExportDefinition, bool>> _constraint;
- private readonly ImportCardinality _cardinality = ImportCardinality.ExactlyOne;
- private readonly string _contractName = EmptyContractName;
- private readonly bool _isRecomposable;
- private readonly bool _isPrerequisite = true;
- private Func<ExportDefinition, bool> _compiledConstraint;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportDefinition"/> class.
- /// </summary>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Derived types calling this constructor must override the <see cref="Constraint"/>
- /// property, and optionally, the <see cref="Cardinality"/>, <see cref="IsPrerequisite"/>
- /// and <see cref="IsRecomposable"/>
- /// properties.
- /// </note>
- /// </remarks>
- protected ImportDefinition()
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ImportDefinition"/> class
- /// with the specified constraint, cardinality, value indicating if the import
- /// definition is recomposable and a value indicating if the import definition
- /// is a prerequisite.
- /// </summary>
- /// <param name="constraint">
- /// A <see cref="Expression{TDelegate}"/> containing a <see cref="Func{T, TResult}"/>
- /// that defines the conditions that must be matched for the <see cref="ImportDefinition"/>
- /// to be satisfied by an <see cref="Export"/>.
- /// </param>
- /// <param name="contractName">
- /// The contract name of the export that this import is interested in. The contract name
- /// property is used as guidance and not automatically enforced in the constraint. If
- /// the contract name is a required in the constraint then it should be added to the constraint
- /// by the caller of this constructor.
- /// </param>
- /// <param name="cardinality">
- /// One of the <see cref="ImportCardinality"/> values indicating the
- /// cardinality of the <see cref="Export"/> objects required by the
- /// <see cref="ImportDefinition"/>.
- /// </param>
- /// <param name="isRecomposable">
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> can be satisfied
- /// multiple times throughout the lifetime of a <see cref="ComposablePart"/>, otherwise,
- /// <see langword="false"/>.
- /// </param>
- /// <param name="isPrerequisite">
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> is required to be
- /// satisfied before a <see cref="ComposablePart"/> can start producing exported
- /// objects; otherwise, <see langword="false"/>.
- /// </param>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="constraint"/> is <see langword="null"/>.
- /// </exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="cardinality"/> is not one of the <see cref="ImportCardinality"/>
- /// values.
- /// </exception>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public ImportDefinition(Expression<Func<ExportDefinition, bool>> constraint, string contractName, ImportCardinality cardinality, bool isRecomposable, bool isPrerequisite)
- : this(contractName, cardinality, isRecomposable, isPrerequisite)
- {
- Requires.NotNull(constraint, "constraint");
-
- this._constraint = constraint;
- }
-
- internal ImportDefinition(string contractName, ImportCardinality cardinality, bool isRecomposable, bool isPrerequisite)
- {
- if (
- (cardinality != ImportCardinality.ExactlyOne) &&
- (cardinality != ImportCardinality.ZeroOrMore) &&
- (cardinality != ImportCardinality.ZeroOrOne)
- )
- {
- throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Strings.ArgumentOutOfRange_InvalidEnum, "cardinality", cardinality, typeof(ImportCardinality).Name), "cardinality");
- }
-
- this._contractName = contractName ?? EmptyContractName;
- this._cardinality = cardinality;
- this._isRecomposable = isRecomposable;
- this._isPrerequisite = isPrerequisite;
- }
-
- /// <summary>
- /// Gets the contract name of the export required by the import definition.
- /// </summary>
- /// <value>
- /// A <see cref="String"/> containing the contract name of the <see cref="Export"/>
- /// required by the <see cref="ContractBasedImportDefinition"/>. This property should
- /// return <see cref="String.Empty"/> for imports that do not require a specific
- /// contract name.
- /// </value>
- public virtual string ContractName
- {
- get { return this._contractName; }
- }
-
- /// <summary>
- /// Gets the cardinality of the exports required by the import definition.
- /// </summary>
- /// <value>
- /// One of the <see cref="ImportCardinality"/> values indicating the
- /// cardinality of the <see cref="Export"/> objects required by the
- /// <see cref="ImportDefinition"/>. The default is
- /// <see cref="ImportCardinality.ExactlyOne"/>
- /// </value>
- public virtual ImportCardinality Cardinality
- {
- get { return this._cardinality; }
- }
-
- /// <summary>
- /// Gets an expression that defines conditions that must be matched for the import
- /// described by the import definition to be satisfied.
- /// </summary>
- /// <returns>
- /// A <see cref="Expression{TDelegate}"/> containing a <see cref="Func{T, TResult}"/>
- /// that defines the conditions that must be matched for the
- /// <see cref="ImportDefinition"/> to be satisfied by an <see cref="Export"/>.
- /// </returns>
- /// <exception cref="NotImplementedException">
- /// The property was not overridden by a derived class.
- /// </exception>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overriders of this property should never return <see langword="null"/>.
- /// </note>
- /// </remarks>
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public virtual Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- if (this._constraint != null)
- {
- return this._constraint;
- }
-
- throw ExceptionBuilder.CreateNotOverriddenByDerived("Constraint");
- }
- }
-
- /// <summary>
- /// Gets a value indicating whether the import definition is required to be
- /// satisfied before a part can start producing exported values.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> is required to be
- /// satisfied before a <see cref="ComposablePart"/> can start producing exported
- /// objects; otherwise, <see langword="false"/>. The default is <see langword="true"/>.
- /// </value>
- public virtual bool IsPrerequisite
- {
- get { return this._isPrerequisite; }
- }
-
- /// <summary>
- /// Gets a value indicating whether the import definition can be satisfied multiple times.
- /// </summary>
- /// <value>
- /// <see langword="true"/> if the <see cref="ImportDefinition"/> can be satisfied
- /// multiple times throughout the lifetime of a <see cref="ComposablePart"/>, otherwise,
- /// <see langword="false"/>. The default is <see langword="false"/>.
- /// </value>
- public virtual bool IsRecomposable
- {
- get { return this._isRecomposable; }
- }
-
- /// <summary>
- /// Executes of the constraint provided by the <see cref="Constraint"/> property
- /// against a given <see cref="ExportDefinition"/> to determine if this
- /// <see cref="ImportDefinition"/> can be satisfied by the given <see cref="Export"/>.
- /// </summary>
- /// <param name="exportDefinition">
- /// A definition for a <see cref="Export"/> used to determine if it satisfies the
- /// requirements for this <see cref="ImportDefinition"/>.
- /// </param>
- /// <returns>
- /// <see langword="True"/> if the <see cref="Export"/> satisfies the requirements for
- /// this <see cref="ImportDefinition"/>, otherwise returns <see langword="False"/>.
- /// </returns>
- /// <remarks>
- /// <note type="inheritinfo">
- /// Overrides of this method can provide a more optimized execution of the
- /// <see cref="Constraint"/> property but the result should remain consistent.
- /// </note>
- /// </remarks>
- /// <exception cref="ArgumentNullException">
- /// <paramref name="exportDefinition"/> is <see langword="null"/>.
- /// </exception>
- public virtual bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- Requires.NotNull(exportDefinition, "exportDefinition");
-
- if (this._compiledConstraint == null)
- {
- this._compiledConstraint = this.Constraint.Compile();
- }
-
- return this._compiledConstraint.Invoke(exportDefinition);
- }
-
- /// <summary>
- /// Returns a string representation of the import definition.
- /// </summary>
- /// <returns>
- /// A <see cref="String"/> containing the value of the <see cref="Constraint"/> property.
- /// </returns>
- public override string ToString()
- {
- return this.Constraint.Body.ToString();
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs
deleted file mode 100644
index 45958bc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/Primitives/SerializableCompositionElement.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.Primitives
-{
- // As most objects that implement ICompositionElement (such as Export, ComposablePart,
- // ComposablePartCatalog, etc) are not serializable, this class is used as a serializable
- // placeholder for these types when ICompositionElement is used within serializable types,
- // such as CompositionException, CompositionIssue, etc.
- [Serializable]
- internal class SerializableCompositionElement : ICompositionElement
- {
- private readonly string _displayName;
- private readonly ICompositionElement _origin;
-
- public SerializableCompositionElement(string displayName, ICompositionElement origin)
- {
-#if !SILVERLIGHT
- Assumes.IsTrue(origin == null || origin.GetType().IsSerializable);
-#endif
- this._displayName = displayName ?? string.Empty;
- this._origin = origin;
- }
-
- public string DisplayName
- {
- get { return this._displayName; }
- }
-
- public ICompositionElement Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return this.DisplayName;
- }
-
- public static ICompositionElement FromICompositionElement(ICompositionElement element)
- {
- if (element == null)
- { // Null is always serializable
-
- return null;
- }
-
- ICompositionElement origin = FromICompositionElement(element.Origin);
-
- // Otherwise, we need to create a serializable wrapper
- return new SerializableCompositionElement(element.DisplayName, origin);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs
deleted file mode 100644
index c883d1d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/DisposableReflectionComposablePart.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal sealed class DisposableReflectionComposablePart : ReflectionComposablePart, IDisposable
- {
- private volatile int _isDisposed = 0;
-
- public DisposableReflectionComposablePart(ReflectionComposablePartDefinition definition)
- : base(definition)
- {
- }
-
- protected override void ReleaseInstanceIfNecessary(object instance)
- {
- IDisposable disposable = instance as IDisposable;
- if (disposable != null)
- {
- disposable.Dispose();
- }
- }
-
- protected override void EnsureRunning()
- {
- base.EnsureRunning();
- if (this._isDisposed == 1)
- {
- throw ExceptionBuilder.CreateObjectDisposed(this);
- }
- }
-
- void IDisposable.Dispose()
- {
- // NOTE : According to http://msdn.microsoft.com/en-us/library/4bw5ewxy.aspx, the warning is bogus when used with Interlocked API.
-#pragma warning disable 420
- if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
-#pragma warning restore 420
- {
- this.ReleaseInstanceIfNecessary(this.CachedInstance);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs
deleted file mode 100644
index 44dbcea..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ExportingMember.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ExportingMember
- {
- private readonly ExportDefinition _definition;
- private readonly ReflectionMember _member;
- private object _cachedValue = null;
- private volatile bool _isValueCached = false;
-
- public ExportingMember(ExportDefinition definition, ReflectionMember member)
- {
- Assumes.NotNull(definition, member);
-
- this._definition = definition;
- this._member = member;
- }
-
- public bool RequiresInstance
- {
- get { return _member.RequiresInstance; }
- }
-
- public ExportDefinition Definition
- {
- get { return _definition; }
- }
-
- public object GetExportedValue(object instance, object @lock)
- {
- this.EnsureReadable();
-
- if (!this._isValueCached)
- {
- object exportedValue;
- try
- {
- exportedValue = this._member.GetValue(instance);
- }
- catch (TargetInvocationException exception)
- { // Member threw an exception. Avoid letting this
- // leak out as a 'raw' unhandled exception, instead,
- // we'll add some context and rethrow.
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ExportThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ExportThrewException,
- this._member.GetDisplayName()),
- Definition.ToElement(),
- exception.InnerException);
- }
-
- lock (@lock)
- {
- if (!this._isValueCached)
- {
- this._cachedValue = exportedValue;
- Thread.MemoryBarrier();
-
- this._isValueCached = true;
- }
- }
- }
-
- return this._cachedValue;
- }
-
- private void EnsureReadable()
- {
- if (!this._member.CanRead)
- { // Property does not have a getter
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ExportNotReadable,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ExportNotReadable,
- this._member.GetDisplayName()),
- Definition.ToElement());
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs
deleted file mode 100644
index fa43610..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/IReflectionPartCreationInfo.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Reflection;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal interface IReflectionPartCreationInfo : ICompositionElement
- {
- Type GetPartType();
- Lazy<Type> GetLazyPartType();
- ConstructorInfo GetConstructor();
- IDictionary<string, object> GetMetadata();
- IEnumerable<ExportDefinition> GetExports();
- IEnumerable<ImportDefinition> GetImports();
- bool IsDisposalRequired { get; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportType.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportType.cs
deleted file mode 100644
index 776c54b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportType.cs
+++ /dev/null
@@ -1,140 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Reflection;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- // Describes the import type of a Reflection-based import definition
- internal class ImportType
- {
- private static readonly Type LazyOfTType = typeof(Lazy<>);
- private static readonly Type LazyOfTMType = typeof(Lazy<,>);
- private const string ExportFactoryTypeName = "System.ComponentModel.Composition.ExportFactory";
-
- private readonly Type _type;
- private readonly bool _isAssignableCollectionType;
- private readonly Type _contractType;
- private Func<Export, object> _castSingleValue;
-
- public ImportType(Type type, ImportCardinality cardinality)
- {
- Assumes.NotNull(type);
-
- this._type = type;
- this._contractType = type;
-
- if (cardinality == ImportCardinality.ZeroOrMore)
- {
- this._isAssignableCollectionType = IsTypeAssignableCollectionType(type);
- this._contractType = CheckForCollection(type);
- }
-
- this._contractType = CheckForLazyAndPartCreator(this._contractType);
- }
-
- public bool IsAssignableCollectionType
- {
- get { return this._isAssignableCollectionType; }
- }
-
- public Type ElementType { get; private set; }
-
- public Type ActualType
- {
- get { return this._type; }
- }
-
- public bool IsPartCreator { get; private set; }
-
- public Type ContractType { get { return this._contractType; } }
-
- public Func<Export, object> CastExport { get { return this._castSingleValue; } }
-
- public Type MetadataViewType { get; private set; }
-
- private Type CheckForCollection(Type type)
- {
- this.ElementType = CollectionServices.GetEnumerableElementType(type);
- if (this.ElementType != null)
- {
- return this.ElementType;
- }
- return type;
- }
-
- private Type CheckForLazyAndPartCreator(Type type)
- {
- if (type.IsGenericType)
- {
- Type genericType = type.GetGenericTypeDefinition();
- Type[] arguments = type.GetGenericArguments();
-
- if (genericType == LazyOfTType)
- {
- this._castSingleValue = ExportServices.CreateStronglyTypedLazyFactory(arguments[0], null);
- return arguments[0];
- }
-
- if (genericType == LazyOfTMType)
- {
- this.MetadataViewType = arguments[1];
- this._castSingleValue = ExportServices.CreateStronglyTypedLazyFactory(arguments[0], arguments[1]);
- return arguments[0];
- }
-
- if (
- type.FullName.StartsWith(ExportFactoryTypeName, StringComparison.Ordinal) &&
- ((arguments.Length == 1) || (arguments.Length == 2)))
- {
- // Func<Tuple<T, Action>>
- Type exportLifetimeContextCreatorType = typeof(Func<>).MakeGenericType(typeof(Tuple<,>).MakeGenericType(arguments[0], typeof(Action)));
- ConstructorInfo constructor = null;
-
- if (arguments.Length == 1)
- {
- constructor = type.GetConstructor(new Type[] { exportLifetimeContextCreatorType });
- }
- else
- {
- Assumes.IsTrue(arguments.Length == 2);
- constructor = type.GetConstructor(new Type[] { exportLifetimeContextCreatorType, arguments[1] });
- }
-
- if (constructor != null)
- {
- this.IsPartCreator = true;
- if (arguments.Length == 1)
- {
- this._castSingleValue = ExportServices.CreateStronglyTypedExportFactoryFactory(arguments[0], null, constructor);
- }
- else
- {
- Assumes.IsTrue(arguments.Length == 2);
- this._castSingleValue = ExportServices.CreateStronglyTypedExportFactoryFactory(arguments[0], arguments[1], constructor);
- this.MetadataViewType = arguments[1];
- }
-
- return arguments[0];
- }
- }
- }
-
- return type;
- }
-
- private static bool IsTypeAssignableCollectionType(Type type)
- {
- if (type.IsArray || CollectionServices.IsEnumerableOfT(type))
- {
- return true;
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs
deleted file mode 100644
index c45245e..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Globalization;
-using System.Linq;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ImportingItem
- {
- private readonly ContractBasedImportDefinition _definition;
- private readonly ImportType _importType;
-
- protected ImportingItem(ContractBasedImportDefinition definition, ImportType importType)
- {
- Assumes.NotNull(definition);
-
- this._definition = definition;
- this._importType = importType;
- }
-
- public ContractBasedImportDefinition Definition
- {
- get { return this._definition; }
- }
-
- public ImportType ImportType
- {
- get { return this._importType; }
- }
-
- public object CastExportsToImportType(Export[] exports)
- {
- if (this.Definition.Cardinality == ImportCardinality.ZeroOrMore)
- {
- return CastExportsToCollectionImportType(exports);
- }
- else
- {
- return CastExportsToSingleImportType(exports);
- }
- }
-
- private object CastExportsToCollectionImportType(Export[] exports)
- {
- Assumes.NotNull(exports);
-
- // Element type could be null if the actually import type of the member is not a collection
- // This particular case will end up failing when we set the member.
- Type elementType = this.ImportType.ElementType ?? typeof(object);
-
- Array array = Array.CreateInstance(elementType, exports.Length);
-
- for (int i = 0; i < array.Length; i++)
- {
- object value = CastSingleExportToImportType(elementType, exports[i]);
-
- array.SetValue(value, i);
- }
-
- return array;
- }
-
- private object CastExportsToSingleImportType(Export[] exports)
- {
- Assumes.NotNull(exports);
- Assumes.IsTrue(exports.Length < 2);
-
- if (exports.Length == 0)
- {
- return null;
- }
-
- return CastSingleExportToImportType(this.ImportType.ActualType, exports[0]);
- }
-
- private object CastSingleExportToImportType(Type type, Export export)
- {
- if (this.ImportType.CastExport != null)
- {
- return this.ImportType.CastExport(export);
- }
-
- return Cast(type, export);
- }
-
- private object Cast(Type type, Export export)
- {
- // TODO: Need to catch CompositionException to provide
- // additional information about what member we're setting
- // and the current dependency graph.
- object value = export.Value;
-
- object result;
- if (!ContractServices.TryCast(type, value, out result))
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportNotAssignableFromExport,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportNotAssignableFromExport,
- export.ToElement().DisplayName,
- type.FullName),
- this.Definition.ToElement());
- }
-
- return result;
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs
deleted file mode 100644
index 723131f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs
+++ /dev/null
@@ -1,253 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ImportingMember : ImportingItem
- {
- private readonly ReflectionWritableMember _member;
-
- public ImportingMember(ContractBasedImportDefinition definition, ReflectionWritableMember member, ImportType importType)
- : base(definition, importType)
- {
- Assumes.NotNull(definition, member);
-
- this._member = member;
- }
-
- public void SetExportedValue(object instance, object value)
- {
- if (RequiresCollectionNormalization())
- {
- this.SetCollectionMemberValue(instance, (IEnumerable)value);
- }
- else
- {
- this.SetSingleMemberValue(instance, value);
- }
- }
-
- private bool RequiresCollectionNormalization()
- {
- if (this.Definition.Cardinality != ImportCardinality.ZeroOrMore)
- { // If we're not looking at a collection import, then don't
- // 'normalize' the collection.
-
- return false;
- }
-
- if (this._member.CanWrite && this.ImportType.IsAssignableCollectionType)
- { // If we can simply replace the entire value of the property/field, then
- // we don't need to 'normalize' the collection.
-
- return false;
- }
-
- return true;
- }
-
- private void SetSingleMemberValue(object instance, object value)
- {
- EnsureWritable();
-
- try
- {
- this._member.SetValue(instance, value);
- }
- catch (TargetInvocationException exception)
- { // Member threw an exception. Avoid letting this
- // leak out as a 'raw' unhandled exception, instead,
- // we'll add some context and rethrow.
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportThrewException,
- this._member.GetDisplayName()),
- Definition.ToElement(),
- exception.InnerException);
- }
- }
-
- private void EnsureWritable()
- {
- if (!this._member.CanWrite)
- { // Property does not have a setter, or
- // field is marked as read-only.
-
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportNotWritable,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportNotWritable,
- this._member.GetDisplayName()),
- Definition.ToElement());
- }
- }
-
- private void SetCollectionMemberValue(object instance, IEnumerable values)
- {
- Assumes.NotNull(values);
-
- ICollection<object> collection = null;
- Type itemType = CollectionServices.GetCollectionElementType(this.ImportType.ActualType);
- if (itemType != null)
- {
- collection = GetNormalizedCollection(itemType, instance);
- }
-
- EnsureCollectionIsWritable(collection);
- PopulateCollection(collection, values);
- }
-
- private ICollection<object> GetNormalizedCollection(Type itemType, object instance)
- {
- Assumes.NotNull(itemType);
-
- object collectionObject = null;
-
- if (this._member.CanRead)
- {
- try
- {
- collectionObject = this._member.GetValue(instance);
- }
- catch (TargetInvocationException exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionGetThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionGetThrewException,
- this._member.GetDisplayName()),
- this.Definition.ToElement(),
- exception.InnerException);
- }
- }
-
- if (collectionObject == null)
- {
- ConstructorInfo constructor = this.ImportType.ActualType.GetConstructor(Type.EmptyTypes);
-
- // If it contains a default public constructor create a new instance.
- if (constructor != null)
- {
- try
- {
- collectionObject = constructor.SafeInvoke();
- }
- catch (TargetInvocationException exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionConstructionThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionConstructionThrewException,
- this._member.GetDisplayName(),
- this.ImportType.ActualType.FullName),
- this.Definition.ToElement(),
- exception.InnerException);
- }
-
- SetSingleMemberValue(instance, collectionObject);
- }
- }
-
- if (collectionObject == null)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionNull,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionNull,
- this._member.GetDisplayName()),
- this.Definition.ToElement());
- }
-
- return CollectionServices.GetCollectionWrapper(itemType, collectionObject);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- private void EnsureCollectionIsWritable(ICollection<object> collection)
- {
- bool isReadOnly = true;
-
- try
- {
- if (collection != null)
- {
- isReadOnly = collection.IsReadOnly;
- }
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionIsReadOnlyThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionIsReadOnlyThrewException,
- this._member.GetDisplayName(),
- collection.GetType().FullName),
- this.Definition.ToElement(),
- exception);
- }
-
- if (isReadOnly)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionNotWritable,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionNotWritable,
- this._member.GetDisplayName()),
- this.Definition.ToElement());
- }
- }
-
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- private void PopulateCollection(ICollection<object> collection, IEnumerable values)
- {
- Assumes.NotNull(collection, values);
-
- try
- {
- collection.Clear();
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionClearThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionClearThrewException,
- this._member.GetDisplayName(),
- collection.GetType().FullName),
- this.Definition.ToElement(),
- exception);
- }
-
- foreach (object value in values)
- {
- try
- {
- collection.Add(value);
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportCollectionAddThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportCollectionAddThrewException,
- this._member.GetDisplayName(),
- collection.GetType().FullName),
- this.Definition.ToElement(),
- exception);
- }
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs
deleted file mode 100644
index 0b1d15f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ImportingParameter.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ImportingParameter : ImportingItem
- {
- public ImportingParameter(ContractBasedImportDefinition definition, ImportType importType)
- : base(definition, importType)
- {
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs
deleted file mode 100644
index f59e3c6..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/LazyMemberInfo.cs
+++ /dev/null
@@ -1,207 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- public struct LazyMemberInfo
- {
- private readonly MemberTypes _memberType;
- private MemberInfo[] _accessors;
- private readonly Func<MemberInfo[]> _accessorsCreator;
-
- public LazyMemberInfo(MemberInfo member)
- {
- Requires.NotNull(member, "member");
- EnsureSupportedMemberType(member.MemberType, "member");
-
- this._accessorsCreator = null;
- this._memberType = member.MemberType;
-
- switch(this._memberType)
- {
- case MemberTypes.Property:
- PropertyInfo property = (PropertyInfo)member;
- Assumes.NotNull(property);
- this._accessors = new MemberInfo[] { property.GetGetMethod(true), property.GetSetMethod(true) };
- break;
- case MemberTypes.Event:
- EventInfo event_ = (EventInfo)member;
- this._accessors = new MemberInfo[] { event_.GetRaiseMethod(true), event_.GetAddMethod(true), event_.GetRemoveMethod(true) };
- break;
- default:
- this._accessors = new MemberInfo[] { member };
- break;
- }
- }
-
- public LazyMemberInfo(MemberTypes memberType, params MemberInfo[] accessors)
- {
- EnsureSupportedMemberType(memberType, "memberType");
- Requires.NotNull(accessors, "accessors");
-
- string errorMessage;
- if (!LazyMemberInfo.AreAccessorsValid(memberType, accessors, out errorMessage))
- {
- throw new ArgumentException(errorMessage, "accessors");
- }
-
- this._memberType = memberType;
- this._accessors = accessors;
- this._accessorsCreator = null;
- }
-
- public LazyMemberInfo(MemberTypes memberType, Func<MemberInfo[]> accessorsCreator)
- {
- EnsureSupportedMemberType(memberType, "memberType");
- Requires.NotNull(accessorsCreator, "accessorsCreator");
-
- this._memberType = memberType;
- this._accessors = null;
- this._accessorsCreator = accessorsCreator;
- }
-
- public MemberTypes MemberType
- {
- get { return this._memberType; }
- }
-
- public MemberInfo[] GetAccessors()
- {
- if ((this._accessors == null) && (this._accessorsCreator != null))
- {
- MemberInfo[] accessors = this._accessorsCreator.Invoke();
-
- string errorMessage;
- if (!LazyMemberInfo.AreAccessorsValid(this.MemberType, accessors, out errorMessage))
- {
- throw new InvalidOperationException(errorMessage);
- }
-
- this._accessors = accessors;
- }
-
- return this._accessors;
- }
-
- public override int GetHashCode()
- {
- if (this._accessorsCreator != null)
- {
- return this.MemberType.GetHashCode() ^ this._accessorsCreator.GetHashCode();
- }
- else
- {
- Assumes.NotNull(this._accessors);
- Assumes.NotNull(this._accessors[0]);
- return this.MemberType.GetHashCode() ^ this._accessors[0].GetHashCode();
- }
- }
-
- public override bool Equals(object obj)
- {
- LazyMemberInfo that = (LazyMemberInfo)obj;
-
- // Difefrent member types mean different members
- if (this._memberType != that._memberType)
- {
- return false;
- }
-
- // if any of the lazy memebers create accessors in a delay-loaded fashion, we simply compare the creators
- if ((this._accessorsCreator != null) || (that._accessorsCreator != null))
- {
- return object.Equals(this._accessorsCreator, that._accessorsCreator);
- }
-
- // we are dealing with explicitly passed accessors in both cases
- Assumes.NotNull(this._accessors);
- Assumes.NotNull(that._accessors);
- return this._accessors.SequenceEqual(that._accessors);
- }
-
- public static bool operator ==(LazyMemberInfo left, LazyMemberInfo right)
- {
- return left.Equals(right);
- }
-
- public static bool operator !=(LazyMemberInfo left, LazyMemberInfo right)
- {
- return !left.Equals(right);
- }
-
- private static void EnsureSupportedMemberType(MemberTypes memberType, string argument)
- {
- MemberTypes supportedTypes = MemberTypes.TypeInfo | MemberTypes.NestedType | MemberTypes.Constructor | MemberTypes.Field | MemberTypes.Method | MemberTypes.Property | MemberTypes.Event;
- Requires.IsInMembertypeSet(memberType, argument, supportedTypes);
- }
-
- private static bool AreAccessorsValid(MemberTypes memberType, MemberInfo[] accessors, out string errorMessage)
- {
- errorMessage = string.Empty;
- if (accessors == null)
- {
- errorMessage = Strings.LazyMemberInfo_AccessorsNull;
- return false;
- }
-
- if (accessors.All(accessor => accessor == null))
- {
- errorMessage = Strings.LazyMemberInfo_NoAccessors;
- return false;
- }
-
- switch (memberType)
- {
- case MemberTypes.Property:
- if (accessors.Length != 2)
- {
- errorMessage = Strings.LazyMemberInfo_InvalidPropertyAccessors_Cardinality;
- return false;
- }
-
- if (accessors.Where(accessor => (accessor != null) && (accessor.MemberType != MemberTypes.Method)).Any())
- {
- errorMessage = Strings.LazyMemberinfo_InvalidPropertyAccessors_AccessorType;
- return false;
- }
-
- break;
-
- case MemberTypes.Event:
- if (accessors.Length != 3)
- {
- errorMessage = Strings.LazyMemberInfo_InvalidEventAccessors_Cardinality;
- return false;
- }
-
- if (accessors.Where(accessor => (accessor != null) && (accessor.MemberType != MemberTypes.Method)).Any())
- {
- errorMessage = Strings.LazyMemberinfo_InvalidPropertyAccessors_AccessorType;
- return false;
- }
-
- break;
-
- default:
- if (
- (accessors.Length != 1) ||
- ((accessors.Length == 1) && (accessors[0].MemberType != memberType)))
- {
- errorMessage = string.Format(CultureInfo.CurrentCulture, Strings.LazyMemberInfo_InvalidAccessorOnSimpleMember, memberType);
- return false;
- }
-
- break;
- }
- return true;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs
deleted file mode 100644
index 517dd59..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorExportDefinition.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class PartCreatorExportDefinition : ExportDefinition
- {
- private readonly ExportDefinition _productDefinition;
- private IDictionary<string, object> _metadata;
-
- public PartCreatorExportDefinition(ExportDefinition productDefinition)
- : base()
- {
- this._productDefinition = productDefinition;
- }
-
- public override string ContractName
- {
- get
- {
- return CompositionConstants.PartCreatorContractName;
- }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- var metadata = new Dictionary<string, object>(this._productDefinition.Metadata);
- metadata[CompositionConstants.ExportTypeIdentityMetadataName] = CompositionConstants.PartCreatorTypeIdentity;
- metadata[CompositionConstants.ProductDefinitionMetadataName] = this._productDefinition;
-
- this._metadata = metadata.AsReadOnly();
- }
- return this._metadata;
- }
- }
-
- internal static bool IsProductConstraintSatisfiedBy(ImportDefinition productImportDefinition, ExportDefinition exportDefinition)
- {
- object productValue = null;
- if (exportDefinition.Metadata.TryGetValue(CompositionConstants.ProductDefinitionMetadataName, out productValue))
- {
- ExportDefinition productDefinition = productValue as ExportDefinition;
-
- if (productDefinition != null)
- {
- return productImportDefinition.IsConstraintSatisfiedBy(productDefinition);
- }
- }
-
- return false;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs
deleted file mode 100644
index 0aa6480..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq.Expressions;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class PartCreatorMemberImportDefinition : ReflectionMemberImportDefinition, IPartCreatorImportDefinition
- {
- private readonly ContractBasedImportDefinition _productImportDefinition;
-
- public PartCreatorMemberImportDefinition(
- LazyMemberInfo importingLazyMember,
- ICompositionElement origin,
- ContractBasedImportDefinition productImportDefinition)
- : base(importingLazyMember, CompositionConstants.PartCreatorContractName, CompositionConstants.PartCreatorTypeIdentity,
- productImportDefinition.RequiredMetadata, productImportDefinition.Cardinality, productImportDefinition.IsRecomposable, CreationPolicy.Any, origin)
- {
- Assumes.NotNull(productImportDefinition);
- this._productImportDefinition = productImportDefinition;
- }
-
- public ContractBasedImportDefinition ProductImportDefinition { get { return this._productImportDefinition; } }
-
- public override bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- if (!base.IsConstraintSatisfiedBy(exportDefinition))
- {
- return false;
- }
-
- return PartCreatorExportDefinition.IsProductConstraintSatisfiedBy(this._productImportDefinition, exportDefinition);
- }
-
- public override Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- return ConstraintServices.CreatePartCreatorConstraint(base.Constraint, this._productImportDefinition);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs
deleted file mode 100644
index d12e4bd..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Linq.Expressions;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class PartCreatorParameterImportDefinition : ReflectionParameterImportDefinition, IPartCreatorImportDefinition
- {
- private readonly ContractBasedImportDefinition _productImportDefinition;
-
- public PartCreatorParameterImportDefinition(
- Lazy<ParameterInfo> importingLazyParameter,
- ICompositionElement origin,
- ContractBasedImportDefinition productImportDefinition)
- : base(importingLazyParameter, CompositionConstants.PartCreatorContractName, CompositionConstants.PartCreatorTypeIdentity,
- productImportDefinition.RequiredMetadata, productImportDefinition.Cardinality, CreationPolicy.Any, origin)
- {
- Assumes.NotNull(productImportDefinition);
- this._productImportDefinition = productImportDefinition;
- }
-
- public ContractBasedImportDefinition ProductImportDefinition { get { return this._productImportDefinition; } }
-
- public override bool IsConstraintSatisfiedBy(ExportDefinition exportDefinition)
- {
- if (!base.IsConstraintSatisfiedBy(exportDefinition))
- {
- return false;
- }
- return PartCreatorExportDefinition.IsProductConstraintSatisfiedBy(this._productImportDefinition, exportDefinition);
- }
-
- public override Expression<Func<ExportDefinition, bool>> Constraint
- {
- get
- {
- return ConstraintServices.CreatePartCreatorConstraint(base.Constraint, this._productImportDefinition);
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs
deleted file mode 100644
index c4b15de..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePart.cs
+++ /dev/null
@@ -1,565 +0,0 @@
-
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- // This
- internal class ReflectionComposablePart : ComposablePart, ICompositionElement
- {
- private readonly ReflectionComposablePartDefinition _definition;
- private readonly Dictionary<ImportDefinition, object> _importValues = new Dictionary<ImportDefinition, object>();
- private readonly Dictionary<ImportDefinition, ImportingItem> _importsCache = new Dictionary<ImportDefinition, ImportingItem>();
- private readonly Dictionary<ExportDefinition, ExportingMember> _exportsCache = new Dictionary<ExportDefinition, ExportingMember>();
- private bool _invokeImportsSatisfied = true;
- private bool _invokingImportsSatisfied = false;
- private bool _initialCompositionComplete = false;
- private volatile object _cachedInstance;
- private object _lock = new object();
-
- public ReflectionComposablePart(ReflectionComposablePartDefinition definition)
- {
- Requires.NotNull(definition, "definition");
-
- this._definition = definition;
- }
-
- public ReflectionComposablePart(ReflectionComposablePartDefinition definition, object attributedPart)
- {
- Requires.NotNull(definition, "definition");
- Requires.NotNull(attributedPart, "attributedPart");
-
- this._definition = definition;
-
- if (attributedPart is ValueType)
- {
- throw new ArgumentException(Strings.ArgumentValueType, "attributedPart");
- }
- this._cachedInstance = attributedPart;
- }
-
- protected virtual void EnsureRunning()
- {
- }
-
- protected virtual void ReleaseInstanceIfNecessary(object instance)
- {
- }
-
- protected object CachedInstance
- {
- get
- {
- lock (this._lock)
- {
- return this._cachedInstance;
- }
- }
- }
-
- public ReflectionComposablePartDefinition Definition
- {
- get
- {
- this.EnsureRunning();
- return this._definition;
- }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- this.EnsureRunning();
- return this.Definition.Metadata;
- }
- }
-
- public sealed override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get
- {
- this.EnsureRunning();
- return this.Definition.ImportDefinitions;
- }
- }
-
- public sealed override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get
- {
- this.EnsureRunning();
- return this.Definition.ExportDefinitions;
- }
- }
-
-
- string ICompositionElement.DisplayName
- {
- get { return GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return Definition; }
- }
-
- // This is the ONLY method which is not executed under the ImportEngine composition lock.
- // We need to protect all state that is accesses
- public override object GetExportedValue(ExportDefinition definition)
- {
- // given the implementation of the ImportEngine, this iwll be called under a lock if the part is still being composed
- // This is only called outside of the lock when the part is fully composed
- // based on that we only protect:
- // _exportsCache - and thus all calls to GetExportingMemberFromDefinition
- // access to _importValues
- // access to _initialCompositionComplete
- // access to _instance
- this.EnsureRunning();
- Requires.NotNull(definition, "definition");
-
- ExportingMember member = null;
- lock (this._lock)
- {
- member = GetExportingMemberFromDefinition(definition);
- if (member == null)
- {
- throw ExceptionBuilder.CreateExportDefinitionNotOnThisComposablePart("definition");
- }
- this.EnsureGettable();
- }
-
- return this.GetExportedValue(member);
- }
-
- public override void SetImport(ImportDefinition definition, IEnumerable<Export> exports)
- {
- this.EnsureRunning();
-
- Requires.NotNull(definition, "definition");
- Requires.NotNull(exports, "exports");
-
- ImportingItem item = GetImportingItemFromDefinition(definition);
- if (item == null)
- {
- throw ExceptionBuilder.CreateImportDefinitionNotOnThisComposablePart("definition");
- }
-
- EnsureSettable(definition);
-
- // Avoid walking over exports many times
- Export[] exportsAsArray = exports.AsArray();
- EnsureCardinality(definition, exportsAsArray);
-
- SetImport(item, exportsAsArray);
- }
-
- public override void Activate()
- {
- this.EnsureRunning();
-
- this.SetNonPrerequisiteImports();
-
- // Whenever we are composed/recomposed notify the instance
- this.NotifyImportSatisfied();
-
- lock (this._lock)
- {
- this._initialCompositionComplete = true;
- }
- }
-
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- private object GetExportedValue(ExportingMember member)
- {
- object instance = null;
- if (member.RequiresInstance)
- { // Only activate the instance if we actually need to
-
- instance = this.GetInstanceActivatingIfNeeded();
- }
-
- return member.GetExportedValue(instance, this._lock);
- }
-
- private void SetImport(ImportingItem item, Export[] exports)
- {
- object value = item.CastExportsToImportType(exports);
-
- lock (this._lock)
- {
- this._invokeImportsSatisfied = true;
- this._importValues[item.Definition] = value;
- }
- }
-
- private object GetInstanceActivatingIfNeeded()
- {
- if (this._cachedInstance != null)
- {
- return this._cachedInstance;
- }
- else
- {
- ConstructorInfo constructor = null;
- object[] arguments = null;
- // determine whether activation is required, and collect necessary information for activation
- // we need to do that under a lock
- lock (this._lock)
- {
- if (!this.RequiresActivation())
- {
- return null;
- }
-
- constructor = this.Definition.GetConstructor();
- if (constructor == null)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_PartConstructorMissing,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_PartConstructorMissing,
- this.Definition.GetPartType().FullName),
- this.Definition.ToElement());
- }
- arguments = this.GetConstructorArguments();
- }
-
- // create instance outside of the lock
- object createdInstance = this.CreateInstance(constructor, arguments);
-
- // set the created instance
- lock (this._lock)
- {
- if (this._cachedInstance == null)
- {
- this._cachedInstance = createdInstance;
- createdInstance = null;
- }
- }
-
- // if the instance has been already set
- if (createdInstance == null)
- {
- this.ReleaseInstanceIfNecessary(createdInstance);
- }
- }
-
- return this._cachedInstance;
- }
-
- private object[] GetConstructorArguments()
- {
- ReflectionParameterImportDefinition[] parameterImports = this.ImportDefinitions.OfType<ReflectionParameterImportDefinition>().ToArray();
- object[] arguments = new object[parameterImports.Length];
-
- this.UseImportedValues(
- parameterImports,
- (import, definition, value) =>
- {
- if (definition.Cardinality == ImportCardinality.ZeroOrMore && !import.ImportType.IsAssignableCollectionType)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_ImportManyOnParameterCanOnlyBeAssigned,
- this.Definition.GetPartType().FullName,
- definition.ImportingLazyParameter.Value.Name),
- this.Definition.ToElement());
- }
-
- arguments[definition.ImportingLazyParameter.Value.Position] = value;
- },
- true);
-
- return arguments;
- }
-
- // alwayc called under a lock
- private bool RequiresActivation()
- {
- // If we have any imports then we need activation
- // (static imports are not supported)
- if (this.ImportDefinitions.Any())
- {
- return true;
- }
-
- // If we have any instance exports, then we also
- // need activation.
- return this.ExportDefinitions.Any(definition =>
- {
- ExportingMember member = GetExportingMemberFromDefinition(definition);
-
- return member.RequiresInstance;
- });
- }
-
- // this is called under a lock
- private void EnsureGettable()
- {
- // If we're already composed then we know that
- // all pre-req imports have been satisfied
- if (_initialCompositionComplete)
- {
- return;
- }
-
- // Make sure all pre-req imports have been set
- foreach (ImportDefinition definition in ImportDefinitions.Where(definition => definition.IsPrerequisite))
- {
- if (!this._importValues.ContainsKey(definition))
- {
- throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
- Strings.InvalidOperation_GetExportedValueBeforePrereqImportSet,
- definition.ToElement().DisplayName));
- }
- }
- }
-
- private void EnsureSettable(ImportDefinition definition)
- {
- lock (this._lock)
- {
- if (this._initialCompositionComplete && !definition.IsRecomposable)
- {
- throw new InvalidOperationException(Strings.InvalidOperation_DefinitionCannotBeRecomposed);
- }
- }
- }
-
- private static void EnsureCardinality(ImportDefinition definition, Export[] exports)
- {
- Requires.NullOrNotNullElements(exports, "exports");
-
- ExportCardinalityCheckResult result = ExportServices.CheckCardinality(definition, exports);
-
- switch (result)
- {
- case ExportCardinalityCheckResult.NoExports:
- throw new ArgumentException(Strings.Argument_ExportsEmpty, "exports");
-
- case ExportCardinalityCheckResult.TooManyExports:
- throw new ArgumentException(Strings.Argument_ExportsTooMany, "exports");
-
- default:
- Assumes.IsTrue(result == ExportCardinalityCheckResult.Match);
- break;
- }
- }
-
- private object CreateInstance(ConstructorInfo constructor, object[] arguments)
- {
- Exception exception = null;
- object instance = null;
-
- try
- {
- instance = constructor.SafeInvoke(arguments);
- }
- catch (TypeInitializationException ex)
- {
- exception = ex;
- }
- catch (TargetInvocationException ex)
- {
- exception = ex.InnerException;
- }
-
- if (exception != null)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_PartConstructorThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_PartConstructorThrewException,
- Definition.GetPartType().FullName),
- Definition.ToElement(),
- exception);
- }
-
- return instance;
- }
-
- private void SetNonPrerequisiteImports()
- {
- IEnumerable<ImportDefinition> members = this.ImportDefinitions.Where(import => !import.IsPrerequisite);
-
- // NOTE: Dev10 484204 The validation is turned off for post imports because of it broke declarative composition
- this.UseImportedValues(members, SetExportedValueForImport, false);
- }
-
- private void SetExportedValueForImport(ImportingItem import, ImportDefinition definition, object value)
- {
- ImportingMember importMember = (ImportingMember)import;
-
- object instance = this.GetInstanceActivatingIfNeeded();
-
- importMember.SetExportedValue(instance, value);
- }
-
- private void UseImportedValues<TImportDefinition>(IEnumerable<TImportDefinition> definitions, Action<ImportingItem, TImportDefinition, object> useImportValue, bool errorIfMissing)
- where TImportDefinition : ImportDefinition
- {
- var result = CompositionResult.SucceededResult;
-
- foreach (var definition in definitions)
- {
- ImportingItem import = GetImportingItemFromDefinition(definition);
-
- object value;
- if (!TryGetImportValue(definition, out value))
- {
- if (!errorIfMissing)
- {
- continue;
- }
-
- if (definition.Cardinality == ImportCardinality.ExactlyOne)
- {
- var error = CompositionError.Create(
- CompositionErrorId.ImportNotSetOnPart,
- Strings.ImportNotSetOnPart,
- this.Definition.GetPartType().FullName,
- definition.ToString());
- result = result.MergeError(error);
- continue;
- }
- else
- {
- value = import.CastExportsToImportType(new Export[0]);
- }
- }
-
- useImportValue(import, definition, value);
- }
-
- result.ThrowOnErrors();
- }
-
- private bool TryGetImportValue(ImportDefinition definition, out object value)
- {
- lock (this._lock)
- {
- if (this._importValues.TryGetValue(definition, out value))
- {
- this._importValues.Remove(definition);
- return true;
- }
- }
-
- value = null;
- return false;
- }
-
- [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
- private void NotifyImportSatisfied()
- {
- if (this._invokeImportsSatisfied && !this._invokingImportsSatisfied)
- {
- IPartImportsSatisfiedNotification notify = this.GetInstanceActivatingIfNeeded() as IPartImportsSatisfiedNotification;
- if (notify != null)
- {
- try
- {
- // Reentrancy on composition notifications is allowed, so set this first to avoid
- // an infinte loop of notifications.
- this._invokingImportsSatisfied = true;
-
- notify.OnImportsSatisfied();
- }
- catch (Exception exception)
- {
- throw new ComposablePartException(
- CompositionErrorId.ReflectionModel_PartOnImportsSatisfiedThrewException,
- String.Format(CultureInfo.CurrentCulture,
- Strings.ReflectionModel_PartOnImportsSatisfiedThrewException,
- Definition.GetPartType().FullName),
- Definition.ToElement(),
- exception);
- }
- finally
- {
- this._invokingImportsSatisfied = false;
- }
-
- this._invokeImportsSatisfied = false;
- }
- }
- }
-
- // this is always called under a lock
- private ExportingMember GetExportingMemberFromDefinition(ExportDefinition definition)
- {
- ExportingMember result;
- if (!_exportsCache.TryGetValue(definition, out result))
- {
- result = GetExportingMember(definition);
- if (result != null)
- {
- _exportsCache[definition] = result;
- }
- }
-
- return result;
- }
-
- private ImportingItem GetImportingItemFromDefinition(ImportDefinition definition)
- {
- ImportingItem result;
- if (!_importsCache.TryGetValue(definition, out result))
- {
- result = GetImportingItem(definition);
- if (result != null)
- {
- _importsCache[definition] = result;
- }
- }
-
- return result;
- }
-
- private static ImportingItem GetImportingItem(ImportDefinition definition)
- {
- ReflectionImportDefinition reflectionDefinition = definition as ReflectionImportDefinition;
- if (reflectionDefinition != null)
- {
- return reflectionDefinition.ToImportingItem();
- }
-
- // Don't recognize it
- return null;
- }
-
- private static ExportingMember GetExportingMember(ExportDefinition definition)
- {
- ReflectionMemberExportDefinition exportDefinition = definition as ReflectionMemberExportDefinition;
- if (exportDefinition != null)
- {
- return exportDefinition.ToExportingMember();
- }
-
- // Don't recognize it
- return null;
- }
-
- private string GetDisplayName()
- {
- return this.Definition.GetPartType().GetDisplayName();
- }
- }
-}
\ No newline at end of file
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs
deleted file mode 100644
index a8e3c83..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionComposablePartDefinition : ComposablePartDefinition, ICompositionElement
- {
- private readonly IReflectionPartCreationInfo _creationInfo;
-
- private volatile IEnumerable<ImportDefinition> _imports;
- private volatile IEnumerable<ExportDefinition> _exports;
- private volatile IDictionary<string, object> _metadata;
- private volatile ConstructorInfo _constructor;
- private object _lock = new object();
-
- public ReflectionComposablePartDefinition(IReflectionPartCreationInfo creationInfo)
- {
- Assumes.NotNull(creationInfo);
- this._creationInfo = creationInfo;
- }
-
- public Type GetPartType()
- {
- return this._creationInfo.GetPartType();
- }
-
- public Lazy<Type> GetLazyPartType()
- {
- return this._creationInfo.GetLazyPartType();
- }
-
- public ConstructorInfo GetConstructor()
- {
- if (this._constructor == null)
- {
- ConstructorInfo constructor = this._creationInfo.GetConstructor();
- lock (this._lock)
- {
- if (this._constructor == null)
- {
- this._constructor = constructor;
- }
- }
- }
-
- return this._constructor;
- }
-
- public override IEnumerable<ExportDefinition> ExportDefinitions
- {
- get
- {
- if (this._exports == null)
- {
- ExportDefinition[] exports = this._creationInfo.GetExports().ToArray();
- lock (this._lock)
- {
- if (this._exports == null)
- {
- this._exports = exports;
- }
- }
- }
- return this._exports;
- }
- }
-
- public override IEnumerable<ImportDefinition> ImportDefinitions
- {
- get
- {
- if (this._imports == null)
- {
- ImportDefinition[] imports = this._creationInfo.GetImports().ToArray();
- lock (this._lock)
- {
- if (this._imports == null)
- {
- this._imports = imports;
- }
- }
- }
- return this._imports;
- }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- IDictionary<string, object> metadata = this._creationInfo.GetMetadata().AsReadOnly();
- lock (this._lock)
- {
- if (this._metadata == null)
- {
- this._metadata = metadata;
- }
- }
- }
- return this._metadata;
- }
- }
-
- internal bool IsDisposalRequired
- {
- get
- {
- return this._creationInfo.IsDisposalRequired;
- }
- }
-
- [SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
- public override ComposablePart CreatePart()
- {
- if (this.IsDisposalRequired)
- {
- return new DisposableReflectionComposablePart(this);
- }
- else
- {
- return new ReflectionComposablePart(this);
- }
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this._creationInfo.DisplayName; }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._creationInfo.Origin; }
- }
-
- public override string ToString()
- {
- return this._creationInfo.DisplayName;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs
deleted file mode 100644
index b04edbc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-using System.Collections.Generic;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal static class ReflectionExtensions
- {
- public static ReflectionMember ToReflectionMember(this LazyMemberInfo lazyMember)
- {
- MemberInfo[] accessors = lazyMember.GetAccessors();
- MemberTypes memberType = lazyMember.MemberType;
-
- switch (memberType)
- {
- case MemberTypes.Field:
- Assumes.IsTrue(accessors.Length == 1);
- return ((FieldInfo)accessors[0]).ToReflectionField();
-
- case MemberTypes.Property:
- Assumes.IsTrue(accessors.Length == 2);
- return ReflectionExtensions.CreateReflectionProperty((MethodInfo)accessors[0], (MethodInfo)accessors[1]);
-
- case MemberTypes.NestedType:
- case MemberTypes.TypeInfo:
- return ((Type)accessors[0]).ToReflectionType();
-
- default:
- Assumes.IsTrue(memberType == MemberTypes.Method);
- return ((MethodInfo)accessors[0]).ToReflectionMethod();
- }
- }
-
- public static LazyMemberInfo ToLazyMember(this ReflectionMember reflectionMember)
- {
- Assumes.NotNull(reflectionMember);
-
- if (reflectionMember.ItemType == ReflectionItemType.Property)
- {
- ReflectionProperty reflectionProperty = reflectionMember as ReflectionProperty;
- Assumes.NotNull(reflectionProperty);
-
- MemberInfo[] accessors = new MemberInfo[] { reflectionProperty.UnderlyingGetMethod, reflectionProperty.UnderlyingSetMethod };
- return new LazyMemberInfo(MemberTypes.Property, accessors);
- }
- else
- {
- return new LazyMemberInfo(reflectionMember.UnderlyingMember.MemberType, reflectionMember.UnderlyingMember);
- }
- }
-
- public static LazyMemberInfo ToLazyMember(this MemberInfo member)
- {
- Assumes.NotNull(member);
-
- if (member.MemberType == MemberTypes.Property)
- {
- PropertyInfo property = member as PropertyInfo;
- Assumes.NotNull(property);
-
- MemberInfo[] accessors = new MemberInfo[] { property.GetGetMethod(true), property.GetSetMethod(true)};
- return new LazyMemberInfo(MemberTypes.Property, accessors);
- }
- else
- {
- return new LazyMemberInfo(member);
- }
- }
-
- public static ReflectionWritableMember ToReflectionWriteableMember(this LazyMemberInfo lazyMember)
- {
- Assumes.IsTrue((lazyMember.MemberType == MemberTypes.Field) || (lazyMember.MemberType == MemberTypes.Property));
-
- ReflectionWritableMember reflectionMember = lazyMember.ToReflectionMember() as ReflectionWritableMember;
- Assumes.NotNull(reflectionMember);
-
- return reflectionMember;
- }
-
-
- public static ReflectionProperty ToReflectionProperty(this PropertyInfo property)
- {
- Assumes.NotNull(property);
- return CreateReflectionProperty(property.GetGetMethod(true), property.GetSetMethod(true));
- }
-
- public static ReflectionProperty CreateReflectionProperty(MethodInfo getMethod, MethodInfo setMethod)
- {
- Assumes.IsTrue(getMethod != null || setMethod != null);
-
- return new ReflectionProperty(getMethod, setMethod);
- }
-
- public static ReflectionParameter ToReflectionParameter(this ParameterInfo parameter)
- {
- Assumes.NotNull(parameter);
- return new ReflectionParameter(parameter);
- }
-
- public static ReflectionMethod ToReflectionMethod(this MethodInfo method)
- {
- Assumes.NotNull(method);
- return new ReflectionMethod(method);
- }
-
- public static ReflectionField ToReflectionField(this FieldInfo field)
- {
- Assumes.NotNull(field);
- return new ReflectionField(field);
- }
-
- public static ReflectionType ToReflectionType(this Type type)
- {
- Assumes.NotNull(type);
- return new ReflectionType(type);
- }
-
- public static ReflectionWritableMember ToReflectionWritableMember(this MemberInfo member)
- {
- Assumes.NotNull(member);
- if (member.MemberType == MemberTypes.Property)
- {
- return ((PropertyInfo)member).ToReflectionProperty();
- }
-
- return ((FieldInfo)member).ToReflectionField();
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs
deleted file mode 100644
index 1cac368..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionField : ReflectionWritableMember
- {
- private readonly FieldInfo _field;
-
- public ReflectionField(FieldInfo field)
- {
- Assumes.NotNull(field);
-
- this._field = field;
- }
-
- public FieldInfo UndelyingField
- {
- get { return this._field; }
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this.UndelyingField; }
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool CanWrite
- {
- get { return !this.UndelyingField.IsInitOnly; }
- }
-
- public override bool RequiresInstance
- {
- get { return !this.UndelyingField.IsStatic; }
- }
-
- public override Type ReturnType
- {
- get { return this.UndelyingField.FieldType; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Field; }
- }
-
- public override object GetValue(object instance)
- {
- return this.UndelyingField.SafeGetValue(instance);
- }
-
- public override void SetValue(object instance, object value)
- {
- this.UndelyingField.SafeSetValue(instance, value);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs
deleted file mode 100644
index 0ab5ca4..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionImportDefinition.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionImportDefinition : ContractBasedImportDefinition, ICompositionElement
- {
- private readonly ICompositionElement _origin;
-
- public ReflectionImportDefinition(
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- bool isPrerequisite,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, isPrerequisite, requiredCreationPolicy)
- {
- this._origin = origin;
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- public abstract ImportingItem ToImportingItem();
-
- protected abstract string GetDisplayName();
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs
deleted file mode 100644
index 3d649af..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItem.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionItem
- {
- public abstract string Name { get; }
- public abstract string GetDisplayName();
- public abstract Type ReturnType { get; }
- public abstract ReflectionItemType ItemType { get; }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs
deleted file mode 100644
index 2e7eaf4..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionItemType.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal enum ReflectionItemType : int
- {
- Parameter = 0,
- Field = 1,
- Property = 2,
- Method = 3,
- Type = 4,
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs
deleted file mode 100644
index c34abc5..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMember.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionMember : ReflectionItem
- {
- public abstract bool CanRead
- {
- get;
- }
-
- public Type DeclaringType
- {
- get { return this.UnderlyingMember.DeclaringType; }
- }
-
- public override string Name
- {
- get { return this.UnderlyingMember.Name; }
- }
-
- public override string GetDisplayName()
- {
- return this.UnderlyingMember.GetDisplayName();
- }
-
- public abstract bool RequiresInstance
- {
- get;
- }
-
- public abstract MemberInfo UnderlyingMember { get; }
-
- public abstract object GetValue(object instance);
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs
deleted file mode 100644
index 5f94b86..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Hosting;
-using System.ComponentModel.Composition.Primitives;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionMemberExportDefinition : ExportDefinition, ICompositionElement
- {
- private readonly LazyMemberInfo _member;
- private readonly ExportDefinition _exportDefinition;
- private readonly ICompositionElement _origin;
- private IDictionary<string, object> _metadata;
-
- public ReflectionMemberExportDefinition(LazyMemberInfo member, ExportDefinition exportDefinition, ICompositionElement origin)
- {
- Assumes.NotNull(exportDefinition);
-
- this._member = member;
- this._exportDefinition = exportDefinition;
- this._origin = origin;
- }
-
- public override string ContractName
- {
- get { return this._exportDefinition.ContractName; }
- }
-
- public LazyMemberInfo ExportingLazyMember
- {
- get { return this._member; }
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- if (this._metadata == null)
- {
- var metadata = this._exportDefinition.Metadata ?? MetadataServices.EmptyMetadata;
- this._metadata = metadata.AsReadOnly();
- }
- return this._metadata;
- }
- }
-
- string ICompositionElement.DisplayName
- {
- get { return this.GetDisplayName(); }
- }
-
- ICompositionElement ICompositionElement.Origin
- {
- get { return this._origin; }
- }
-
- public override string ToString()
- {
- return this.GetDisplayName();
- }
-
- public ExportingMember ToExportingMember()
- {
- return new ExportingMember(this, this.ToReflectionMember());
- }
-
- private ReflectionMember ToReflectionMember()
- {
- return this.ExportingLazyMember.ToReflectionMember();
- }
-
- private string GetDisplayName()
- {
- return string.Format(CultureInfo.CurrentCulture,
- "{0} (ContractName=\"{1}\")", // NOLOC
- this.ToReflectionMember().GetDisplayName(),
- this.ContractName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs
deleted file mode 100644
index 6a0558f..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using Microsoft.Internal.Collections;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionMemberImportDefinition : ReflectionImportDefinition
- {
- private LazyMemberInfo _importingLazyMember;
-
- public ReflectionMemberImportDefinition(
- LazyMemberInfo importingLazyMember,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, false, requiredCreationPolicy, origin)
- {
- Assumes.NotNull(contractName);
-
- this._importingLazyMember = importingLazyMember;
- }
-
- public override ImportingItem ToImportingItem()
- {
- ReflectionWritableMember member = this.ImportingLazyMember.ToReflectionWriteableMember();
- return new ImportingMember(this, member, new ImportType(member.ReturnType, this.Cardinality));
- }
-
- public LazyMemberInfo ImportingLazyMember
- {
- get { return this._importingLazyMember; }
- }
-
- protected override string GetDisplayName()
- {
- return string.Format(
- CultureInfo.CurrentCulture,
- "{0} (ContractName=\"{1}\")", // NOLOC
- this.ImportingLazyMember.ToReflectionMember().GetDisplayName(),
- this.ContractName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs
deleted file mode 100644
index a4893bc..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.Hosting;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-using System.ComponentModel.Composition.Primitives;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal partial class ReflectionMethod : ReflectionMember
- {
- private readonly MethodInfo _method;
-
- public ReflectionMethod(MethodInfo method)
- {
- Assumes.NotNull(method);
-
- this._method = method;
- }
-
- public MethodInfo UnderlyingMethod
- {
- get { return this._method; }
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this.UnderlyingMethod; }
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool RequiresInstance
- {
- get { return !this.UnderlyingMethod.IsStatic; }
- }
-
- public override Type ReturnType
- {
- get { return this.UnderlyingMethod.ReturnType; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Method; }
- }
-
- public override object GetValue(object instance)
- {
- return SafeCreateExportedDelegate(instance, _method);
- }
-#if !SILVERLIGHT
- [System.Security.SecuritySafeCritical]
-#endif
- private static ExportedDelegate SafeCreateExportedDelegate(object instance, MethodInfo method)
- {
- // We demand member access in place of the [SecurityCritical]
- // attribute on ExportDelegate constructor
- ReflectionInvoke.DemandMemberAccessIfNeeded(method);
-
- return new ExportedDelegate(instance, method);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs
deleted file mode 100644
index 61657e8..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs
+++ /dev/null
@@ -1,444 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
-#if !SILVERLIGHT
- [System.Security.SecurityCritical]
-#endif
- public static class ReflectionModelServices
- {
- public static Lazy<Type> GetPartType(ComposablePartDefinition partDefinition)
- {
- Requires.NotNull(partDefinition, "partDefinition");
-
- ReflectionComposablePartDefinition reflectionPartDefinition = partDefinition as ReflectionComposablePartDefinition;
- if (reflectionPartDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidPartDefinition, partDefinition.GetType()),
- "partDefinition");
- }
-
- return reflectionPartDefinition.GetLazyPartType();
- }
-
- public static bool IsDisposalRequired(ComposablePartDefinition partDefinition)
- {
- Requires.NotNull(partDefinition, "partDefinition");
-
- ReflectionComposablePartDefinition reflectionPartDefinition = partDefinition as ReflectionComposablePartDefinition;
- if (reflectionPartDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidPartDefinition, partDefinition.GetType()),
- "partDefinition");
- }
-
- return reflectionPartDefinition.IsDisposalRequired;
- }
-
- public static LazyMemberInfo GetExportingMember(ExportDefinition exportDefinition)
- {
- Requires.NotNull(exportDefinition, "exportDefinition");
-
- ReflectionMemberExportDefinition reflectionExportDefinition = exportDefinition as ReflectionMemberExportDefinition;
- if (reflectionExportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidExportDefinition, exportDefinition.GetType()),
- "exportDefinition");
- }
-
- return reflectionExportDefinition.ExportingLazyMember;
- }
-
- public static LazyMemberInfo GetImportingMember(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionMemberImportDefinition reflectionMemberImportDefinition = importDefinition as ReflectionMemberImportDefinition;
- if (reflectionMemberImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidMemberImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return reflectionMemberImportDefinition.ImportingLazyMember;
- }
-
- public static Lazy<ParameterInfo> GetImportingParameter(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionParameterImportDefinition reflectionParameterImportDefinition = importDefinition as ReflectionParameterImportDefinition;
- if (reflectionParameterImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidParameterImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return reflectionParameterImportDefinition.ImportingLazyParameter;
- }
-
- public static bool IsImportingParameter(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition;
- if (reflectionImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return (importDefinition is ReflectionParameterImportDefinition);
- }
-
- internal static bool IsExportFactoryImportDefinition(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition;
- if (reflectionImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return (importDefinition is IPartCreatorImportDefinition);
- }
-
- internal static ContractBasedImportDefinition GetPartCreatorProductImportDefinition(ImportDefinition importDefinition)
- {
- Requires.NotNull(importDefinition, "importDefinition");
-
- IPartCreatorImportDefinition partCreatorImportDefinition = importDefinition as IPartCreatorImportDefinition;
- if (partCreatorImportDefinition == null)
- {
- throw new ArgumentException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()),
- "importDefinition");
- }
-
- return partCreatorImportDefinition.ProductImportDefinition;
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ComposablePartDefinition CreatePartDefinition(
- Lazy<Type> partType,
- bool isDisposalRequired,
- Lazy<IEnumerable<ImportDefinition>> imports,
- Lazy<IEnumerable<ExportDefinition>> exports,
- Lazy<IDictionary<string, object>> metadata,
- ICompositionElement origin)
- {
- Requires.NotNull(partType, "partType");
-
- return new ReflectionComposablePartDefinition(
- new ReflectionPartCreationInfo(
- partType,
- isDisposalRequired,
- imports,
- exports,
- metadata,
- origin));
- }
-
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ExportDefinition CreateExportDefinition(
- LazyMemberInfo exportingMember,
- string contractName,
- Lazy<IDictionary<string, object>> metadata,
- ICompositionElement origin)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
- Requires.IsInMembertypeSet(exportingMember.MemberType, "exportingMember", MemberTypes.Field | MemberTypes.Property | MemberTypes.NestedType | MemberTypes.TypeInfo | MemberTypes.Method);
-
- return new ReflectionMemberExportDefinition(
- exportingMember,
- new LazyExportDefinition(contractName, metadata),
- origin);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ContractBasedImportDefinition CreateImportDefinition(
- LazyMemberInfo importingMember,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- {
- return CreateImportDefinition(importingMember, contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, requiredCreationPolicy, false, origin);
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- internal static ContractBasedImportDefinition CreateImportDefinition(
- LazyMemberInfo importingMember,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- bool isRecomposable,
- CreationPolicy requiredCreationPolicy,
- bool isExportFactory,
- ICompositionElement origin)
- {
- Requires.NotNullOrEmpty(contractName, "contractName");
- Requires.IsInMembertypeSet(importingMember.MemberType, "importingMember", MemberTypes.Property | MemberTypes.Field);
-
- if (isExportFactory)
- {
- return new PartCreatorMemberImportDefinition(
- importingMember,
- origin,
- new ContractBasedImportDefinition(
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- isRecomposable,
- false,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionMemberImportDefinition(
- importingMember,
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- isRecomposable,
- requiredCreationPolicy,
- origin);
- }
- }
-
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- public static ContractBasedImportDefinition CreateImportDefinition(
- Lazy<ParameterInfo> parameter,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- {
- return CreateImportDefinition(parameter, contractName, requiredTypeIdentity, requiredMetadata, cardinality, requiredCreationPolicy, false, origin);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
- internal static ContractBasedImportDefinition CreateImportDefinition(
- Lazy<ParameterInfo> parameter,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string, Type>> requiredMetadata,
- ImportCardinality cardinality,
- CreationPolicy requiredCreationPolicy,
- bool isExportFactory,
- ICompositionElement origin)
- {
- Requires.NotNull(parameter, "parameter");
- Requires.NotNullOrEmpty(contractName, "contractName");
-
- if (isExportFactory)
- {
- return new PartCreatorParameterImportDefinition(
- parameter,
- origin,
- new ContractBasedImportDefinition(
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- false,
- true,
- CreationPolicy.NonShared));
- }
- else
- {
- return new ReflectionParameterImportDefinition(
- parameter,
- contractName,
- requiredTypeIdentity,
- requiredMetadata,
- cardinality,
- requiredCreationPolicy,
- origin);
- }
- }
- }
- internal class ReflectionPartCreationInfo : IReflectionPartCreationInfo
- {
- private readonly Lazy<Type> _partType;
- private readonly Lazy<IEnumerable<ImportDefinition>> _imports;
- private readonly Lazy<IEnumerable<ExportDefinition>> _exports;
- private readonly Lazy<IDictionary<string, object>> _metadata;
- private readonly ICompositionElement _origin;
- private ConstructorInfo _constructor;
- private bool _isDisposalRequired;
-
- public ReflectionPartCreationInfo(
- Lazy<Type> partType,
- bool isDisposalRequired,
- Lazy<IEnumerable<ImportDefinition>> imports,
- Lazy<IEnumerable<ExportDefinition>> exports,
- Lazy<IDictionary<string, object>> metadata,
- ICompositionElement origin)
- {
- Assumes.NotNull(partType);
-
- this._partType = partType;
- this._isDisposalRequired = isDisposalRequired;
- this._imports = imports;
- this._exports = exports;
- this._metadata = metadata;
- this._origin = origin;
- }
-
- public Type GetPartType()
- {
- return this._partType.GetNotNullValue("type");
- }
-
- public Lazy<Type> GetLazyPartType()
- {
- return this._partType;
- }
-
- public ConstructorInfo GetConstructor()
- {
- if (this._constructor == null)
- {
- ConstructorInfo[] constructors = null;
- constructors = this.GetImports()
- .OfType<ReflectionParameterImportDefinition>()
- .Select(parameterImport => parameterImport.ImportingLazyParameter.Value.Member)
- .OfType<ConstructorInfo>()
- .Distinct()
- .ToArray();
-
- if (constructors.Length == 1)
- {
- this._constructor = constructors[0];
- }
- else if (constructors.Length == 0)
- {
- this._constructor = this.GetPartType().GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
- }
- }
- return this._constructor;
- }
-
- public bool IsDisposalRequired
- {
- get
- {
- return this._isDisposalRequired;
- }
- }
-
- public IDictionary<string, object> GetMetadata()
- {
- return (this._metadata != null) ? this._metadata.Value : null;
- }
-
- public IEnumerable<ExportDefinition> GetExports()
- {
- if (this._exports == null)
- {
- yield break;
- }
-
- IEnumerable<ExportDefinition> exports = this._exports.Value;
-
- if (exports == null)
- {
- yield break;
- }
-
- foreach (ExportDefinition export in exports)
- {
- ReflectionMemberExportDefinition reflectionExport = export as ReflectionMemberExportDefinition;
- if (reflectionExport == null)
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidExportDefinition, export.GetType()));
- }
- yield return reflectionExport;
- }
- }
-
- public IEnumerable<ImportDefinition> GetImports()
- {
- if (this._imports == null)
- {
- yield break;
- }
-
- IEnumerable<ImportDefinition> imports = this._imports.Value;
-
- if (imports == null)
- {
- yield break;
- }
-
- foreach (ImportDefinition import in imports)
- {
- ReflectionImportDefinition reflectionImport = import as ReflectionImportDefinition;
- if (reflectionImport == null)
- {
- throw new InvalidOperationException(
- string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidMemberImportDefinition, import.GetType()));
- }
- yield return reflectionImport;
- }
- }
-
- public string DisplayName
- {
- get { return this.GetPartType().GetDisplayName(); }
- }
-
- public ICompositionElement Origin
- {
- get { return this._origin; }
- }
- }
-
- internal class LazyExportDefinition : ExportDefinition
- {
- private readonly Lazy<IDictionary<string, object>> _metadata;
-
- public LazyExportDefinition(string contractName, Lazy<IDictionary<string, object>> metadata)
- : base(contractName, (IDictionary<string, object>)null)
- {
- this._metadata = metadata;
- }
-
- public override IDictionary<string, object> Metadata
- {
- get
- {
- return this._metadata.Value;
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs
deleted file mode 100644
index 0d5fbf3..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionParameter : ReflectionItem
- {
- private readonly ParameterInfo _parameter;
-
- public ReflectionParameter(ParameterInfo parameter)
- {
- Assumes.NotNull(parameter);
-
- this._parameter = parameter;
- }
-
- public ParameterInfo UnderlyingParameter
- {
- get { return this._parameter; }
- }
-
- public override string Name
- {
- get { return this.UnderlyingParameter.Name; }
- }
-
- public override string GetDisplayName()
- {
- return string.Format(
- CultureInfo.CurrentCulture,
- "{0} (Parameter=\"{1}\")", // NOLOC
- this.UnderlyingParameter.Member.GetDisplayName(),
- this.UnderlyingParameter.Name);
- }
-
- public override Type ReturnType
- {
- get { return this.UnderlyingParameter.ParameterType; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Parameter; }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs
deleted file mode 100644
index 42eadff..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Globalization;
-using System.Reflection;
-using Microsoft.Internal;
-using System.ComponentModel.Composition.ReflectionModel;
-using System.Collections.Generic;
-using System.ComponentModel.Composition.Primitives;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionParameterImportDefinition : ReflectionImportDefinition
- {
- private Lazy<ParameterInfo> _importingLazyParameter;
-
- public ReflectionParameterImportDefinition(
- Lazy<ParameterInfo> importingLazyParameter,
- string contractName,
- string requiredTypeIdentity,
- IEnumerable<KeyValuePair<string,Type>> requiredMetadata,
- ImportCardinality cardinality,
- CreationPolicy requiredCreationPolicy,
- ICompositionElement origin)
- : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, false, true, requiredCreationPolicy, origin)
- {
- Assumes.NotNull(importingLazyParameter);
-
- this._importingLazyParameter = importingLazyParameter;
- }
-
- public override ImportingItem ToImportingItem()
- {
- return new ImportingParameter(this, new ImportType(this.ImportingLazyParameter.GetNotNullValue("parameter").ParameterType, this.Cardinality));
- }
-
- public Lazy<ParameterInfo> ImportingLazyParameter
- {
- get { return this._importingLazyParameter; }
- }
-
- protected override string GetDisplayName()
- {
- ParameterInfo parameter = this.ImportingLazyParameter.GetNotNullValue("parameter");
- return string.Format(
- CultureInfo.CurrentCulture,
- "{0} (Parameter=\"{1}\", ContractName=\"{2}\")", // NOLOC
- parameter.Member.GetDisplayName(),
- parameter.Name,
- this.ContractName);
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs
deleted file mode 100644
index 6daa34b..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionProperty.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- // Instead of representing properties as an actual PropertyInfo, we need to
- // represent them as two MethodInfo objects one for each accessor. This is so
- // that cached attribute part can go from a metadata token -> XXXInfo without
- // needing to walk all members of a particular type. Unfortunately, (probably
- // because you never see one of them in an IL stream), Reflection does not allow
- // you to go from a metadata token -> PropertyInfo like it does with types,
- // fields, and methods.
-
- internal class ReflectionProperty : ReflectionWritableMember
- {
- private readonly MethodInfo _getMethod;
- private readonly MethodInfo _setMethod;
-
- public ReflectionProperty(MethodInfo getMethod, MethodInfo setMethod)
- {
- Assumes.IsTrue(getMethod != null || setMethod != null);
-
- this._getMethod = getMethod;
- this._setMethod = setMethod;
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this.UnderlyingGetMethod ?? this.UnderlyingSetMethod; }
- }
-
- public override bool CanRead
- {
- get { return this.UnderlyingGetMethod != null; }
- }
-
- public override bool CanWrite
- {
- get { return this.UnderlyingSetMethod != null; }
- }
-
- public MethodInfo UnderlyingGetMethod
- {
- get { return this._getMethod; }
- }
-
- public MethodInfo UnderlyingSetMethod
- {
- get { return this._setMethod; }
- }
-
- public override string Name
- {
- get
- {
- MethodInfo method = this.UnderlyingGetMethod ?? this.UnderlyingSetMethod;
-
- string name = method.Name;
-
- Assumes.IsTrue(name.Length > 4);
-
- // Remove 'get_' or 'set_'
- return name.Substring(4);
- }
- }
-
- public override string GetDisplayName()
- {
- return ReflectionServices.GetDisplayName(this.DeclaringType, this.Name);
- }
-
- public override bool RequiresInstance
- {
- get
- {
- MethodInfo method = this.UnderlyingGetMethod ?? this.UnderlyingSetMethod;
-
- return !method.IsStatic;
- }
- }
-
- public override Type ReturnType
- {
- get
- {
- if (this.UnderlyingGetMethod != null)
- {
- return this.UnderlyingGetMethod.ReturnType;
- }
-
- ParameterInfo[] parameters = this.UnderlyingSetMethod.GetParameters();
-
- Assumes.IsTrue(parameters.Length > 0);
-
- return parameters[parameters.Length - 1].ParameterType;
- }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Property; }
- }
-
- public override object GetValue(object instance)
- {
- Assumes.NotNull(this._getMethod);
-
- return this.UnderlyingGetMethod.SafeInvoke(instance);
- }
-
- public override void SetValue(object instance, object value)
- {
- Assumes.NotNull(this._setMethod);
-
- this.UnderlyingSetMethod.SafeInvoke(instance, value);
- }
-
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs
deleted file mode 100644
index 047333a..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.ComponentModel.Composition.AttributedModel;
-using System.Reflection;
-using Microsoft.Internal;
-using System.Threading;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal class ReflectionType : ReflectionMember
- {
- private Type _type;
-
- public ReflectionType(Type type)
- {
- Assumes.NotNull(type);
-
- this._type = type;
- }
-
- public override MemberInfo UnderlyingMember
- {
- get { return this._type; }
- }
-
- public Type UnderlyingType
- {
- get { return this._type; }
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool RequiresInstance
- {
- get { return true; }
- }
-
- public override Type ReturnType
- {
- get { return this._type; }
- }
-
- public override ReflectionItemType ItemType
- {
- get { return ReflectionItemType.Type; }
- }
-
- public override object GetValue(object instance)
- {
- return instance;
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs b/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs
deleted file mode 100644
index b8cf56d..0000000
--- a/System.ComponentModel.Composition/System/ComponentModel/Composition/ReflectionModel/ReflectionWritableMember.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Reflection;
-using Microsoft.Internal;
-
-namespace System.ComponentModel.Composition.ReflectionModel
-{
- internal abstract class ReflectionWritableMember : ReflectionMember
- {
- public abstract bool CanWrite
- {
- get;
- }
-
- public abstract void SetValue(object instance, object value);
- }
-}
diff --git a/System.ComponentModel.Composition/System/Lazy.cs b/System.ComponentModel.Composition/System/Lazy.cs
deleted file mode 100644
index 369e7d1..0000000
--- a/System.ComponentModel.Composition/System/Lazy.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !CLR40
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using Microsoft.Internal;
-
-namespace System
-{
- public class Lazy<T>
- {
- private T _value = default(T);
- private volatile bool _isValueCreated = false;
- private Func<T> _valueFactory = null;
- private object _lock;
-
- public Lazy()
- : this(() => Activator.CreateInstance<T>())
- {
- }
-
- public Lazy(bool isThreadSafe)
- : this(() => Activator.CreateInstance<T>(), isThreadSafe)
- {
- }
-
- public Lazy(Func<T> valueFactory):
- this(valueFactory, true)
- {
- }
-
- public Lazy(Func<T> valueFactory, bool isThreadSafe)
- {
- Requires.NotNull(valueFactory, "valueFactory");
- if(isThreadSafe)
- {
- this._lock = new object();
- }
-
- this._valueFactory = valueFactory;
- }
-
-
- public T Value
- {
- get
- {
- if (!this._isValueCreated)
- {
- if(this._lock != null)
- {
- Monitor.Enter(this._lock);
- }
-
- try
- {
- T value = this._valueFactory.Invoke();
- this._valueFactory = null;
- Thread.MemoryBarrier();
- this._value = value;
- this._isValueCreated = true;
- }
- finally
- {
- if(this._lock != null)
- {
- Monitor.Exit(this._lock);
- }
- }
- }
- return this._value;
- }
- }
- }
-}
-#endif
diff --git a/System.ComponentModel.Composition/System/LazyOfTTMetadata.cs b/System.ComponentModel.Composition/System/LazyOfTTMetadata.cs
deleted file mode 100644
index 24221c6..0000000
--- a/System.ComponentModel.Composition/System/LazyOfTTMetadata.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace System
-{
-#if CLR40 && !SILVERLIGHT
- [Serializable]
-#endif
- public class Lazy<T, TMetadata> : Lazy<T>
- {
- private TMetadata _metadata;
-
- public Lazy(Func<T> valueFactory, TMetadata metadata) :
- base(valueFactory)
- {
- this._metadata = metadata;
- }
-
- public Lazy(TMetadata metadata) :
- base()
- {
- this._metadata = metadata;
- }
-
-
- public Lazy(TMetadata metadata, bool isThreadSafe) :
- base(isThreadSafe)
- {
- this._metadata = metadata;
- }
-
- public Lazy(Func<T> valueFactory, TMetadata metadata, bool isThreadSafe) :
- base(valueFactory, isThreadSafe)
- {
- this._metadata = metadata;
- }
-
- public TMetadata Metadata
- {
- get
- {
- return this._metadata;
- }
- }
- }
-}
diff --git a/System.ComponentModel.Composition/System/Tuple.cs b/System.ComponentModel.Composition/System/Tuple.cs
deleted file mode 100644
index 1ce2dea..0000000
--- a/System.ComponentModel.Composition/System/Tuple.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -----------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// -----------------------------------------------------------------------
-#if !CLR40
-using System;
-
-namespace System
-{
- // This is a very minimalistic implementation of Tuple'2 that allows us
- // to compile and work on versions of .Net eariler then 4.0.
- public struct Tuple<TItem1, TItem2>
- {
- public Tuple(TItem1 item1, TItem2 item2)
- {
- this = new Tuple<TItem1, TItem2>();
- this.Item1 = item1;
- this.Item2 = item2;
- }
-
- public TItem1 Item1 { get; private set; }
- public TItem2 Item2 { get; private set; }
-
- public override bool Equals(object obj)
- {
- if (obj is Tuple<TItem1, TItem2>)
- {
- Tuple<TItem1, TItem2> that = (Tuple<TItem1, TItem2>)obj;
- return object.Equals(this.Item1, that.Item1) && object.Equals(this.Item2, that.Item2);
- }
- else
- {
- return false;
- }
- }
-
- public override int GetHashCode()
- {
- return ((this.Item1 != null) ? this.Item1.GetHashCode() : 0) ^ ((this.Item2 != null) ? this.Item2.GetHashCode() : 0);
- }
-
- public static bool operator ==(Tuple<TItem1, TItem2> left, Tuple<TItem1, TItem2> right)
- {
- return left.Equals(right);
- }
-
- public static bool operator !=(Tuple<TItem1, TItem2> left, Tuple<TItem1, TItem2> right)
- {
- return !left.Equals(right);
- }
- }
-}
-#endif
\ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..a9f93bf
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,776 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
+[m4_warning([this file was generated for autoconf 2.65.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index c90d3a8..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,141 +0,0 @@
-#! /bin/sh
-
-# Compares software version numbers
-# 10 means EQUAL
-# 11 means GREATER THAN
-# 9 means LESS THAN
-check_version() {
- test -z "$1" && return 1
- local ver1=$1
- while test `echo $ver1 | egrep -c [^0123456789.]` -gt 0 ; do
- char=`echo $ver1 | sed 's/.*\([^0123456789.]\).*/\1/'`
- char_dec=`echo -n "$char" | od -b | head -1 | awk {'print $2'}`
- ver1=`echo $ver1 | sed "s/$char/.$char_dec/g"`
- done
- test -z "$2" && return 1
- local ver2=$2
- while test `echo $ver2 | egrep -c [^0123456789.]` -gt 0 ; do
- char=`echo $ver2 | sed 's/.*\([^0123456789.]\).*/\1/'`
- char_dec=`echo -n "$char" | od -b | head -1 | awk {'print $2'}`
- ver2=`echo $ver2 | sed "s/$char/.$char_dec/g"`
- done
-
- ver1=`echo $ver1 | sed 's/\.\./.0/g'`
- ver2=`echo $ver2 | sed 's/\.\./.0/g'`
-
- do_version_check "$ver1" "$ver2"
-}
-
-do_version_check() {
-
- test "$1" -eq "$2" && return 10
-
- ver1front=`echo $1 | cut -d "." -f -1`
- ver1back=`echo $1 | cut -d "." -f 2-`
- ver2front=`echo $2 | cut -d "." -f -1`
- ver2back=`echo $2 | cut -d "." -f 2-`
-
- if test "$ver1front" != "$1" || test "$ver2front" != "$2" ; then
- test "$ver1front" -gt "$ver2front" && return 11
- test "$ver1front" -lt "$ver2front" && return 9
-
- test "$ver1front" -eq "$1" || test -z "$ver1back" && ver1back=0
- test "$ver2front" -eq "$2" || test -z "$ver2back" && ver2back=0
- do_version_check "$ver1back" "$ver2back"
- return $?
- else
- test "$1" -gt "$2" && return 11 || return 9
- fi
-}
-
-PROJECT=Pinta
-FILE=
-CONFIGURE=configure.ac
-
-: ${AUTOCONF=autoconf}
-: ${AUTOHEADER=autoheader}
-: ${AUTOMAKE=automake}
-: ${ACLOCAL=aclocal}
-: ${MONO=mono}
-: ${XBUILD=xbuild}
-
-DIE=0
-
-($AUTOCONF --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have autoconf installed to compile $PROJECT."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have automake installed to compile $PROJECT."
- echo "Get ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
-}
-
-($MONO --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have mono runtime installed to compile $PROJECT."
- DIE=1
-}
-
-($XBUILD /version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have mono-xbuild installed to compile $PROJECT."
- DIE=1
-}
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-xbuild_version=`xbuild /version | grep '^XBuild' | egrep -o '([0-9]+\.?){2,}'`
-check_version "$xbuild_version" "2.4" 2> /dev/null
-if test $? -eq 9; then
- echo
- echo "A newer version of XBuild is required to build $PROJECT ( >= 2.4 )"
- exit 1
-fi
-
-mono_version=`xbuild /version | grep '^Mono' | egrep -o '([0-9]+\.?){2,}'`
-check_version "$xbuild_version" "2.4" 2> /dev/null
-if test $? -eq 9; then
- echo
- echo "A newer version of Mono is required to run $PROJECT ( >= 2.4 )"
- exit 1
-fi
-
-#Check directoy
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-TEST_TYPE=-f
-aclocalinclude="-I . $ACLOCAL_FLAGS"
-
-test $TEST_TYPE $FILE || {
- echo "You must run this script in the top-level $PROJECT directory"
- exit 1
-}
-
-if test -z "$*"; then
- echo "I am going to run ./configure with no arguments - if you wish "
- echo "to pass any to it, please specify them on the $0 command line."
-fi
-
-echo "Running $ACLOCAL $aclocalinclude ..."
-$ACLOCAL $aclocalinclude
-
-echo "Running $AUTOMAKE --gnu $am_opt ..."
-$AUTOMAKE --add-missing --gnu $am_opt
-
-echo "Running $AUTOCONF ..."
-$AUTOCONF
-
-echo Running $srcdir/configure $conf_flags "$@" ...
-$srcdir/configure $conf_flags "$@"
diff --git a/configure b/configure
new file mode 100755
index 0000000..70bfc99
--- /dev/null
+++ b/configure
@@ -0,0 +1,4078 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.65 for pinta 0.6.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='pinta'
+PACKAGE_TARNAME='pinta'
+PACKAGE_VERSION='0.6'
+PACKAGE_STRING='pinta 0.6'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_default_prefix=/usr
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+MONO_CAIRO_LIBS
+MONO_CAIRO_CFLAGS
+GTK_SHARP_20_LIBS
+GTK_SHARP_20_CFLAGS
+GLIB_SHARP_20_LIBS
+GLIB_SHARP_20_CFLAGS
+MONO_LIBS
+MONO_CFLAGS
+MONO
+XBUILD
+PKG_CONFIG
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+PKG_CONFIG
+MONO_CFLAGS
+MONO_LIBS
+GLIB_SHARP_20_CFLAGS
+GLIB_SHARP_20_LIBS
+GTK_SHARP_20_CFLAGS
+GTK_SHARP_20_LIBS
+MONO_CAIRO_CFLAGS
+MONO_CAIRO_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # 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 pinta 0.6 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/pinta]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of pinta 0.6:";;
+ esac
+ cat <<\_ACEOF
+
+Some influential environment variables:
+ PKG_CONFIG path to pkg-config utility
+ MONO_CFLAGS C compiler flags for MONO, overriding pkg-config
+ MONO_LIBS linker flags for MONO, overriding pkg-config
+ GLIB_SHARP_20_CFLAGS
+ C compiler flags for GLIB_SHARP_20, overriding pkg-config
+ GLIB_SHARP_20_LIBS
+ linker flags for GLIB_SHARP_20, overriding pkg-config
+ GTK_SHARP_20_CFLAGS
+ C compiler flags for GTK_SHARP_20, overriding pkg-config
+ GTK_SHARP_20_LIBS
+ linker flags for GTK_SHARP_20, overriding pkg-config
+ MONO_CAIRO_CFLAGS
+ C compiler flags for MONO_CAIRO, overriding pkg-config
+ MONO_CAIRO_LIBS
+ linker flags for MONO_CAIRO, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+pinta configure 0.6
+generated by GNU Autoconf 2.65
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by pinta $as_me 0.6, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ for ac_t in install-sh install.sh shtool; do
+ if test -f "$ac_dir/$ac_t"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/$ac_t -c"
+ break 2
+ fi
+ done
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='pinta'
+ VERSION='0.6'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+$as_echo_n "checking how to create a ustar tar archive... " >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar plaintar pax cpio none'
+_am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x ustar -w "$$tardir"'
+ am__tar_='pax -L -x ustar -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+ am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+ am__untar='cpio -i -H ustar -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_ustar}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if test "${am_cv_prog_tar_ustar+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_prog_tar_ustar=$_am_tool
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+$as_echo "$am_cv_prog_tar_ustar" >&6; }
+
+
+
+
+
+
+
+
+
+# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "x$PKG_CONFIG" = "xno"; then
+ as_fn_error "You need to install pkg-config" "$LINENO" 5
+fi
+
+# Extract the first word of "xbuild", so it can be a program name with args.
+set dummy xbuild; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XBUILD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XBUILD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XBUILD="$XBUILD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_XBUILD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_XBUILD" && ac_cv_path_XBUILD="no"
+ ;;
+esac
+fi
+XBUILD=$ac_cv_path_XBUILD
+if test -n "$XBUILD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XBUILD" >&5
+$as_echo "$XBUILD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "mono", so it can be a program name with args.
+set dummy mono; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MONO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MONO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MONO="$MONO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_MONO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_MONO" && ac_cv_path_MONO="no"
+ ;;
+esac
+fi
+MONO=$ac_cv_path_MONO
+if test -n "$MONO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MONO" >&5
+$as_echo "$MONO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x$XBUILD" = "xno"; then
+ as_fn_error "XBuild not found" "$LINENO" 5
+fi
+
+if test "x$MONO" = "xno"; then
+ as_fn_error "No mono runtime found" "$LINENO" 5
+fi
+
+# Check Mono version
+MONO_MINIMUM_VERSION=2.6.7
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO" >&5
+$as_echo_n "checking for MONO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_CFLAGS"; then
+ pkg_cv_MONO_CFLAGS="$MONO_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono >= \$MONO_MINIMUM_VERSION\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono >= $MONO_MINIMUM_VERSION") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_CFLAGS=`$PKG_CONFIG --cflags "mono >= $MONO_MINIMUM_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_LIBS"; then
+ pkg_cv_MONO_LIBS="$MONO_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono >= \$MONO_MINIMUM_VERSION\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono >= $MONO_MINIMUM_VERSION") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_LIBS=`$PKG_CONFIG --libs "mono >= $MONO_MINIMUM_VERSION" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono >= $MONO_MINIMUM_VERSION"`
+ else
+ MONO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono >= $MONO_MINIMUM_VERSION"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (mono >= $MONO_MINIMUM_VERSION) were not met:
+
+$MONO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_CFLAGS
+and MONO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_CFLAGS
+and MONO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ MONO_CFLAGS=$pkg_cv_MONO_CFLAGS
+ MONO_LIBS=$pkg_cv_MONO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB_SHARP_20" >&5
+$as_echo_n "checking for GLIB_SHARP_20... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GLIB_SHARP_20_CFLAGS"; then
+ pkg_cv_GLIB_SHARP_20_CFLAGS="$GLIB_SHARP_20_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GLIB_SHARP_20_CFLAGS=`$PKG_CONFIG --cflags "glib-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GLIB_SHARP_20_LIBS"; then
+ pkg_cv_GLIB_SHARP_20_LIBS="$GLIB_SHARP_20_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GLIB_SHARP_20_LIBS=`$PKG_CONFIG --libs "glib-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-sharp-2.0"`
+ else
+ GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-sharp-2.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GLIB_SHARP_20_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (glib-sharp-2.0) were not met:
+
+$GLIB_SHARP_20_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLIB_SHARP_20_CFLAGS
+and GLIB_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLIB_SHARP_20_CFLAGS
+and GLIB_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ GLIB_SHARP_20_CFLAGS=$pkg_cv_GLIB_SHARP_20_CFLAGS
+ GLIB_SHARP_20_LIBS=$pkg_cv_GLIB_SHARP_20_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK_SHARP_20" >&5
+$as_echo_n "checking for GTK_SHARP_20... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTK_SHARP_20_CFLAGS"; then
+ pkg_cv_GTK_SHARP_20_CFLAGS="$GTK_SHARP_20_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_SHARP_20_CFLAGS=`$PKG_CONFIG --cflags "gtk-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTK_SHARP_20_LIBS"; then
+ pkg_cv_GTK_SHARP_20_LIBS="$GTK_SHARP_20_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GTK_SHARP_20_LIBS=`$PKG_CONFIG --libs "gtk-sharp-2.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk-sharp-2.0"`
+ else
+ GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk-sharp-2.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTK_SHARP_20_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (gtk-sharp-2.0) were not met:
+
+$GTK_SHARP_20_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GTK_SHARP_20_CFLAGS
+and GTK_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GTK_SHARP_20_CFLAGS
+and GTK_SHARP_20_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ GTK_SHARP_20_CFLAGS=$pkg_cv_GTK_SHARP_20_CFLAGS
+ GTK_SHARP_20_LIBS=$pkg_cv_GTK_SHARP_20_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_CAIRO" >&5
+$as_echo_n "checking for MONO_CAIRO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_CAIRO_CFLAGS"; then
+ pkg_cv_MONO_CAIRO_CFLAGS="$MONO_CAIRO_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono-cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "mono-cairo" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$MONO_CAIRO_LIBS"; then
+ pkg_cv_MONO_CAIRO_LIBS="$MONO_CAIRO_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-cairo\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mono-cairo") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_MONO_CAIRO_LIBS=`$PKG_CONFIG --libs "mono-cairo" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-cairo"`
+ else
+ MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-cairo"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$MONO_CAIRO_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (mono-cairo) were not met:
+
+$MONO_CAIRO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables MONO_CAIRO_CFLAGS
+and MONO_CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables MONO_CAIRO_CFLAGS
+and MONO_CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ MONO_CAIRO_CFLAGS=$pkg_cv_MONO_CAIRO_CFLAGS
+ MONO_CAIRO_LIBS=$pkg_cv_MONO_CAIRO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+ac_config_files="$ac_config_files Makefile pinta"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by pinta $as_me 0.6, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+pinta config.status 0.6
+configured by $0, generated by GNU Autoconf 2.65,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "pinta") CONFIG_FILES="$CONFIG_FILES pinta" ;;
+
+ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES "
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+cat <<EOF
+
+${PACKAGE}-${VERSION}
+
+ Build Environment
+ Install Prefix: ${prefix}
+ XBuild Path: ${XBUILD}
+ Mono Runtime: ${MONO}
+ Launch Script: ${prefix}/bin/${PACKAGE}
+ Installation Directory: ${prefix}/lib/${PACKAGE}/
+
+EOF
diff --git a/configure.ac b/configure.ac
index d9f0637..7ae676a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,8 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([pinta], [0.5])
+AC_INIT([pinta], [0.6])
AM_INIT_AUTOMAKE([tar-ustar foreign])
+AC_PREFIX_DEFAULT([/usr])
AC_PROG_INSTALL
dnl pkg-config
@@ -22,7 +23,7 @@ if test "x$MONO" = "xno"; then
fi
# Check Mono version
-MONO_MINIMUM_VERSION=2.4
+MONO_MINIMUM_VERSION=2.6.7
PKG_CHECK_MODULES(MONO, mono >= $MONO_MINIMUM_VERSION)
AC_SUBST(XBUILD)
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..6781b98
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/missing b/missing
new file mode 100755
index 0000000..28055d2
--- /dev/null
+++ b/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# 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, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+ lex*|yacc*)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar*)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te*)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison*|yacc*)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex*|flex*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit $?
+ fi
+ ;;
+
+ makeinfo*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar*)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/po/messages-ar.po b/po/messages-ar.po
index 43bf0eb..b909618 100644
--- a/po/messages-ar.po
+++ b/po/messages-ar.po
@@ -7,669 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
"PO-Revision-Date: 2010-09-07 11:00+0000\n"
"Last-Translator: daifallah <daif55 at gmail.com>\n"
"Language-Team: Arabic <ar at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "حول البرنامج"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "فرشاة تلوين"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_ملف"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_حرر"
-
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "ا_عرض"
-
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "الصورة"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr ""
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "ال_طبقات"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "تأثيرات"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_نافذة"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "م_ساعدة"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "ادوات"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "لوح ألوان"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "المستندات"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "الطبقات"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "غيّر حجم الصورة"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "التاريخ"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "أخفِ"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "عائم"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "اخفاء تلقائي"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "المساهمون في هذه الإصداره"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "المساهمون السابقون"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-"Launchpad Contributions:\n"
-" daifallah https://launchpad.net/~daif"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "ترجمة:"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "حول بينتا"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "معلومات النسخة"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "العنوان"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "الإصدار"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "المسار"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "الترخيص"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "حقوق النشر"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "بواسطة مساهمين بينتا"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "غيّر حجم الصورة"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "بالنسبة المئوية"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "العرض:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "بكسل"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "الطول:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "حافظ على نسبة الطول إلى العرض"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "خصائص الطبقة"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "الاسم:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "مرئي"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "صوره جديده"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "حجم الصوره الجديده "
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "شفافية الطبقة"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "غيّر اسم الطبقة"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "أخف الطبقة"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "حول البرنامج"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "لوح ألوان"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "صوره جديده"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr ""
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -677,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -703,543 +680,711 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr ""
-
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "فرشاة تلوين"
+
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "أخفِ"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "اخفاء تلقائي"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "عائم"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "بالنسبة المئوية"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "العرض:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "بكسل"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "الطول:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "حافظ على نسبة الطول إلى العرض"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "حجم الصوره الجديده "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "خصائص الطبقة"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "الاسم:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "مرئي"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_ملف"
+
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_حرر"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "ا_عرض"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "الصورة"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "ال_طبقات"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "تأثيرات"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_نافذة"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "م_ساعدة"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "ادوات"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "المستندات"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "الطبقات"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "التاريخ"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "شفافية الطبقة"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "غيّر اسم الطبقة"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "أخف الطبقة"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "الإصدار"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "الترخيص"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "حقوق النشر"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "بواسطة مساهمين بينتا"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "العنوان"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "المسار"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "المساهمون في هذه الإصداره"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "المساهمون السابقون"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" daifallah https://launchpad.net/~daif"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "ترجمة:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "حول بينتا"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "معلومات النسخة"
+
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
#: PolarInversionEffect dialog
diff --git a/po/messages.pot b/po/messages-br.po
similarity index 69%
copy from po/messages.pot
copy to po/messages-br.po
index 8ea8d21..b8a4c43 100644
--- a/po/messages.pot
+++ b/po/messages-br.po
@@ -1,383 +1,383 @@
-# Pinta Translatable Strings
-# Copyright (C) 2010 Pinta Contributors
-# This file is distributed under the same license as the Pinta package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Breton translation for pinta
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the pinta package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2010.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: pinta\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2010-10-31 12:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2011-01-04 23:41+0000\n"
+"Last-Translator: Alan <Unknown>\n"
+"Language-Team: Breton <br at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
#: Pinta.Core/Classes/DocumentWorkspace.cs:160
#: Pinta.Core/Classes/DocumentWorkspace.cs:181
#: Pinta.Core/Actions/ViewActions.cs:200
msgid "Window"
-msgstr ""
+msgstr "Prenestr"
#: Pinta.Core/Classes/Document.cs:299
msgid "Layer"
-msgstr ""
+msgstr "Treuzfollenn"
#: Pinta.Core/Classes/Document.cs:367
msgid "copy"
-msgstr ""
+msgstr "eilañ"
#: Pinta.Core/Classes/Document.cs:589
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
msgid "Resize Canvas"
-msgstr ""
+msgstr "Adventañ ar steuenn"
#: Pinta.Core/Classes/BaseTool.cs:146
msgid "Tool"
-msgstr ""
+msgstr "Benveg"
#: Pinta.Core/Classes/BaseTool.cs:204
msgid "Shortcut key"
-msgstr ""
+msgstr "Berradenn glavier"
#: Pinta.Core/Classes/BaseTool.cs:227
msgid "Normal Blending"
-msgstr ""
+msgstr "Meskadur reizh"
#: Pinta.Core/Classes/BaseTool.cs:228
msgid "Overwrite"
-msgstr ""
+msgstr "Flastrañ"
#: Pinta.Core/Classes/BaseTool.cs:242
msgid "Antialiasing On"
-msgstr ""
+msgstr "Gweredekaat al lufrañ"
#: Pinta.Core/Classes/BaseTool.cs:243
msgid "Antialiasing Off"
-msgstr ""
+msgstr "Diweredekaat al lufrañ"
#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
msgid "Resize Image"
-msgstr ""
+msgstr "Adventañ ar skeudenn"
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
msgid "Finish Pixels"
-msgstr ""
+msgstr "Peurlipat ar pikselioù"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
#: Pinta.Core/Actions/ImageActions.cs:65
msgid "Rotate 180°"
-msgstr ""
+msgstr "C'hwelañ dre 180°"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
msgid "Flip Image Horizontal"
-msgstr ""
+msgstr "Gwintañ ar skeudenn a-zremm"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
msgid "Flip Image Vertical"
-msgstr ""
+msgstr "Gwintañ ar skeudenn a-serzh"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
#: Pinta.Core/Actions/ImageActions.cs:63
msgid "Rotate 90° Clockwise"
-msgstr ""
+msgstr "C'hwelañ dre 90° gant roud ar bizied"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
#: Pinta.Core/Actions/ImageActions.cs:64
msgid "Rotate 90° Counter-Clockwise"
-msgstr ""
+msgstr "C'hwelañ dre 90° gant roud gin ar bizied"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
msgid "Flip Layer Horizontal"
-msgstr ""
+msgstr "Gwintañ an dreuzfollenn a-zremm"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
msgid "Flip Layer Vertical"
-msgstr ""
+msgstr "Gwintañ an dreuzfollenn a-serzh"
#: Pinta.Core/Effects/BaseEffect.cs:42
msgid "General"
-msgstr ""
+msgstr "Hollek"
#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
#, csharp-format
msgid "{0} image ({1})"
-msgstr ""
+msgstr "{0} skeudenn ({1})"
#: Pinta.Core/Actions/ImageActions.cs:58
#: Pinta.Core/Actions/ImageActions.cs:181
msgid "Crop to Selection"
-msgstr ""
+msgstr "Didroc'hañ ouzh an diuzad"
#: Pinta.Core/Actions/ImageActions.cs:59
msgid "Resize..."
-msgstr ""
+msgstr "Adventañ"
#: Pinta.Core/Actions/ImageActions.cs:60
msgid "Canvas Size..."
-msgstr ""
+msgstr "Ment ar steuenn..."
#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
msgid "Flip Horizontal"
-msgstr ""
+msgstr "Gwintañ a-zremm"
#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
msgid "Flip Vertical"
-msgstr ""
+msgstr "Gwintañ a-serzh"
#: Pinta.Core/Actions/ImageActions.cs:66
#: Pinta.Core/Actions/ImageActions.cs:127
msgid "Flatten"
-msgstr ""
+msgstr "Plataat"
#: Pinta.Core/Actions/ViewActions.cs:62
msgid "Zoom In"
-msgstr ""
+msgstr "Zoum brasaat"
#: Pinta.Core/Actions/ViewActions.cs:63
msgid "Zoom Out"
-msgstr ""
+msgstr "Zoum bihanaat"
#: Pinta.Core/Actions/ViewActions.cs:64
msgid "Zoom to Window"
-msgstr ""
+msgstr "Zoumañ da framm ar prenestr"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Zoom to Selection"
-msgstr ""
+msgstr "Zoumañ da framm an diuzad"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Actual Size"
-msgstr ""
+msgstr "Ment vremanel"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Toolbar"
-msgstr ""
+msgstr "Barrenn ostilhoù"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Pixel Grid"
-msgstr ""
+msgstr "Kael ar pikselioù"
#: Pinta.Core/Actions/ViewActions.cs:69
msgid "Rulers"
-msgstr ""
+msgstr "Reolennoù"
#: Pinta.Core/Actions/ViewActions.cs:70
msgid "Pixels"
-msgstr ""
+msgstr "Pikselioù"
#: Pinta.Core/Actions/ViewActions.cs:71
msgid "Inches"
-msgstr ""
+msgstr "Meutadoù"
#: Pinta.Core/Actions/ViewActions.cs:72
msgid "Centimeters"
-msgstr ""
+msgstr "Kentimetroù"
#: Pinta.Core/Actions/ViewActions.cs:73
msgid "Fullscreen"
-msgstr ""
+msgstr "Skrammad a-bezh"
#: Pinta.Core/Actions/ViewActions.cs:111
msgid "Ruler Units"
-msgstr ""
+msgstr "Unanennoù ar reolenn"
#: Pinta.Core/Actions/LayerActions.cs:64
#: Pinta.Core/Actions/LayerActions.cs:283
msgid "Add New Layer"
-msgstr ""
+msgstr "Ouzhpennañ un dreuzfollenn nevez"
#: Pinta.Core/Actions/LayerActions.cs:65
#: Pinta.Core/Actions/LayerActions.cs:266
msgid "Delete Layer"
-msgstr ""
+msgstr "Dilemel an dreuzfollenn"
#: Pinta.Core/Actions/LayerActions.cs:66
#: Pinta.Core/Actions/LayerActions.cs:257
msgid "Duplicate Layer"
-msgstr ""
+msgstr "Eilañ an dreuzfollenn"
#: Pinta.Core/Actions/LayerActions.cs:67
#: Pinta.Core/Actions/LayerActions.cs:235
msgid "Merge Layer Down"
-msgstr ""
+msgstr "Toueziañ gant an dreuzfollenn a-zindan"
#: Pinta.Core/Actions/LayerActions.cs:68
msgid "Import from File..."
-msgstr ""
+msgstr "Enporzhiañ diouzh ur restr..."
#: Pinta.Core/Actions/LayerActions.cs:71
msgid "Rotate / Zoom"
-msgstr ""
+msgstr "C'hwelañ/Zoumañ"
#: Pinta.Core/Actions/LayerActions.cs:72
#: Pinta.Core/Actions/LayerActions.cs:213
msgid "Move Layer Up"
-msgstr ""
+msgstr "Treuzfollenn d'an nec'h"
#: Pinta.Core/Actions/LayerActions.cs:73
#: Pinta.Core/Actions/LayerActions.cs:224
msgid "Move Layer Down"
-msgstr ""
+msgstr "Treuzfollenn d'an traoñ"
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
-msgstr ""
+msgid "Layer Properties..."
+msgstr "Perzhioù an dreuzfollenn..."
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
msgid "Open Image File"
-msgstr ""
+msgstr "Digeriñ ur restr skeudenn"
#: Pinta.Core/Actions/LayerActions.cs:179
msgid "Import From File"
-msgstr ""
+msgstr "Enporzhiañ diouzh ur restr"
#: Pinta.Core/Actions/WindowActions.cs:45
msgid "Save All"
-msgstr ""
+msgstr "Enrollañ an holl anezho"
#: Pinta.Core/Actions/WindowActions.cs:46
msgid "Close All"
-msgstr ""
+msgstr "Serriñ an holl anezho"
#: Pinta.Core/Actions/HelpActions.cs:50
msgid "Pinta Website"
-msgstr ""
+msgstr "Lec'hienn Pinta"
#: Pinta.Core/Actions/HelpActions.cs:51
msgid "File a Bug"
-msgstr ""
+msgstr "Kas un danevell a-zivout ur beug"
#: Pinta.Core/Actions/HelpActions.cs:52
msgid "Translate This Application"
-msgstr ""
+msgstr "Treiñ an arload-mañ"
#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
msgid "About"
-msgstr ""
+msgstr "Diwar-benn"
#: Pinta.Core/Actions/FileActions.cs:54
msgid "New..."
-msgstr ""
+msgstr "Nevez..."
#: Pinta.Core/Actions/FileActions.cs:55
msgid "New Screenshot..."
-msgstr ""
+msgstr "Skeudenn nevez diwar ar skramm..."
#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
msgid "Open..."
-msgstr ""
+msgstr "Digeriñ..."
#: Pinta.Core/Actions/FileActions.cs:57
msgid "Open Recent"
-msgstr ""
+msgstr "Digeriñ ur restr krouet nevez zo"
#: Pinta.Core/Actions/FileActions.cs:64
msgid "Close"
-msgstr ""
+msgstr "Serriñ"
#: Pinta.Core/Actions/FileActions.cs:65
msgid "Save"
-msgstr ""
+msgstr "Enrollañ"
#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
msgid "Save As..."
-msgstr ""
+msgstr "Enrollañ evel..."
#: Pinta.Core/Actions/FileActions.cs:67
msgid "Print"
-msgstr ""
+msgstr "Moullañ"
#: Pinta.Core/Actions/FileActions.cs:68
msgid "Quit"
-msgstr ""
+msgstr "Mont kuit"
#: Pinta.Core/Actions/FileActions.cs:70
msgid "New"
-msgstr ""
+msgstr "Nevez"
#: Pinta.Core/Actions/FileActions.cs:71
msgid "Open"
-msgstr ""
+msgstr "Digeriñ"
#: Pinta.Core/Actions/EditActions.cs:65
msgid "Undo"
-msgstr ""
+msgstr "Dizober"
#: Pinta.Core/Actions/EditActions.cs:66
msgid "Redo"
-msgstr ""
+msgstr "Adober"
#: Pinta.Core/Actions/EditActions.cs:67
msgid "Cut"
-msgstr ""
+msgstr "Troc'hañ"
#: Pinta.Core/Actions/EditActions.cs:68
msgid "Copy"
-msgstr ""
+msgstr "Eilañ"
#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
msgid "Paste"
-msgstr ""
+msgstr "Pegañ"
#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
msgid "Paste Into New Layer"
-msgstr ""
+msgstr "Pegañ war un dreuzfollenn nevez"
#: Pinta.Core/Actions/EditActions.cs:71
msgid "Paste Into New Image"
-msgstr ""
+msgstr "Pegañ war ur skeudenn nevez"
#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
#: Pinta.Core/Actions/EditActions.cs:296
msgid "Erase Selection"
-msgstr ""
+msgstr "Diverkañ an diuzad"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
msgid "Fill Selection"
-msgstr ""
+msgstr "Leuniañ an diuzad"
#: Pinta.Core/Actions/EditActions.cs:74
msgid "Invert Selection"
-msgstr ""
+msgstr "Tuginañ an diuzad"
#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
msgid "Select All"
-msgstr ""
+msgstr "Diuzañ pep tra"
#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
msgid "Deselect"
-msgstr ""
+msgstr "Diziuzañ"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
-msgstr ""
+msgstr "Adderaouekaat"
#: Pinta.Core/Actions/EditActions.cs:81
msgid "Set Number of Colors"
-msgstr ""
+msgstr "Arventennañ niver al livioù"
#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
#: Pinta/MainWindow.cs:569
msgid "Palette"
-msgstr ""
+msgstr "Livaoueg"
#: Pinta.Core/Actions/EditActions.cs:313
msgid "Open Palette File"
-msgstr ""
+msgstr "Digeriñ ur restr livaoueg"
#: Pinta.Core/Actions/EditActions.cs:320
msgid "Palette files (*.txt, *.gpl)"
-msgstr ""
+msgstr "Restroù livaouegoù (*.txt, *.gpl)"
#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
msgid "All files"
-msgstr ""
+msgstr "An holl restroù"
#: Pinta.Core/Actions/EditActions.cs:340
#, csharp-format
@@ -385,171 +385,178 @@ msgid ""
"Could not open palette file: {0}.\n"
"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
+"N'hall ket digeriñ ar restr livaoueg : {0}.\n"
+"Gwiriit emaoc'h o klask digeriñ ul livaoueg talvoudek mod GIMP pe Paint.NET."
#: Pinta.Core/Actions/EditActions.cs:341
#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
msgid "Error"
-msgstr ""
+msgstr "Fazi"
#: Pinta.Core/Actions/EditActions.cs:353
msgid "Save Palette File"
-msgstr ""
+msgstr "Enrollañ ar restr livaoueg"
#: Pinta.Core/Actions/EditActions.cs:359
msgid "Paint.NET palette (*.txt)"
-msgstr ""
+msgstr "Livaoueg mod Paint.NET (*.txt)"
#: Pinta.Core/Actions/EditActions.cs:364
msgid "GIMP palette (*.gpl)"
-msgstr ""
+msgstr "Livaoueg mod GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Skeudenn dienroll {0}"
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
-msgstr ""
+msgstr "Drekva"
#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
msgid "New Image"
-msgstr ""
+msgstr "Skeudenn nevez"
#: Pinta.Core/Managers/WorkspaceManager.cs:176
msgid "Open Image"
-msgstr ""
+msgstr "Digeriñ ur skeudenn"
#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
msgid "Could not open file: {0}"
-msgstr ""
+msgstr "N'hall ket digeriñ ar restr : {0}"
#: Pinta.Core/Managers/LivePreviewManager.cs:220
msgid "Rendering Effect"
-msgstr ""
+msgstr "Efed gant an deouez"
#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
msgid "Posterize"
-msgstr ""
+msgstr "Skritellaat"
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Tuginañ al livioù"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
-msgstr ""
+msgstr "Liveoù"
#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
msgid "Black and White"
-msgstr ""
+msgstr "Du ha Gwenn"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
-msgstr ""
+msgstr "Live emgefreek"
#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
msgid "Hue / Saturation"
-msgstr ""
+msgstr "Arliv/Peurvec'hiañ"
#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
msgid "Brightness / Contrast"
-msgstr ""
+msgstr "Lintr/Dargemm"
#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
msgid "Sepia"
-msgstr ""
+msgstr "Sepia"
#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
msgid "Curves"
-msgstr ""
+msgstr "Krommennoù"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
msgid "Transfer Map"
-msgstr ""
+msgstr "Kartenn dreuzkas"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
msgid "RGB"
-msgstr ""
+msgstr "RGG"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
msgid "Luminosity"
-msgstr ""
+msgstr "Lintr"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
msgid "(256, 256)"
-msgstr ""
+msgstr "(256, 256)"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
msgid "Red "
-msgstr ""
+msgstr "Ruz "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
msgid "Green"
-msgstr ""
+msgstr "Gwer"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
msgid "Blue "
-msgstr ""
+msgstr "Glas "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
msgid "Reset"
-msgstr ""
+msgstr "Adderaouekaat"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
msgid "Tip: Right-click to remove control points."
-msgstr ""
+msgstr "Tun : Klikañ a-zehou da zilemel ar poentoù reoliñ."
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
msgid "Levels Adjustment"
-msgstr ""
+msgstr "Kengeidadur al liveoù"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
msgid "Input Histogram"
-msgstr ""
+msgstr "Tellun enankañ"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
msgid "Input"
-msgstr ""
+msgstr "Enankad"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
msgid "Output"
-msgstr ""
+msgstr "Ec'hankad"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
msgid "Output Histogram"
-msgstr ""
+msgstr "Tellun ec'hankañ"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
msgid "Auto"
-msgstr ""
+msgstr "Emgefreek"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
msgid "Red"
-msgstr ""
+msgstr "Ruz"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
msgid "Blue"
-msgstr ""
+msgstr "Glas"
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
msgid "Linked"
-msgstr ""
+msgstr "Ereet"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
msgid "Pencil Sketch"
-msgstr ""
+msgstr "Brastres gant ur c'hreion"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
#: Pinta.Effects/Effects/InkSketchEffect.cs:42
msgid "Artistic"
-msgstr ""
+msgstr "Arzek"
#: Pinta.Effects/Effects/UnfocusEffect.cs:28
msgid "Unfocus"
-msgstr ""
+msgstr "Distiañ"
#: Pinta.Effects/Effects/UnfocusEffect.cs:36
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
@@ -558,11 +565,11 @@ msgstr ""
#: Pinta.Effects/Effects/FragmentEffect.cs:34
#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
msgid "Blurs"
-msgstr ""
+msgstr "Ruzed"
#: Pinta.Effects/Effects/BulgeEffect.cs:26
msgid "Bulge"
-msgstr ""
+msgstr "Bos"
#: Pinta.Effects/Effects/BulgeEffect.cs:34
#: Pinta.Effects/Effects/PixelateEffect.cs:38
@@ -571,554 +578,586 @@ msgstr ""
#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
#: Pinta.Effects/Effects/TwistEffect.cs:34
msgid "Distort"
-msgstr ""
+msgstr "Torrgammoù"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
msgid "Mandelbrot Fractal"
-msgstr ""
+msgstr "Brevennoù mod Mandelbrot"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
#: Pinta.Effects/Effects/CloudsEffect.cs:38
msgid "Render"
-msgstr ""
+msgstr "Deouez"
#: Pinta.Effects/Effects/MedianEffect.cs:29
msgid "Median"
-msgstr ""
+msgstr "Krenn"
#: Pinta.Effects/Effects/MedianEffect.cs:37
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
msgid "Noise"
-msgstr ""
+msgstr "Trouz"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
-msgstr ""
+msgstr "Pikselaat"
#: Pinta.Effects/Effects/SharpenEffect.cs:26
msgid "Sharpen"
-msgstr ""
+msgstr "Lemmañ"
#: Pinta.Effects/Effects/SharpenEffect.cs:34
#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
-msgstr ""
+msgstr "Luc'hskeudenn"
#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
msgid "Oil Painting"
-msgstr ""
+msgstr "Livadur dre eoul"
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
msgid "Gaussian Blur"
-msgstr ""
+msgstr "Ruzed mod Gausse"
#: Pinta.Effects/Effects/GlowEffect.cs:31
msgid "Glow"
-msgstr ""
+msgstr "Skleur"
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
msgid "Soften Portrait"
-msgstr ""
+msgstr "Kuñvaat ar poltred"
#: Pinta.Effects/Effects/TileEffect.cs:26
msgid "Tile Reflection"
-msgstr ""
+msgstr "Disvannadur er marelloù"
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
msgid "Red Eye Removal"
-msgstr ""
+msgstr "Dilamadur an daoulagad ruz"
#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
msgid "Frosted Glass"
-msgstr ""
+msgstr "Gwerenn dilufr"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
-msgstr ""
+msgstr "Dinoiñ ar riblennoù"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
#: Pinta.Effects/Effects/EmbossEffect.cs:34
#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
-msgstr ""
+msgstr "Stilaat"
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
msgid "Julia Fractal"
-msgstr ""
+msgstr "Brevennoù mod Julia"
#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
msgid "Motion Blur"
-msgstr ""
+msgstr "Ruzed dre fiñval"
#: Pinta.Effects/Effects/EmbossEffect.cs:26
msgid "Emboss"
-msgstr ""
+msgstr "Stampiñ"
#: Pinta.Effects/Effects/InkSketchEffect.cs:34
msgid "Ink Sketch"
-msgstr ""
+msgstr "Brastres dre huz"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
-msgstr ""
+msgstr "Ruzed dre zoumañ"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
-msgstr ""
+msgstr "Tuginadur bleinek"
#: Pinta.Effects/Effects/CloudsEffect.cs:30
msgid "Clouds"
-msgstr ""
+msgstr "Koumoul"
#: Pinta.Effects/Effects/FragmentEffect.cs:26
msgid "Fragment"
-msgstr ""
+msgstr "Darnaouiñ"
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
-msgstr ""
+msgstr "Digreskiñ an trouz"
#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
msgid "Radial Blur"
-msgstr ""
+msgstr "Ruzed skinek"
#: Pinta.Effects/Effects/TwistEffect.cs:26
msgid "Twist"
-msgstr ""
+msgstr "Gweañ"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
-msgstr ""
+msgstr "Ouzhpennañ trouz"
#: Pinta.Effects/Effects/ReliefEffect.cs:45
msgid "Relief"
-msgstr ""
+msgstr "Torosennadur"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
-msgstr ""
+msgstr "Trolinenn"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
msgid "Random Noise"
-msgstr ""
+msgstr "Trouz dargouezhek"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
msgid "Reseed"
-msgstr ""
+msgstr "Hadañ en-dro"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
msgid "label1"
-msgstr ""
+msgstr "skritell1"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
msgid "label"
-msgstr ""
+msgstr "skritell"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Dibab al liv kentael"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Dibab al liv eilvedel"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Dibab al livaoueg"
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
-msgstr ""
+msgstr "Dilec'hiañ"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
-msgstr ""
+msgstr "Klikañ ha riklañ a-benn merdeiñ war ar skeudenn."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
-msgstr ""
+msgstr "Testenn"
#: Pinta.Tools/TextTool.cs:44
msgid ""
"Left click to place cursor, then type desired text. Text color is primary "
"color."
msgstr ""
+"Klikit kleiz da lakaat ar reti, biziatait neuze an destenn a fell deoc'h. "
+"Liv an destenn a vo al liv kentael."
#: Pinta.Tools/TextTool.cs:144
msgid "Font"
-msgstr ""
+msgstr "Nodrezh"
#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
-msgstr ""
+msgstr "Tev"
#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
-msgstr ""
+msgstr "Stouet"
#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
-msgstr ""
+msgstr "Islinennet"
#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
-msgstr ""
+msgstr "Marzekaat war an tu kleiz"
#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
-msgstr ""
+msgstr "Marzekaat e-kreiz"
#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
-msgstr ""
+msgstr "Marzekaat war an tu dehou"
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
-msgstr ""
+msgstr "Reizhkorn"
#: Pinta.Tools/RectangleTool.cs:44
msgid ""
"Click and drag to draw a rectangle (right click for secondary color). Hold "
"shift to constrain to a square."
msgstr ""
+"Klikañ ha riklañ a-benn tresañ ur reizhkorn (klik dehou evut ul liv "
+"eilvedel). Pouezañ war Pennlizh. da dresañ ur c'harrez."
#: Pinta.Tools/FreeformShapeTool.cs:53
msgid "Freeform Shape"
-msgstr ""
+msgstr "Lun dre zorn"
#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
+"Klik kleiz a-benn trasañ gant ul liv kentael, klik dehou a-benn tresañ gant "
+"ul liv eilvedel."
#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
msgid "Fill Style"
-msgstr ""
+msgstr "Stil leuniañ"
#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
msgid "Outline Shape"
-msgstr ""
+msgstr "Lun an drolinenn"
#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
msgid "Fill Shape"
-msgstr ""
+msgstr "Lun leuniañ"
#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
msgid "Fill and Outline Shape"
-msgstr ""
+msgstr "Lun leuniañ ha lun an drolinenn"
#: Pinta.Tools/FloodTool.cs:72
msgid "Flood Mode"
-msgstr ""
+msgstr "Mod aloubiñ"
#: Pinta.Tools/FloodTool.cs:79
msgid "Contiguous"
-msgstr ""
+msgstr "Kevelek"
#: Pinta.Tools/FloodTool.cs:80
msgid "Global"
-msgstr ""
+msgstr "Hollek"
#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
msgid "Tolerance"
-msgstr ""
+msgstr "Aotrevarz"
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
-msgstr ""
+msgstr "Linenn"
#: Pinta.Tools/LineCurveTool.cs:44
-msgid "Left click to draw with primary color, right click for secondary color."
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
+"Klik kleiz a-benn tresañ gant ul liv kentael, klik dehou evit ul liv "
+"eilvedel."
#: Pinta.Tools/MoveSelectionTool.cs:42
msgid "Move Selection"
-msgstr ""
+msgstr "Dilec'hiañ an diuzad"
#: Pinta.Tools/MoveSelectionTool.cs:48
msgid "Drag the selection to move selection outline."
-msgstr ""
+msgstr "Riklañ an diuzad da zilec'hiañ trolinenn an diuzad."
#: Pinta.Tools/RectangleSelectTool.cs:38
msgid "Rectangle Select"
-msgstr ""
+msgstr "Diuzañ dre ur reizhkorn"
#: Pinta.Tools/RectangleSelectTool.cs:44
msgid ""
"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
"square."
msgstr ""
+"Klikañ ha riklañ a-benn tresañ un diuzad reizhkornek. Pouezañ war Pennlizh. "
+"a-benn tresañ ur c'harrez."
#: Pinta.Tools/MagicWandTool.cs:46
msgid "Magic Wand Select"
-msgstr ""
+msgstr "Diuzad dre ar walenn hudus"
#: Pinta.Tools/MagicWandTool.cs:54
msgid "Click to select region of similar color."
-msgstr ""
+msgstr "Klikañ a-benn diuzañ maezioù gant livioù damheñvel"
#: Pinta.Tools/EllipseSelectTool.cs:38
msgid "Ellipse Select"
-msgstr ""
+msgstr "Diuzañ dre an elipsenn"
#: Pinta.Tools/EllipseSelectTool.cs:44
msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
+"Klikañ ha riklañ a-benn tresañ un diuzad elipsennek. Pouezañ war Pennlizh. a-"
+"benn tresañ ur c'helc'h."
#: Pinta.Tools/LassoSelectTool.cs:45
msgid "Lasso Select"
-msgstr ""
+msgstr "Diuzañ gant al las-bann"
#: Pinta.Tools/LassoSelectTool.cs:47
msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+msgstr "Klikañ ha riklañ a-benn tresañ un drolinenn evit maez un diuzad."
#: Pinta.Tools/PaintBucketTool.cs:40
msgid "Paint Bucket"
-msgstr ""
+msgstr "Sailh da livañ"
#: Pinta.Tools/PaintBucketTool.cs:46
msgid ""
"Left click to fill a region with the primary color, right click to fill with "
"the secondary color."
msgstr ""
+"Klik kleiz da leuniañ ur maez gant ul liv kentael, klik dehou a-benn leuniañ "
+"gant al liv eilvedel."
#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
msgid "Gradient"
-msgstr ""
+msgstr "Ilrezenn"
#: Pinta.Tools/GradientTool.cs:73
msgid ""
"Click and drag to draw gradient from primary to secondary color. Right "
"click to reverse."
msgstr ""
+"Klikañ ha riklañ a-benn tresañ un ilrezenn eus ul liv kentael d'ul liv "
+"eilvedel. Klik dehou da cheñch tu."
#: Pinta.Tools/GradientTool.cs:183
msgid "Linear Gradient"
-msgstr ""
+msgstr "Ilrezenn linennek"
#: Pinta.Tools/GradientTool.cs:184
msgid "Linear Reflected Gradient"
-msgstr ""
+msgstr "Ilrezenn linennek disvannet"
#: Pinta.Tools/GradientTool.cs:185
msgid "Linear Diamond Gradient"
-msgstr ""
+msgstr "Ilrezenn linennek e doare diamant"
#: Pinta.Tools/GradientTool.cs:186
msgid "Radial Gradient"
-msgstr ""
+msgstr "Ilrezenn skinek"
#: Pinta.Tools/GradientTool.cs:187
msgid "Conical Gradient"
-msgstr ""
+msgstr "Ilrezenn kernennek"
#: Pinta.Tools/GradientTool.cs:195
msgid "Mode"
-msgstr ""
+msgstr "Mod"
#: Pinta.Tools/GradientTool.cs:202
msgid "Color Mode"
-msgstr ""
+msgstr "Mod liv"
#: Pinta.Tools/GradientTool.cs:203
msgid "Transparency Mode"
-msgstr ""
+msgstr "Mod treuzweluster"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
-msgstr ""
+msgstr "Led ar broust"
#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
msgid "Decrease brush size"
-msgstr ""
+msgstr "Digreskiñ ment ar broust"
#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
msgid "Increase brush size"
-msgstr ""
+msgstr "Kreskiñ ment ar broust"
#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
msgid "Paintbrush"
-msgstr ""
+msgstr "Broust livañ"
#: Pinta.Tools/PaintBrushTool.cs:63
msgid "Type"
-msgstr ""
+msgstr "Rizh"
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
-msgstr ""
+msgstr "Adlivañ"
#: Pinta.Tools/RecolorTool.cs:61
msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
+msgstr "Klik kleiz a-benn amsaviñ al liv eilvedel gant al liv kentael."
#: Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
-msgstr ""
+msgstr "Reizh"
#: Pinta.Tools/Brushes/CircleBrush.cs:38
msgid "Circles"
-msgstr ""
+msgstr "Kelc'hioù"
#: Pinta.Tools/Brushes/SquaresBrush.cs:40
msgid "Squares"
-msgstr ""
+msgstr "Karrezioù"
#: Pinta.Tools/Brushes/SplatterBrush.cs:38
msgid "Splatter"
-msgstr ""
+msgstr "Strimpadenn"
#: Pinta.Tools/Brushes/GridBrush.cs:38
msgid "Grid"
-msgstr ""
+msgstr "Kael"
#: Pinta.Tools/EllipseTool.cs:38
msgid "Ellipse"
-msgstr ""
+msgstr "Elipsenn"
#: Pinta.Tools/EllipseTool.cs:44
msgid ""
"Click and drag to draw an ellipse (right click for secondary color). Hold "
"shift to constrain to a circle."
msgstr ""
+"Klikañ ha riklañ a-benn tresañ un elipsenn (klik dehou evit ul liv "
+"eilvedel). Pouezañ war Pennlizh. da dresañ ur c'helc'h."
#: Pinta.Tools/CloneStampTool.cs:43
msgid "Clone Stamp"
-msgstr ""
+msgstr "Stampon klonañ"
#: Pinta.Tools/CloneStampTool.cs:48
msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
+"Ctrl-klik kleiz a-benn spislec'hiañ an orin, klik kleiz a-benn livañ."
#: Pinta.Tools/ZoomTool.cs:49
msgid "Zoom"
-msgstr ""
+msgstr "Zoum"
#: Pinta.Tools/ZoomTool.cs:55
msgid ""
"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
"selection."
msgstr ""
+"Klik kleiz evit ar zoum brasaat. Klik dehou a-benn dizoumañ. Klikañ ha "
+"riklañ a-benn zoumañ war an diuzad."
#: Pinta.Tools/RoundedRectangleTool.cs:44
msgid "Rounded Rectangle"
-msgstr ""
+msgstr "Reizhkorn rontaet"
#: Pinta.Tools/RoundedRectangleTool.cs:50
msgid ""
"Click and drag to draw a rounded rectangle (right click for secondary "
"color). Hold shift to constrain."
msgstr ""
+"Klikañ ha riklañ a-benn tresañ ur reizhkorn rontaet (klik dehou evit ul liv "
+"eilvedel). Pouezañ war Pennlizh. da dresañ ur c'harrez."
#: Pinta.Tools/RoundedRectangleTool.cs:83
msgid "Radius"
-msgstr ""
+msgstr "Skin"
#: Pinta.Tools/RoundedRectangleTool.cs:88
msgid "Decrease rectangle's corner radius"
-msgstr ""
+msgstr "Digreskiñ skin korn ar reizhkorn"
#: Pinta.Tools/RoundedRectangleTool.cs:102
msgid "Increase rectangle's corner radius"
-msgstr ""
+msgstr "Kreskiñ skin kornioù ar reizhkorn"
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
-msgstr ""
+msgstr "Gwalenn da dapout ul liv"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Klik kleiz da arventennañ ul liv kentael. Klik dehou da arventennañ al liv "
+"eilvedel."
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
-msgstr ""
+msgstr "Goude bezañ diuzet"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Do not switch tool"
-msgstr ""
+msgstr "Arabat kemmañ ar benveg"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to previous tool"
-msgstr ""
+msgstr "Kemmañ d'ar benveg kent"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to Pencil tool"
-msgstr ""
+msgstr "Kemmañ d'ar benveg Kreion"
#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
msgid "Pencil"
-msgstr ""
+msgstr "Kreion"
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
-msgstr ""
+msgstr "Gomenn"
#: Pinta.Tools/EraserTool.cs:47
msgid "Click and drag to erase a portion of the image."
-msgstr ""
+msgstr "Klikañ ha riklañ da ziverkañ ul lod eus ar skeudenn."
#: Pinta.Tools/PencilTool.cs:50
msgid ""
"Left click to draw freeform, one-pixel wide lines with the primary color, "
"right click to use the secondary color."
msgstr ""
+"Klik kleiz a-benn tresañ ul lun gant an dorn, he linennoù ur piksel o zevder "
+"gant al liv kentael. Klik dehou a-benn ober gant al liv eilvedel."
#: Pinta.Tools/MoveSelectedTool.cs:42
msgid "Move Selected Pixels"
-msgstr ""
+msgstr "Dilec'hiañ ar pikselioù bet diuzet"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
-msgstr ""
+msgstr "Riklañ an diuzad da zilec'hiañ an endalc'had diuzet"
#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
msgid "Hide"
-msgstr ""
+msgstr "Kuzhañ"
#: Pinta/DockLibrary/DockItemContainer.cs:190
msgid "Dock"
-msgstr ""
+msgstr "Kae"
#: Pinta/DockLibrary/DockItemContainer.cs:194
#: Pinta/DockLibrary/DockItem.cs:502
msgid "Auto Hide"
-msgstr ""
+msgstr "Kuzhañ emgefreek"
#: Pinta/DockLibrary/DockItem.cs:485
msgid "Dockable"
-msgstr ""
+msgstr "Kaeadus"
#: Pinta/DockLibrary/DockItem.cs:493
msgid "Floating"
-msgstr ""
+msgstr "War neuñv"
#: Pinta/Options.cs:486
msgid "OptionName"
-msgstr ""
+msgstr "Anv an dibarzh"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
msgid "By percentage:"
-msgstr ""
+msgstr "Dre zregantad :"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
msgid "By absolute size:"
-msgstr ""
+msgstr "Dre ar vent dizave :"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
msgid "Width:"
-msgstr ""
+msgstr "Led :"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
@@ -1127,243 +1166,260 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
msgid "pixels"
-msgstr ""
+msgstr "a bikselioù"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
msgid "Height:"
-msgstr ""
+msgstr "Sav :"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
msgid "Maintain aspect ratio"
-msgstr ""
+msgstr "Mirout kenfeur an neuz"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
msgid "Anchor:"
-msgstr ""
+msgstr "Eor :"
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
msgid "New Image Size "
-msgstr ""
+msgstr "Ment ar skeudenn nevez "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Perzhioù an dreuzfollenn"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
-msgstr ""
+msgstr "Anv :"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
msgid "Visible"
-msgstr ""
+msgstr "Hewelus"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
msgid "Opacity:"
-msgstr ""
+msgstr "Demerez :"
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
+
+#: Pinta/MainWindow.cs:450
msgid "_File"
-msgstr ""
+msgstr "_Restr"
#: Pinta/MainWindow.cs:449
msgid "_Edit"
-msgstr ""
+msgstr "_Embann"
#: Pinta/MainWindow.cs:451
msgid "_View"
-msgstr ""
+msgstr "_Gwelout"
#: Pinta/MainWindow.cs:454
msgid "_Image"
-msgstr ""
+msgstr "_Skeudenn"
#: Pinta/MainWindow.cs:455
msgid "_Layers"
-msgstr ""
+msgstr "_Treuzfollenn"
#: Pinta/MainWindow.cs:456
msgid "_Adjustments"
-msgstr ""
+msgstr "_Kengeidadurioù"
#: Pinta/MainWindow.cs:457
msgid "Effe_cts"
-msgstr ""
+msgstr "Efe_doù"
#: Pinta/MainWindow.cs:459
msgid "_Window"
-msgstr ""
+msgstr "_Prenestr"
#: Pinta/MainWindow.cs:463
msgid "Tool Windows"
-msgstr ""
+msgstr "Prenestr an ostilhoù"
#: Pinta/MainWindow.cs:467
msgid "_Help"
-msgstr ""
+msgstr "_Skoazell"
#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
msgid "Tools"
-msgstr ""
+msgstr "Binvioù"
#: Pinta/MainWindow.cs:578
msgid "Documents"
-msgstr ""
+msgstr "Teulioù"
#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
msgid "Layers"
-msgstr ""
+msgstr "Treuzfollennoù"
#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
msgid "History"
-msgstr ""
+msgstr "Roll istor"
#: Pinta/DialogHandlers.cs:99
msgid "Take Screenshot"
-msgstr ""
+msgstr "Ober ur skrammad"
#: Pinta/DialogHandlers.cs:100
msgid "Delay before taking a screenshot (seconds):"
-msgstr ""
+msgstr "Pred a-raok ma vo graet ar skrammad (eilennoù) :"
#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+msgstr "Enrollañ ar c'hemmoù graet d'ar skeudenn \"{0}\" kent serriñ ?"
#: Pinta/DialogHandlers.cs:140
msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
+msgstr "Ma ne enrollot ket e vo kollet an holl gemmoù da vat."
#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
-msgstr ""
+msgstr "Serriñ hep enrollañ"
#: Pinta/DialogHandlers.cs:174
msgid "Resize Palette"
-msgstr ""
+msgstr "Admentañ al livaoueg"
#: Pinta/DialogHandlers.cs:175
msgid "New palette size:"
-msgstr ""
+msgstr "Ment nevez al livaoueg :"
#: Pinta/DialogHandlers.cs:301
msgid "Layer Opacity"
-msgstr ""
+msgstr "Demerez an dreuzfollenn"
#: Pinta/DialogHandlers.cs:306
msgid "Rename Layer"
-msgstr ""
+msgstr "Adenvel an dreuzfollenn"
#: Pinta/DialogHandlers.cs:311
msgid "Hide Layer"
-msgstr ""
+msgstr "Kuzhañ an dreuzfollenn"
#: Pinta/DialogHandlers.cs:311
msgid "Show Layer"
-msgstr ""
+msgstr "Diskouez an dreuzfollenn"
#: Pinta/DialogHandlers.cs:404
msgid "Image files"
-msgstr ""
+msgstr "Restroù skeudenn"
#: Pinta/DialogHandlers.cs:461
msgid "Paste cancelled"
-msgstr ""
+msgstr "Dilezet eo bet ar pegañ"
#: Pinta/DialogHandlers.cs:462
msgid "The clipboard does not contain an image"
-msgstr ""
+msgstr "N'eus skeudenn ebet er golver"
#: Pinta/DialogHandlers.cs:495
msgid "Save Image File"
-msgstr ""
+msgstr "Enrollañ restr ar skeudenn"
#: Pinta/DialogHandlers.cs:575
msgid "Pinta does not support saving images in this file format."
-msgstr ""
+msgstr "Pinta ne skor ket an enrollañ skeudennoù gant ar mentrezh restr-mañ."
#: Pinta/DialogHandlers.cs:593
#, csharp-format
msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
+"Ur restr anvet \"{0}\" ez eus anezhi endeo. Ha fellout a ra deoc'h hec'h "
+"amsaviñ ?"
#: Pinta/DialogHandlers.cs:594
#, csharp-format
msgid ""
"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
+"Ar restr ez eus anezhi e \"{1}\". Mar bez amsavet e vo flastret hec'h "
+"endalc'had."
#: Pinta/Main.cs:68
msgid "number of threads to use for rendering"
-msgstr ""
+msgstr "niver a neudennoù da arverañ evit an deouez"
#: Pinta/Dialogs/AboutPintaTabPage.cs:41
#: Pinta/Dialogs/VersionInformationTabPage.cs:50
msgid "Version"
-msgstr ""
+msgstr "Handelv"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "License"
-msgstr ""
+msgstr "Lañvaz"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "Released under the MIT X11 License."
-msgstr ""
+msgstr "Savet dindan Lañvaz MIT X11."
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "Copyright"
-msgstr ""
+msgstr "Copyright"
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "by Pinta contributors"
-msgstr ""
+msgstr "gant perzhiaded Pinta"
#: Pinta/Dialogs/VersionInformationTabPage.cs:44
msgid "Title"
-msgstr ""
+msgstr "Titl"
#: Pinta/Dialogs/VersionInformationTabPage.cs:53
msgid "Path"
-msgstr ""
+msgstr "Treug"
#: Pinta/Dialogs/JpegCompressionDialog.cs:38
msgid "JPEG Quality"
-msgstr ""
+msgstr "Perzhded JPEG"
#: Pinta/Dialogs/JpegCompressionDialog.cs:46
msgid "Quality: "
-msgstr ""
+msgstr "Perzhded : "
#: Pinta/Dialogs/AboutDialog.cs:101
msgid "Contributors to this Release"
-msgstr ""
+msgstr "Perzhiaded evit an handelv-mañ"
#: Pinta/Dialogs/AboutDialog.cs:111
msgid "Previous Contributors"
-msgstr ""
+msgstr "Perzhiaded kent"
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
+"This is a dummy translation so that the credits are counted as translated.\n"
+"\n"
+"Launchpad Contributions:\n"
+" Alan https://launchpad.net/~alan-m.\n"
+" Skolajidi Diwan https://launchpad.net/~gireg-konan"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
-msgstr ""
+msgstr "Troet gant :"
#: Pinta/Dialogs/AboutDialog.cs:130
msgid "Based on the work of Paint.NET:"
-msgstr ""
+msgstr "Diazezet war al labour graet evit Paint.NET :"
#: Pinta/Dialogs/AboutDialog.cs:137
msgid "Using some icons from:"
-msgstr ""
+msgstr "Arver arlunioù zo digant :"
#: Pinta/Dialogs/AboutDialog.cs:249
msgid "About Pinta"
-msgstr ""
+msgstr "A-zivout Pinta"
#: Pinta/Dialogs/AboutDialog.cs:267
msgid "Version Info"
-msgstr ""
+msgstr "Titouroù an handelv"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1372,7 +1428,7 @@ msgstr ""
#: SharpenData dialog
#: MotionBlurEffect dialog
msgid "Amount"
-msgstr ""
+msgstr "Kementad"
#: RadialBlurEffect dialog
#: JuliaFractalEffect dialog
@@ -1382,158 +1438,165 @@ msgstr ""
#: ReliefData dialog
#: TwistEffect dialog
msgid "Angle"
-msgstr ""
+msgstr "Kornad"
#: CloudsEffect dialog
msgid "Antialias"
-msgstr ""
+msgstr "Lufrañ"
#: GlowEffect dialog
msgid "Blend Mode"
-msgstr ""
+msgstr "Mod kemmeskañ"
#: OilPaintingEffect dialog
msgid "Brightness"
-msgstr ""
+msgstr "Lintr"
#: PixelateData dialog
msgid "Brush Size"
-msgstr ""
+msgstr "Ment ar broust"
#: PolarInversionEffect dialog
msgid "Cell Size"
-msgstr ""
+msgstr "Ment ar gellig"
#: MotionBlurEffect dialog
msgid "Center Offset"
-msgstr ""
+msgstr "Linkad ar c'hreiz"
#: OilPaintingEffect dialog
msgid "Centered"
-msgstr ""
+msgstr "Kreizet"
#: PencilSketchEffect dialog
msgid "Coarseness"
-msgstr ""
+msgstr "Diguñvder"
#: AddNoiseEffect dialog
msgid "Color Range"
-msgstr ""
+msgstr "Ledad livioù"
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr ""
+msgstr "Peurvec'hiañ liv"
#: GlowEffect dialog
msgid "Coloring"
-msgstr ""
+msgstr "Livadur"
#: AddNoiseEffect dialog
msgid "Contrast"
-msgstr ""
+msgstr "Dargemm"
#: FragmentEffect dialog
msgid "Coverage"
-msgstr ""
+msgstr "Keitad"
#: MotionBlurEffect dialog
#: PolarInversionEffect dialog
msgid "Distance"
-msgstr ""
+msgstr "Pellder"
#: JuliaFractalEffect dialog
msgid "Edge Behavior"
-msgstr ""
+msgstr "Emzalc'h ar riblenn"
#: MandelbrotFractalEffect dialog
#: FragmentEffect dialog
msgid "Factor"
-msgstr ""
+msgstr "Parenn"
#: InkSketchEffect dialog
msgid "Fragments"
-msgstr ""
+msgstr "Darnoù"
#: TileEffect dialog
msgid "Ink Outline"
-msgstr ""
+msgstr "Trolinenn dre huz"
#: AddNoiseEffect dialog
#: OutlineEffect dialog
#: MandelbrotFractalEffect dialog
msgid "Intensity"
-msgstr ""
+msgstr "Kreñvder"
#: RadialBlurEffect dialog
msgid "Lighting"
-msgstr ""
+msgstr "Goulaouiñ"
#: ZoomBlurEffect dialog
#: BulgeEffect dialog
#: PencilSketchEffect dialog
msgid "Offset"
-msgstr ""
+msgstr "Linkañ"
#: MedianEffect dialog
msgid "Pencil Tip Size"
-msgstr ""
+msgstr "Ment min ar c'hreion"
#: CloudsEffect dialog
msgid "Percentile"
-msgstr ""
+msgstr "Kantranner"
#: RadialBlurEffect dialog
msgid "Power"
-msgstr ""
+msgstr "Galloud"
#: PolarInversionEffect dialog
#: JuliaFractalEffect dialog
#: MandelbrotFractalEffect dialog
#: GaussianBlurEffect dialog
msgid "Quality"
-msgstr ""
+msgstr "Perzhded"
#: TileEffect dialog
#: RedEyeRemoveData dialog
msgid "Rotation"
-msgstr ""
+msgstr "C'hwelañ"
#: CloudsEffect dialog
msgid "Saturation percentage"
-msgstr ""
+msgstr "Tregantad ar peurvec'hiañ"
#: CloudsEffect dialog
msgid "Scale"
-msgstr ""
+msgstr "Skeulaat"
#: SoftenPortraitData dialog
msgid "Seed"
-msgstr ""
+msgstr "Hadañ"
#: ReduceNoiseEffect dialog
msgid "Softness"
-msgstr ""
+msgstr "Kuñvder"
#: OutlineEffect dialog
msgid "Strength"
-msgstr ""
+msgstr "Kreñvder"
#: TileEffect dialog
msgid "Thickness"
-msgstr ""
+msgstr "Tevder"
#: RedEyeRemoveData dialog
msgid "Tile Size"
-msgstr ""
+msgstr "Ment ar marelloù"
#: JuliaFractalEffect dialog
msgid "Warmth"
-msgstr ""
+msgstr "Tommder"
#: RadialBlurEffect dialog
-msgid "Use low quality for previews, small images, and small angles. Use high quality for final quality, large images, and large angles."
+msgid ""
+"Use low quality for previews, small images, and small angles. Use high "
+"quality for final quality, large images, and large angles."
msgstr ""
+"Arverañ ur berzhded izel evit an alberzioù, skeudennoù bihan ha kornadoù "
+"bihan. Arverañ ur berzhded uhel evit an disoc'h diwezhel, skeudennoù bras ha "
+"kornadoù bras."
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+"Un ali : evit un disoc'h gwellañ, grit da gentañ gant an benveg diuzañ a-"
+"benn diuzañ pep lagad."
diff --git a/po/messages-ca.po b/po/messages-ca.po
index ca40e41..d1673b9 100644
--- a/po/messages-ca.po
+++ b/po/messages-ca.po
@@ -7,669 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-06-22 09:23+0000\n"
-"Last-Translator: thor9216 <thor9216 at gmail.com>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-28 23:49+0000\n"
+"Last-Translator: tot3lmon <tot3lmon at gmail.com>\n"
"Language-Team: Catalan <ca at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr ""
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Finestra"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr ""
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Capa"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr ""
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "còpia"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr ""
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Redimensiona Canvas"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr ""
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Eina"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr ""
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Drecera de teclat"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr ""
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Sobreescriu"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr ""
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Canvia la mida de la imatge"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Eines"
-
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documents"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr ""
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Capes"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historial"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flotant"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Oculta automàticament"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "General"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
msgstr ""
-"Launchpad Contributions:\n"
-" thor9216 https://launchpad.net/~thor9216"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Traduït per:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Volteja horitzontalment"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr ""
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Volteja verticalment"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr ""
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Aplana"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Quant a Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Amplia"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr ""
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Redueix"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Títol"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Augmenta la Finestra"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versió"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Zoom a la selecció"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr ""
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Mida real"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Llicència"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Barra d'Eines"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr ""
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Píxels"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Canvia la mida de la imatge"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centímetres"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Per percentage:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Pantalla sencera"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Amplada:"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "píxels"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Alçada:"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Propietats de la capa"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Suprimeix Capa"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nom:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Capa Duplicada"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Visible"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Opacitat:"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Àncora:"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Puja Capa"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Nova imatge"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Baixa Capa"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Opacitat de la capa"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Canvia el nom de la capa"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Mostra la capa"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etiqueta"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Selector de color"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Nova imatge"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr ""
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Difuminats"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distorsiona"
+
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "Pixelitza"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distorsiona"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Elimina ulls vermells"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "Foto"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Difuminats"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Elimina ulls vermells"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -677,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -703,541 +680,710 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr ""
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etiqueta"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Selector de color"
+
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Oculta automàticament"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flotant"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Per percentage:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Amplada:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "píxels"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Alçada:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Àncora:"
+
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Propietats de la capa"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nom:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Visible"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacitat:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Finestra"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Eines"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documents"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Capes"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historial"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Opacitat de la capa"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Canvia el nom de la capa"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Mostra la capa"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr ""
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versió"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Llicència"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr ""
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr ""
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr ""
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Títol"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr ""
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" thor9216 https://launchpad.net/~thor9216\n"
+" tot3lmon https://launchpad.net/~tot3lmon"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Traduït per:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Quant a Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
msgstr ""
#: BulgeEffect dialog
@@ -1415,6 +1561,24 @@ msgstr ""
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+#~ msgid "Help"
+#~ msgstr "Ajuda"
+
+#~ msgid "Effects"
+#~ msgstr "Efectes"
+
+#~ msgid "File"
+#~ msgstr "Fitxer"
+
+#~ msgid "Edit"
+#~ msgstr "Edita"
+
+#~ msgid "View"
+#~ msgstr "Visualitza"
+
+#~ msgid "Image"
+#~ msgstr "Imatge"
+
#~ msgid "%"
#~ msgstr "%"
diff --git a/po/messages-cs.po b/po/messages-cs.po
index ee6f9b6..bc96b41 100644
--- a/po/messages-cs.po
+++ b/po/messages-cs.po
@@ -7,551 +7,746 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:07+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-06 11:10+0000\n"
+"Last-Translator: schunka <Unknown>\n"
"Language-Team: Czech <cs at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "O aplikaci"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Okno"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Štětec"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Vrstva"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Soubor"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopírovat"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Upravit"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Změna velikosti plátna"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Zobrazit"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Nástroj"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Obrázek"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Klávesová zkratka"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Vrstvy"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Normální míchání"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Přizpůsobení"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Přepsat"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efe_kty"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Antialiasing Zapnout"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Okno"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Antialiasing Vypnout"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Nápověda"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Změnit velikost"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Dokončit pixely"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Nástroje"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Otočit o 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Překlopit obrázek horizontálně"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenty"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Překlopit obrázek vertikálně"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Vrstvy"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Otočit o 90° po směru hodin"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historie"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Otočit o 90° proti směru hodin"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Skrýt"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Překlopit vrstvu horizontálně"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dokovatelné"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Překlopit vrstvu vertikálně"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Plovoucí"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Všeobecné"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Skrývat automaticky"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} obrázek ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Ukotvit"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Vystřihnout do výběru"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Přispěvatelé tohoto vydání"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Zvětšit/zmenšit..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Předchozí přispěvatelé"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Velikost plátna..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" schunka https://launchpad.net/~schunka"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Převrátit horizontálně"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Přeložili:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Převrátit vertikálně"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Na základě práce Paint.NET"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Zploštit"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Použity některé ikonky z:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Přiblížit"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "O Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Oddálit"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informace o verzi"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Přiblížit do okna"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Název"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Přiblížit na výběr"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Verze"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Současná velikost"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Cesta"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Panel Nástrojů"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licence"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Pixelová mřížka"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Vydáno pod licencí MIT X11"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Pravítka"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pixely"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "Od přispěvatelů Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Palce"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "počet vláken použitých k vykreslení"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimetry"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Změnit velikost"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Celá obrazovka"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Procentuelně:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Jednotky pravítka"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Na velikost:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Přidat novou vrstvu"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Šířka:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Smazat vrstvu"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixely"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplikovat vrstvu"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Výška:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Spojit vrstvy"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Zachovat poměr stran"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Vložit ze souboru..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Otočení / Zoom"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Posunout vrstvu nahoru"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Posunout vrstvu dolů"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Vlastnosti vrstvy"
+msgid "Layer Properties..."
+msgstr "Vlastnosti Vrstvy..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Název:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Otevřít obrázek"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Viditelná"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Vložit ze souboru"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Průhlednost"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Uložit vše"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Změna velikosti plátna"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Zavřít vše"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Kotva:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Stránky Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Nahlásit chybu"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Přeložit tuto aplikaci"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "O aplikaci"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nový..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nový Snímek obrazovky"
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Otevřít..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Otevřít nedávný"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Zavřít"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Uložit"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Uložit jako..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Vytisknout"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Ukončit"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nový"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Otevřít"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Vrátit změny"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Udělat znovu"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Vyjmout"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Vložit"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Vložit do nové vrstvy"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Vložit do nového obrázku"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Smazat výběr"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Vyplnit výběr"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Obrátit výběr"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Vybrat vše"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Zrušit výběr"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Nastavit na výchozí"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Nastavit počet barev"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Otevřít sobor s paletou"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Soubory palet (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Všechny soubory"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Nelze otevřít soubor palety: {0}.\n"
+"Ověřte prosím, že se pokoušíte otevřít platnou paletu GIMP nebo Paint.NET."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Chyba"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Uložit soubor palety"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET paleta (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP paleta (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Neuložený obrázek {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Pozadí"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nový obrázek"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Velikost nového obrázku "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Otevřít obrázek"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Uložit změny v obrázku \"{0}\" před vytvořením nového?"
+msgid "Could not open file: {0}"
+msgstr "Nelze otevřít soubor: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Pokud je neuložíte, veškeré změny budou navždy ztraceny."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Vykreslovací efekt"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Pokračovat bez uložení"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterizovat"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Průhlednost vrstvy"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Invertovat barvy"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Přejmenovat vrstvu"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Úrovně"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Skrýt vrstvu"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Černobílý"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Zobrazit vrstvu"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Automatická úroveň"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "popisek1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Odstín / Sytost"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "popisek"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Jas / Kontrast"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Náhodný šum"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sépie"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Znovu načíst"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Křivky"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Kapátko"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Přenosová mapa"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Levým klikem se nastaví primarní barva. Pravým klikem se nastaví sekundarní "
-"barva."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB barvy"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Po výběru"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Světlost"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Nepřepínat nástroj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Přepnout na předchozí nástroj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Červená "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Přepnout na tužku"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Zelená"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Tužka"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Modrá "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Výběr lasem"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Resetovat"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klikněte a obtáhněte vybranou oblast."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Tip: Pravým kliknutím odstraníte ovládací body"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Lupa"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Přizpůsobení úrovně"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Levý klik přiblíží. Pravý klik oddálí. Klik a obtažení přiblíží výběr."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Vstupní histogram"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Šířka štětce"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Vstup"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Zmenšit štětec"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Výstup"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Zvětšit štětec"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Výstupní histogram"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Obtáhnout tvar"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automaticky"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Vyplnit tvar"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Červená"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Vyplnit a Obtáhnout tvar"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Modrá"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Posunout vybrané pixely"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Spojený"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Táhněte výběrem abyste posunuli obsah"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Náčrt tužkou"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Posun"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Umělecké"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klik a táhnutí navedou obrazék."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Rozostření"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Levý klik kreslí neupravenou, jednopixelovou čáru primární barvy, pravý klik "
-"kreslí sekundární barvou."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Rozmazání"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Elipsový výběr"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Vyboulit"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Klik a tažení nakreslí elliptický výběr. Pro kruhový výběr držte shift."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Pokřivit"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Přechod"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrotův fraktál"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Klik a tažení nakreslé přechod od primární k sekundární barvě. Pravý klik "
-"kreslí obráceně."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Vykreslit"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Lineární přechod"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Medián"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Lineární odražeý přechod"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Šum"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Lineární kosočtvercový přechod"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Rozpixelovat"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Radiální přechod"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Zaostřit"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Kónický přechod"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Fotografie"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Barevný režim"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Olejomalba"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Průhledný režim"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gaussovo rozmazání"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Zakulacený obdélník"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Záře"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Klik a težení nakreslí zaoblený obdélník (pravý klik v sekundární barvě). "
-"Pro čtverec držte shift."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Zjemnit portrét"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Poloměr"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Dlaždicový odraz"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Snížit poloměr rohů obdélníku"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Odstranění červených očí"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Zvýšit poloměr rohů obdélníku"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Omrzlé sklo"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Levý klik kreslí primarní barvou, pravý klik kreslí sekundární barvou."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Detekce hran"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Obdélníkový výběr"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Stylizování"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klik a tažení nakreslí obdélníkový výběr. Pro čtvercový výběr držte shift."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Juliin fraktál"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Plechovka barvy"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Rozmazání pohybem"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Levý klik vyplní oblast primární barvou, pravý klik vyplní oblast sekundární "
-"barvou."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Otisk"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Klonovací razítko"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Inkoustový náčrt"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Přesunout výběr"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Rozmazání přiblížením"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Pro posunutí obrysu táhnout vyběrem ."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Převrácení pólů"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Volný tvar"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Mraky"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Vyplňovací režim"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragment"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Spojité"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Snížit šum"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Globální"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Rozmazání otáčením"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerance"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Zkroutit"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipsa"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Přidat šum"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Klik a tažení nakreslí elipsu (pravý klik sekundární barvou). Pro nakreslení "
-"kruhu držte shift."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Reliéf"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Obtáhnout"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Náhodný šum"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Znovu načíst"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "popisek1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "popisek"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Vybrat primární barvu"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Vybrat sekundární barvu"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Vybrat barvu palety"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Posun"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Klik a táhnutí navedou obrazék."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -564,42 +759,34 @@ msgid ""
msgstr ""
"Levý klik umístí kurzor, pak můžete psát text. Primární barva je barva textu."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Písmo"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Tučně"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Kurzíva"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Podtržené"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Zarovnat doleva"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Zarovnat na střed"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Zarovnat doprava"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Výběr kouzelnou hůlkou"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Klik vybere oblast s podobnou barvou."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Obdélník"
@@ -612,654 +799,614 @@ msgstr ""
"Klik a tažení nakreslí obdélník (pravý klik sekundární barvou). Pro kreslení "
"čtverce držte shift."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Čára"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Volný tvar"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-"Levý klik kreslí primární barvou, pravý klik kreslí sekundární barvou."
-
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Přebarvit"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Levý klik přebarví sekundární barvu na primární."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Guma"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klik a tažení smaže kus obrázku"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pixelizovat"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Pokřivit"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Odstranění červených očí"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Fotografie"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Rozmazání pohybem"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Rozmazání"
+"Levý klik kreslí primarní barvou, pravý klik kreslí sekundární barvou."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Inkoustový náčrt"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Styl výpně"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Umělecké"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Obtáhnout tvar"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Rozmazání otáčením"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Vyplnit tvar"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Rozostření"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Vyplnit a Obtáhnout tvar"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Detekce hran"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Záplavový režim"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Stylizování"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Spojité"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Omrzlé sklo"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Globální"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Olejomalba"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerance"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Rozmazání přiblížením"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Čára"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Převrácení pólů"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Levý klik kreslí primární barvou, pravý klik kreslí sekundární barvou."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Mraky"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Přesunout výběr"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Vykreslit"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Pro posunutí obrysu táhnout vyběrem ."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Záře"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Obdélníkový výběr"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Přidat šum"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Klik a tažení nakreslí obdélníkový výběr. Pro čtvercový výběr držte shift."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Šum"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Výběr kouzelnou hůlkou"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragment"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Klik vybere oblast s podobnou barvou."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Zaostřit"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Elipsový výběr"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Náčrt tužkou"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Klik a tažení nakreslí elliptický výběr. Pro kruhový výběr držte shift."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Obtáhnout"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Výběr lasem"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gaussovo rozmazání"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Klikněte a obtáhněte vybranou oblast."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Dlaždicový odraz"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Plechovka barvy"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Reliéf"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Levý klik vyplní oblast primární barvou, pravý klik vyplní oblast sekundární "
+"barvou."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Otisk"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Přechod"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrotův fraktál"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Klik a tažení nakreslé přechod od primární k sekundární barvě. Pravý klik "
+"kreslí obráceně."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Vyboulit"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Lineární přechod"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Zkroutit"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Lineární odražeý přechod"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Zjemnit portrét"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Lineární kosočtvercový přechod"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Snížit šum"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Radiální přechod"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Juliin fraktál"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Kónický přechod"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Medián"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Režim"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Křivky"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Barevný režim"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Úrovně"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Průhledný režim"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Automatická úroveň"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Šířka štětce"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Invertovat barvy"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Zmenšit štětec"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterizovat"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Zvětšit štětec"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Černobílý"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Štětec"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Odstín / Sytost"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Typ"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sépie"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Přebarvit"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Jas / Kontrast"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Levý klik přebarví sekundární barvu na primární."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Přizpůsobení úrovně"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normální"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Vstupní histogram"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Kruhy"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Vstup"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Čtverce"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Výstup"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Cákance"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Výstupní histogram"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Mřížka"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automaticky"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipsa"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Resetovat"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Klik a tažení nakreslí elipsu (pravý klik sekundární barvou). Pro nakreslení "
+"kruhu držte shift."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Červená"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Klonovací razítko"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Zelená"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "Ctrl+Levý klik k výběru zdroje, levý klik kreslí."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Modrá"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Lupa"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Spojený"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Levý klik přiblíží. Pravý klik oddálí. Klik a obtažení přiblíží výběr."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Přenosová mapa"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Zakulacený obdélník"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB barvy"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Klik a težení nakreslí zaoblený obdélník (pravý klik v sekundární barvě). "
+"Pro čtverec držte shift."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Světlost"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Poloměr"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Snížit poloměr rohů obdélníku"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Červená "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Zvýšit poloměr rohů obdélníku"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Modrá "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Kapátko"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Levým klikem se nastaví primarní barva. Pravým klikem se nastaví sekundarní "
+"barva."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Přidat novou vrstvu"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Smazat vrstvu"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplikovat vrstvu"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Po výběru"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Spojit vrstvy"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Nepřepínat nástroj"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Vložit ze souboru..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Přepnout na předchozí nástroj"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Převrátit horizontálně"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Přepnout na tužku"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Převrátit vertikálně"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Tužka"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Otočení / Zoom"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Guma"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Posunout vrstvu nahoru"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Klik a tažení smaže kus obrázku"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Posunout vrstvu dolů"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Levý klik kreslí neupravenou, jednopixelovou čáru primární barvy, pravý klik "
+"kreslí sekundární barvou."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Otevřít obrázek"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Posunout vybrané pixely"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Vložit ze souboru"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Táhněte výběrem abyste posunuli obsah"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nový..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Skrýt"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Otevřít..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Ukotvit"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Otevřít nedávný"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Skrývat automaticky"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Zavřít"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dokovatelné"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Uložit"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Plovoucí"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Uložit jako..."
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "JménoVolby"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Vytisknout"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Procentuelně:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Ukončit"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Na velikost:"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nový"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Šířka:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Otevřít"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixely"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Pozadí"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Výška:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Otevřít obrázek"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Zachovat poměr stran"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Nelze otevřít soubor: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Kotva:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Chyba"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Velikost nového obrázku "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Uložit změny obrázku \"{0}\" před otevřením nového?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Vlastnosti vrstvy"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Soubory obrázků"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Název:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Všechny soubory"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Viditelná"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Uložení obrázku"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Průhlednost"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} obrázek ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "…"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster formát (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Soubor"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Uložit změny obrázku \"{0}\" před zavřením?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Upravit"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Zavřít bez uložení"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Zobrazit"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Vystřihnout do výběru"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Obrázek"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Zvětšit/zmenšit..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Vrstvy"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Velikost plátna..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Přizpůsobení"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Otočit o 90° po směru hodin"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efe_kty"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Otočit o 90° proti směru hodin"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Okno"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Otočit o 180°"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Okna Nástrojů"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Zploštit"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Nápověda"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Vrátit změny"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Nástroje"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Udělat znovu"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenty"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Vyjmout"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Vrstvy"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopírovat"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historie"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Vložit"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Sejmout obrazovku"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Vložit do nové vrstvy"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Zpoždění před sejmutím obrazovky (sekundy):"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Vložit do nového obrázku"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Uložit změny obrázku \"{0}\" před zavřením?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Smazat výběr"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Pokud je neuložíte, veškeré změny budou navždy ztraceny."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Vyplnit výběr"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Zavřít bez uložení"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Obrátit výběr"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Velikost Palety"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Vybrat vše"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nová velikost palety:"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Zrušit výběr"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Průhlednost vrstvy"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Přiblížit"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Přejmenovat vrstvu"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Oddálit"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Skrýt vrstvu"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Přiblížit do okna"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Zobrazit vrstvu"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Přiblížit na výběr"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Soubory obrázků"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Současná velikost"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Vkládání zrušeno"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Pixelová mřížka"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Schránka neobsahuje obrázek"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Pravítka"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Uložení obrázku"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pixely"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta nepodporuje ukládání obrázků v tomto typu souborů.."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Palce"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Soubor \"{0}\" už existuje. Chcete ho přepsat?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimetry"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "Soubor už existuje v \"{1}\". Nahrazení přepíše jeho obsah."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Celá obrazovka"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "počet vláken použitých k vykreslení"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Okno"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Verze"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Stránky Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licence"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Nahlásit chybu"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Vydáno pod licencí MIT X11"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Přeložit tuto aplikaci"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Všeobecné"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "Od přispěvatelů Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Nástroj"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Název"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Klávesová zkratka"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Cesta"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Vyhlazování"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Kvalita JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Normální / Přepisovací směšování"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Kvalita: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Překlopit obrázek horizontálně"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Přispěvatelé tohoto vydání"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Překlopit obrázek vertikálně"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Předchozí přispěvatelé"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Překlopit vrstvu horizontálně"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" schunka https://launchpad.net/~schunka"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Překlopit vrstvu vertikálně"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Přeložili:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Dokončit pixely"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Na základě práce Paint.NET"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Vykreslovací efekt"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Použity některé ikonky z:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopírovat"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "O Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Vrstva"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informace o verzi"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1440,17 +1587,73 @@ msgstr ""
"Rada: Pro lepší vysledky nejprve použijte výběrové nástroje k označení "
"každého oka."
+#~ msgid "Adjustments"
+#~ msgstr "Úpravy"
+
+#~ msgid "Help"
+#~ msgstr "Nápověda"
+
+#~ msgid "File"
+#~ msgstr "Soubor"
+
+#~ msgid "Effects"
+#~ msgstr "Efekty"
+
+#~ msgid "Edit"
+#~ msgstr "Upravit"
+
+#~ msgid "View"
+#~ msgstr "Zobrazit"
+
+#~ msgid "Image"
+#~ msgstr "Obrázek"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Pokračovat bez uložení"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Uložit změny v obrázku \"{0}\" před vytvořením nového?"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
+#~ msgid "In stetic action button box cannot be empty"
+#~ msgstr "Ve steticu nemůže být aktivní tlačitko prázdné"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Tip: Pravý klik odstraní ovládací body."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Uložit změny obrázku \"{0}\" před otevřením nového?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster formát (*.ora)"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Normální / Přepisovací směšování"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Vyhlazování"
+
#~ msgid "Show Pad"
#~ msgstr "Zobrazit podložku"
+
+#~ msgid "Fill mode"
+#~ msgstr "Vyplňovací režim"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-da.po b/po/messages-da.po
index c67c857..77c3ead 100644
--- a/po/messages-da.po
+++ b/po/messages-da.po
@@ -7,555 +7,744 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:12+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-27 02:02+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Danish <da at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Om"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Vindue"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Malerpensel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Lag"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Fil"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopiere"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "R_edigere"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Ændr lærred"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Vis"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Værktøj"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "B_illede"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Genvejstast"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Lag"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Justeringer"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Effe_kter"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Vindue"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Hjælp"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Ændring af billedstørrelse"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Afslut billedepunkter"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Rotere 180°"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Vend billede vandret"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Vend billede lodret"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Rotere 90° med uret"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Rotere 90° mod uret"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Vend lag vandret"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Vend lag lodret"
+
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Generelt"
+
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} billede ({1})"
+
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Beskær til valg"
+
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Størrelse..."
+
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Lærred størrelse..."
+
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Vend vandret"
+
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Vend lodret"
+
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Udjævn"
+
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Zoom ind"
+
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Zoom ud"
+
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Zoom til vindue"
+
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Zoom til markering"
+
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Faktisk størrelse"
+
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Værktøjer"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Billedepunkter gitter"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palet"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Linealer"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenter"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Billedpunkter"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Lag"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Tommer"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historik"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimeter"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Skjul"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Fuldskærm"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dokbar"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flydende"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Tilføj nyt lag"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Skjul automatisk"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Slet lag"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Dok"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Dupliker lag"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Bidragyder til denne frigivelse"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Fusionere lag nedad"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Tidligere bidragyder"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importere fra fil..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Rotere / Zoom"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Flyt lag op"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Flyt lag ned"
+
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Ole Carlsen https://launchpad.net/~ole-carlsen-web"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Oversat af:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Åbn billede fil"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Baseret på arbejdet med Paint.NET"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importere fra fil"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Bruger nogle ikoner fra:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Om Pinta"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Version Info"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta Websted"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Titel"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Rapportere en fejl"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Version"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Oversæt dette program"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Sti"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Om"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licens"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Ny..."
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Frigivet under MIT X11 Licens."
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Åbn..."
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "af Pinta bidragyder"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Åbn seneste"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "antal tråde ved rendering"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Luk"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Ændring af billedstørrelse"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Gem"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "I procent"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Gem som..."
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "I absolut størrelse"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Udskriv"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Bredde:"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Afslut"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "billedpunkter"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Ny"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Højde:"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Åbn"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Bevar størrelsesforhold"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Fortryd"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Lag-egenskaber"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Omgør"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Navn:"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Klip"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Synlig"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopiere"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Uigennemsighed:"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Indsæt"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Ændr lærred"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Indsæt i nyt lag"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Forankring:"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Indsæt i nyt bilede"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Slet markering"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Fyld markering"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Omvend markering"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Vælg alle"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Fravælg"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palet"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Alle filer"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Fejl"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr ""
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Baggrund"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nyt billede"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Ny billede størrelse "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Åbn billede"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Gem ændringer for billede \"{0}\" før oprettelse af nyt?"
+msgid "Could not open file: {0}"
+msgstr "Kunne ikke åbne fil: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Hvis du ikke gemmer, vil ændringer være tabt."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Optegne effekt"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Fortsæt uden at gemme"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterisere"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Lag uigennemsigtighed"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Invertere farver"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Omdøb lag"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Niveauer"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Skjul lag"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Sort og hvid"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Vis lag"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Auto niveau"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etiket1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Nuance / Mætning"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etiket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Lysstyrke / Kontrast"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Tilfældig støj"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Gen-så"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Kurver"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Farvevælger"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Overføre kort"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminans"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Rød "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Grøn"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Blå "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Nulstil"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-"Venstre klik for at sætte primær farve. Højre klik for at sætte sekundær "
-"farve."
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Efter markering"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Niveauer justering"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Skift ikke værktøj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Inddate histogram"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Skift til forrige værktøj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Inddata"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Skift til blyant værktøj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Uddata"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Blyant"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Uddate histogram"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Lasso markering"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Auto"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klik og træk for at tegne omrids for valgt område."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Rød"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zoom"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Blå"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Venstre klik for at zoome ind. Højre klik for at zoome ud. Klik og træk for "
-"at zoome ind på valgt."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Sammenkædet"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Pensel bredde"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Blyant stregning"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Formindsk pensel størrelse"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Kunstnerisk"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Forøg pensel størrelse"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Ingen fokus"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Omrids form"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Sløringer"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Fyld form"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Bule"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Fyld og omrids form"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Forvræng"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Flyt markerede billedepunkter"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrot Fraktal"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Træk i valgt for at flytte valgt indhold."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Optegne"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Panorér"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Median"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klik og træk for at navigere billede."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Støj"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Venstre klik for fritegning, et billedepunkt brede linjer med primær farve, "
-"højre klik for at bruge sekundær farve."
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pikselere"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Ellipse markering"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Gør skarpere"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Klik og træk for at tegne et ellipse valg. Hold skift for at begrænse til en "
-"cirkel."
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Billede"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Overgang"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Olie farvning"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Klik og træk for at tegne farveovergang fra primær til sekundær farve. Højre "
-"klik for modsat."
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gaussisk sløring"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Lineær farveovergang"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Glød"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Lineær afspejlet farveovergang"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Blødt portræt"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Lineær diamant farveovergang"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Flise refleksion"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Radial farveovergang"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Rødøje fjerne"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Konisk farveovergang"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Frostet glas"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Farvetilstand"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Kant detektion"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Gennemsigtighedstilstand"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Stilistisk"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Afrundet rektangel"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julia fraktal"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Klik og træk for at tegne en rund rektangel (højre klik for sekundær farve). "
-"Hold skift for at begrænse."
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Bevægelsessløring"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Radius"
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Præg i relief"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Formindsk rektangels hjørne radius"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Blæk skitse"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Forøg rektangels hjørne radius"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Zoom sløring"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Venstre klik for at tegne med primær farve, højre klik for at tegne med "
-"sekundær farve."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Pol invertering"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Rektangulær markering"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Skyer"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klik og træk for at tegne et rektangel valg. Hold skift for at begrænse til "
-"en kvadrat."
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragment"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Malespand"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Reducere støj"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"enstr klik for at fylde med primær farve, højre klik for at fylde med "
-"sekundær farve."
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Radial sløring"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Stempel kloning"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Drej"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Flyt markering"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Tilføj støj"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Træk i valg for at flytte vaglt omrids."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relief"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Fritegne form"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Omrids"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Fyld tilstand"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Tilfældig støj"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Sammenhængende"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Gen-så"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etiket1"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerance"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etiket"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Ellipse"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-"Klik og træk for at tegne en ellipse (højre klik for sekundær farve). Hold "
-"skift for at begrænse til en cirkel."
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Panorér"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Klik og træk for at navigere billede."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -569,42 +758,34 @@ msgstr ""
"Venstre klik for at placere cursor, indtast dernæst den ønskede tekst. Tekst "
"farve er primær farve."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Skrifttype"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Fed"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Kursiv"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Understreg"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Venstrejustér"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "MidterJustér"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Højrejustér"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Tryllestavsmarkering"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Klik for at vælge område med tilsvarende farve."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Rektangel"
@@ -617,654 +798,618 @@ msgstr ""
"Klik og træk for at tegne en rektangel (højre klik for sekundær farve). Hold "
"skift for at begrænse til en kvadrat."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linje"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Fritegne form"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-"Venstre klik for at tegne med primær farve, højre klik for sekundær farve."
-
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Gen-farve"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Venstre klik for at erstatte sekundær farve med primær farve."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Viskelæder"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klik og træk for at slette en del af billedet."
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pikselere"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Forvræng"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Rødøje fjerne"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Billede"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Bevægelsessløring"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Sløringer"
+"Venstre klik for at tegne med primær farve, højre klik for at tegne med "
+"sekundær farve."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Blæk skitse"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Kunstnerisk"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Omrids form"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Radial sløring"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Fyld form"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Ingen fokus"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Fyld og omrids form"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Kant detektion"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Stilistisk"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Sammenhængende"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Frostet glas"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Olie farvning"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerance"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Zoom sløring"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linje"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Pol invertering"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Venstre klik for at tegne med primær farve, højre klik for sekundær farve."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Skyer"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Flyt markering"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Optegne"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Træk i valg for at flytte vaglt omrids."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Glød"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Rektangulær markering"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Tilføj støj"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Klik og træk for at tegne et rektangel valg. Hold skift for at begrænse til "
+"en kvadrat."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Støj"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Tryllestavsmarkering"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragment"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Klik for at vælge område med tilsvarende farve."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Gør skarpere"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Ellipse markering"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Blyant stregning"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Klik og træk for at tegne et ellipse valg. Hold skift for at begrænse til en "
+"cirkel."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Omrids"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Lasso markering"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gaussisk sløring"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Klik og træk for at tegne omrids for valgt område."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Flise refleksion"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Malespand"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relief"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"enstr klik for at fylde med primær farve, højre klik for at fylde med "
+"sekundær farve."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Præg i relief"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Overgang"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrot Fraktal"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Klik og træk for at tegne farveovergang fra primær til sekundær farve. Højre "
+"klik for modsat."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Bule"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Lineær farveovergang"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Drej"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Lineær afspejlet farveovergang"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Blødt portræt"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Lineær diamant farveovergang"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Reducere støj"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Radial farveovergang"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julia fraktal"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Konisk farveovergang"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Median"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Kurver"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Farvetilstand"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Niveauer"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Gennemsigtighedstilstand"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Auto niveau"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Pensel bredde"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Invertere farver"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Formindsk pensel størrelse"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterisere"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Forøg pensel størrelse"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Sort og hvid"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Malerpensel"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Nuance / Mætning"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Gen-farve"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Lysstyrke / Kontrast"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Venstre klik for at erstatte sekundær farve med primær farve."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Niveauer justering"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Inddate histogram"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Inddata"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Uddata"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Uddate histogram"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Auto"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Ellipse"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Nulstil"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Klik og træk for at tegne en ellipse (højre klik for sekundær farve). Hold "
+"skift for at begrænse til en cirkel."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Rød"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Stempel kloning"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Grøn"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Blå"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zoom"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Sammenkædet"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Venstre klik for at zoome ind. Højre klik for at zoome ud. Klik og træk for "
+"at zoome ind på valgt."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Overføre kort"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Afrundet rektangel"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Klik og træk for at tegne en rund rektangel (højre klik for sekundær farve). "
+"Hold skift for at begrænse."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminans"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Radius"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Formindsk rektangels hjørne radius"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Rød "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Forøg rektangels hjørne radius"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Blå "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Farvevælger"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Venstre klik for at sætte primær farve. Højre klik for at sætte sekundær "
+"farve."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Tilføj nyt lag"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Slet lag"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Dupliker lag"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Efter markering"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Fusionere lag nedad"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Skift ikke værktøj"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importere fra fil..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Skift til forrige værktøj"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Vend vandret"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Skift til blyant værktøj"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Vend lodret"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Blyant"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Rotere / Zoom"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Viskelæder"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Flyt lag op"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Klik og træk for at slette en del af billedet."
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Flyt lag ned"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Venstre klik for fritegning, et billedepunkt brede linjer med primær farve, "
+"højre klik for at bruge sekundær farve."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Åbn billede fil"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Flyt markerede billedepunkter"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importere fra fil"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Træk i valgt for at flytte valgt indhold."
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Ny..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Skjul"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Åbn..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Dok"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Åbn seneste"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Skjul automatisk"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Luk"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dokbar"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Gem"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flydende"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Gem som..."
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Udskriv"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "I procent"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Afslut"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "I absolut størrelse"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Ny"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Bredde:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Åbn"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "billedpunkter"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Baggrund"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Højde:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Åbn billede"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Bevar størrelsesforhold"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Kunne ikke åbne fil: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Forankring:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Fejl"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Ny billede størrelse "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Gem ændringer for billede \"{0}\" før åbning af nyt billede?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Lag-egenskaber"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Billede filer"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Navn:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Alle filer"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Synlig"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Gem billede fil"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Uigennemsighed:"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} billede ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster billede (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Fil"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Gem ændringer for billede \"{0}\" før luk?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "R_edigere"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Afslut uden at gemme"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Vis"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Beskær til valg"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "B_illede"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Størrelse..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Lag"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Lærred størrelse..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Justeringer"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Rotere 90° med uret"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Effe_kter"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Rotere 90° mod uret"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Vindue"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Rotere 180°"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Udjævn"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Hjælp"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Fortryd"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Værktøjer"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Omgør"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenter"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Klip"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Lag"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopiere"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historik"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Indsæt"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Indsæt i nyt lag"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Indsæt i nyt bilede"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Gem ændringer for billede \"{0}\" før luk?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Slet markering"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Hvis du ikke gemmer, vil ændringer være tabt."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Fyld markering"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Afslut uden at gemme"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Omvend markering"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Vælg alle"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Fravælg"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Lag uigennemsigtighed"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Zoom ind"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Omdøb lag"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Zoom ud"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Skjul lag"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Zoom til vindue"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Vis lag"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Zoom til markering"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Billede filer"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Faktisk størrelse"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Billedepunkter gitter"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Linealer"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Gem billede fil"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Billedpunkter"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Tommer"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimeter"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Fuldskærm"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "antal tråde ved rendering"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Vindue"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Version"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta Websted"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licens"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Rapportere en fejl"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Frigivet under MIT X11 Licens."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Oversæt dette program"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Generelt"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "af Pinta bidragyder"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Værktøj"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Titel"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Genvejstast"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Sti"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Udjævning"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Normal blanding / Overskriv blanding"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Vend billede vandret"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Bidragyder til denne frigivelse"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Vend billede lodret"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Tidligere bidragyder"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Vend lag vandret"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Ole Carlsen https://launchpad.net/~ole-carlsen-web"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Vend lag lodret"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Oversat af:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Afslut billedepunkter"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Baseret på arbejdet med Paint.NET"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Optegne effekt"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Bruger nogle ikoner fra:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopiere"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Om Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Lag"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Version Info"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1447,14 +1592,37 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Fortsæt uden at gemme"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "Fill mode"
+#~ msgstr "Fyld tilstand"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Udjævning"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Gem ændringer for billede \"{0}\" før oprettelse af nyt?"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Tip: Højre klik for at fjerne kontrol punkter."
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster billede (*.ora)"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Gem ændringer for billede \"{0}\" før åbning af nyt billede?"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Normal blanding / Overskriv blanding"
+
#~ msgid "Show Pad"
#~ msgstr "Vis blok"
diff --git a/po/messages-de.po b/po/messages-de.po
index 14b2c79..5adad3d 100644
--- a/po/messages-de.po
+++ b/po/messages-de.po
@@ -7,722 +7,666 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:01+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-11-30 00:19+0000\n"
+"Last-Translator: Mathias Fussenegger <Unknown>\n"
"Language-Team: German <de at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Über"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Fenster"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pinsel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Ebene"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Datei"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopieren"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "B_earbeiten"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Größe der Zeichenfläche ändern"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Ansicht"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Werkzeug"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "B_ild"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Tastenkürzel"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "E_benen"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Anpassungen"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "E_ffekte"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Fenster"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Hilfe"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Bildgröße ändern"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Werkzeuge"
-
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palette"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Um 180° drehen"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumente"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Bild horizontal spiegeln"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Ebenen"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Bild vertikal spiegeln"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Verlauf"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Um 90° im Uhrzeigersinn drehen"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ausblenden"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Um 90° im Gegenuhrzeigersinn drehen"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dockbar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Ebene horizontal spiegeln"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Schwebend"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Ebene vertikal spiegeln"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automatisch ausblenden"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Allgemein"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Dock"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0}-Bild ({1})"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Beitragende dieser Version"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Auf Auswahl beschneiden"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Frühere Beitragende"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Größe ändern …"
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Andre https://launchpad.net/~ajx\n"
-" Francisco Camenforte Torres https://launchpad.net/~fct\n"
-" Hanh Pham https://launchpad.net/~joel-nohnn\n"
-" Johannes Rössel https://launchpad.net/~joey-muhkuhsaft\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Marco Rolappe https://launchpad.net/~mrolappe\n"
-" Matthias Mailänder https://launchpad.net/~mailaender"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Leinwandgröße..."
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Übersetzt von:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Horizontal spiegeln"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Basiert auf der Arbeit von Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Vertikal spiegeln"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Einige Icons benutzt von:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Auf eine Ebene reduzieren"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Über Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Vergrößern"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Versionsinfo"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Verkleinern"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Titel"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Größe an Fenster anpassen"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Version"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Größe an Auswahl anpassen"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Pfad"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Tatsächliche Größe"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Lizenz"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Veröffentlicht unter der MIT X11-Lizenz"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Pixelgitter"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Lineale"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "Pinta-Mitwirkende"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pixel"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "Anzahl Threads, die zur Bildberechnung benutzt werden"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Zoll"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Bildgröße ändern"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Zentimeter"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Prozentual"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Vollbild"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Absolute Werte:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Breite:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Neue Ebene hinzufügen"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "Pixel"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Ebene löschen"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Höhe:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Ebene duplizieren"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Seitenverhältnis beibehalten"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Ebene mit darunterliegenden zusammenfassen"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Ebeneneigenschaften"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Aus Datei importieren..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Name:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Drehen/Vergrößern"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Sichtbar"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Ebene nach oben"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Deckkraft:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Ebene nach unten"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Größe der Zeichenfläche ändern"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Ankerpunkt:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Bilddatei öffnen"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Neues Bild"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Aus Datei importieren"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Größe des neuen Bildes "
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-"Änderungen an der Bilddatei \"{0}\" speichern, bevor eine neue angelegt wird?"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Wenn Sie nicht speichern, gehen alle Änderungen dauerhaft verloren."
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta-Webpräsenz"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Ohne Speichern fortfahren"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Einen Fehler melden"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Ebenendeckkraft"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Diese Anwendung übersetzen"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Ebene umbenennen"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Über"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Ebene verbergen"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Neu..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Ebene anzeigen"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Neuer Screenshot..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "label1"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Öffnen..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "Markierung"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Zuletzt geöffnet"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "zufälliges Rauschen"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Schließen"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "neu erzeugen"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Speichern"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Farbwähler"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Speichern unter..."
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Linksklick, um Primärfarbe festzulegen. Rechtsklick, um Sekundärfarbe "
-"festzulegen."
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Drucken"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Nach Auswahl"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Beenden"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Werkzeug nicht wechseln"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Neu"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Zum vorherigen Werkzeug wechseln"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Öffnen"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Zum Stift wechseln"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Rückgängig"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Bleistift"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Wiederherstellen"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Freie Auswahl"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Ausschneiden"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klicken und ziehen, um einen Bereich auszuwählen"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopieren"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Lupe"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Einfügen"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Zum Hineinzoomen mit linker Maustaste klicken. Zum Herauszoomen mit rechter "
-"Maustaste klicken. Klicken und einen Bereich aufziehen, um in diesen zu "
-"zoomen."
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "In neue Ebene einfügen"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Pinsel Breite"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "In neues Bild einfügen"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Pinsel Breite verringern"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Auswahl löschen"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Pinsel Breite vergrößern"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Auswahl füllen"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Nur Umrandung"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Auswahl umkehren"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Nur Füllung"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Alles auswählen"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Umrandung und Füllung"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Auswahl aufheben"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Ausgewählte Pixels bewegen"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Ausgewählten Bereich verschieben"
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Ausschnitt verschieben"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palette"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klicken und ziehen um den sichtbaren Bildbereich zu verschieben."
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-"Linksklick um Freiform zu zeichnen, 1-Pixel breite Linien mit der "
-"Vordergrundfarbe, Rechtsklick um die Hintergrundfarbe zu verwenden."
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Elliptische Auswahl"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Alle Dateien"
-#: Pinta.Tools/EllipseSelectTool.cs:44
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-"Klicken und ziehen um eine elliptische Auswahl aufzuziehen. Shift gedrückt "
-"halten, um daraus einen Kreis zu machen."
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Fehler"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-"Klicken und Ziehen, um einen Farbverlauf von der Primär- zur Sekundärfarbe "
-"zu zeichnen. Rechtsklick um die Farben zu vertauschen."
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Linearer Gradient"
-
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Linearer gespiegelter Verlauf"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Linearer rautenförmiger Verlauf"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Kreisförmiger Verlauf"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Kegelförmiger Verlauf"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Hintergrund"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Farbmodus"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Neues Bild"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Transparenz-Modus"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Bild öffnen"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Abgerundetes Rechteck"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "Datei konnte nicht geöffnet werden: {0}"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-"Klicken und ziehen um ein abgerundetes Rechteck zu zeichnen (Rechtsklick für "
-"Sekundärfarbe). Shift gedrückt halten, um daraus ein Quadrat zu machen."
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterisieren"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Eckenradius des Rechtecks verringern"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Farben invertieren"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Eckenradius des Rechtecks steigern"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Ebenen"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Linksklick um mit Primärfarbe zu zeichnen, Rechtsklick um mit Sekundärfarbe "
-"zu zeichnen."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Schwarz-Weiß"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Rechteckige Auswahl"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Automatische Tonwertkorrektur"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klicken und ziehen um eine rechteckige Auswahl aufzuziehen. Shift gedrückt "
-"halten, um daraus ein Quadrat zu machen."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Farbton/Sättigung"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Farbeimer"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Helligkeit/Kontrast"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Linksklick um eine Region mit der Primärfarbe zu füllen. Rechtsklick um eine "
-"Region mit der Sekundärfarbe zu füllen."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Stempel Klonen"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Farbkurven"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Auswahl verschieben"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Auswahl ziehen, um die Auswahl zu verschieben."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Freiform-Gestaltung"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Leuchtkraft"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Füllmodus"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Zusammenhängend"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Rot "
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Grün"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Toleranz"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Blau "
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Zurücksetzen"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-"Klicken und ziehen um eine Ellipse zu zeichnen (Rechtsklick für "
-"Sekundärfarbe). Shift gedrückthalten um daraus einen Kreis zu machen."
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
-msgstr "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Ebenenabgleich"
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr ""
-"Linksklick um den Cursor zu platzieren, dann den gewünschten Text eintippen. "
-"Textfarbe ist Vordergrundfarbe."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Eingabe-Histogramm"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "Schriftart"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Eingabe"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr "Fett"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Ausgabe"
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr "Kursiv"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Ausgabe-Histogramm"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr "Unterstrichen"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automatisch"
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr "Linksbündig"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Rot"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
-msgstr "Zentriert"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Blau"
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr "Rechtsbündig"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Verknüpft"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Zauberstab"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Bleistiftskizze"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Nach Farbe auswählen"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Künstlerisch"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "Rechteck"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Defokussieren"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr ""
-"Klicken und ziehen um ein Rechteck zu zeichnen (Rechtsklick für "
-"Sekundärfarbe). Shift gedrückt halten für ein Quadrat."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Unschärfe"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linie"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Verbeulen"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr ""
-"Linksklick um mit der Primärfarbe zu zeichnen, Rechtsklick für Sekundärfarbe."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Verzerren"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Einfärben"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrot-Fraktal"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Linksklick um die Sekundärfarbe durch die Primärfarbe zu ersetzen."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Rendern"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Radiergummi"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Median"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klicken und gedrückt lassen um einen Teil des Bildes zu löschen."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Rauschen"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "Verpixeln"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Verzerren"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Rote Augen entfernen"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Scharfzeichnen"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "Foto"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Bewegungsunschärfe"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Ölgemälde"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Unschärfe"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gaußsche Unschärfe"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Tintenskizze"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Glühen"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Künstlerisch"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Portrait weichzeichnen"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Radiale Unschärfe"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Defokussieren"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Rote Augen entfernen"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Gefrorenes Glas"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "Kanten erkennen"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr "Stilisieren"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Gefrorenes Glas"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julia-Fraktal"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Ölgemälde"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Bewegungsunschärfe"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Prägen"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Tintenskizze"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
@@ -736,544 +680,743 @@ msgstr ""
msgid "Clouds"
msgstr "Wolken"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Rendern"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragment"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Glühen"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Rauschen verringern"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Radiale Unschärfe"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Verdrehen"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "Rauschen hinzufügen"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Rauschen"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragment"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Scharfzeichnen"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Bleistiftskizze"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relief"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "Umriss"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gaußsche Unschärfe"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "zufälliges Rauschen"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "neu erzeugen"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "label1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "Markierung"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relief"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Prägen"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrot-Fraktal"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Ausschnitt verschieben"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Verbeulen"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Klicken und ziehen um den sichtbaren Bildbereich zu verschieben."
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Verdrehen"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "Text"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Portrait weichzeichnen"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr ""
+"Linksklick um den Cursor zu platzieren, dann den gewünschten Text eintippen. "
+"Textfarbe ist Vordergrundfarbe."
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Rauschen verringern"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "Schriftart"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julia-Fraktal"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "Fett"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Median"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "Kursiv"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Farbkurven"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "Unterstrichen"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Ebenen"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr "Linksbündig"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Automatische Tonwertkorrektur"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr "Zentriert"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Farben invertieren"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr "Rechtsbündig"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterisieren"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "Rechteck"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Schwarz-Weiß"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr ""
+"Klicken und ziehen um ein Rechteck zu zeichnen (Rechtsklick für "
+"Sekundärfarbe). Shift gedrückt halten für ein Quadrat."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Farbton/Sättigung"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Freiform-Gestaltung"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Linksklick um mit Primärfarbe zu zeichnen, Rechtsklick um mit Sekundärfarbe "
+"zu zeichnen."
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Helligkeit/Kontrast"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Ebenenabgleich"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Nur Umrandung"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Eingabe-Histogramm"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Nur Füllung"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Eingabe"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Umrandung und Füllung"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Ausgabe"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Ausgabe-Histogramm"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Zusammenhängend"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automatisch"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Zurücksetzen"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Toleranz"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Rot"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linie"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Grün"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Linksklick um mit der Primärfarbe zu zeichnen, Rechtsklick für Sekundärfarbe."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Blau"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Auswahl verschieben"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Verknüpft"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Auswahl ziehen, um die Auswahl zu verschieben."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Rechteckige Auswahl"
+
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
+"Klicken und ziehen um eine rechteckige Auswahl aufzuziehen. Shift gedrückt "
+"halten, um daraus ein Quadrat zu machen."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Zauberstab"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Leuchtkraft"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Nach Farbe auswählen"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Elliptische Auswahl"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Rot "
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Klicken und ziehen um eine elliptische Auswahl aufzuziehen. Shift gedrückt "
+"halten, um daraus einen Kreis zu machen."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Blau "
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Freie Auswahl"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Klicken und ziehen, um einen Bereich auszuwählen"
+
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Farbeimer"
+
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
+"Linksklick um eine Region mit der Primärfarbe zu füllen. Rechtsklick um eine "
+"Region mit der Sekundärfarbe zu füllen."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Neue Ebene hinzufügen"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradient"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Ebene löschen"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Klicken und Ziehen, um einen Farbverlauf von der Primär- zur Sekundärfarbe "
+"zu zeichnen. Rechtsklick um die Farben zu vertauschen."
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Ebene duplizieren"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Linearer Gradient"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Ebene mit darunterliegenden zusammenfassen"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Linearer gespiegelter Verlauf"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Aus Datei importieren..."
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Linearer rautenförmiger Verlauf"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Horizontal spiegeln"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Kreisförmiger Verlauf"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Vertikal spiegeln"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Kegelförmiger Verlauf"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Drehen/Vergrößern"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Ebene nach oben"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Farbmodus"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Ebene nach unten"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Transparenz-Modus"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Bilddatei öffnen"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Pinsel Breite"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Aus Datei importieren"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Pinsel Breite verringern"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Neu..."
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Pinsel Breite vergrößern"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Öffnen..."
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pinsel"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Zuletzt geöffnet"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Schließen"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Einfärben"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Speichern"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Linksklick um die Sekundärfarbe durch die Primärfarbe zu ersetzen."
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Speichern unter..."
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Drucken"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Beenden"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Neu"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Öffnen"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Hintergrund"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Ellipse"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Bild öffnen"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Klicken und ziehen um eine Ellipse zu zeichnen (Rechtsklick für "
+"Sekundärfarbe). Shift gedrückthalten um daraus einen Kreis zu machen."
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Datei konnte nicht geöffnet werden: {0}"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Stempel Klonen"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Fehler"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Lupe"
+
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-"Änderungen an Bilddatei \"{0}\" speichern, bevor ein neues Bild geöffnet "
-"wird?"
+"Zum Hineinzoomen mit linker Maustaste klicken. Zum Herauszoomen mit rechter "
+"Maustaste klicken. Klicken und einen Bereich aufziehen, um in diesen zu "
+"zoomen."
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Bilddateien"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Abgerundetes Rechteck"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Alle Dateien"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Klicken und ziehen um ein abgerundetes Rechteck zu zeichnen (Rechtsklick für "
+"Sekundärfarbe). Shift gedrückt halten, um daraus ein Quadrat zu machen."
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Bilddatei speichern"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Radius"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0}-Bild ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Eckenradius des Rechtecks verringern"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster-Bild (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Eckenradius des Rechtecks steigern"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Änderungen an Bilddatei \"{0}\" vor dem Schließen speichern?"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Farbwähler"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Schließen ohne zu speichern"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Linksklick, um Primärfarbe festzulegen. Rechtsklick, um Sekundärfarbe "
+"festzulegen."
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Auf Auswahl beschneiden"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Nach Auswahl"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Größe ändern …"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Werkzeug nicht wechseln"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Leinwandgröße..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Zum vorherigen Werkzeug wechseln"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Um 90° im Uhrzeigersinn drehen"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Zum Stift wechseln"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Um 90° im Gegenuhrzeigersinn drehen"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Bleistift"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Um 180° drehen"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Radiergummi"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Auf eine Ebene reduzieren"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Klicken und gedrückt lassen um einen Teil des Bildes zu löschen."
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Rückgängig"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Linksklick um Freiform zu zeichnen, 1-Pixel breite Linien mit der "
+"Vordergrundfarbe, Rechtsklick um die Hintergrundfarbe zu verwenden."
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Wiederherstellen"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Ausgewählte Pixels bewegen"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Ausschneiden"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Ausgewählten Bereich verschieben"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopieren"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ausblenden"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Einfügen"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Dock"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "In neue Ebene einfügen"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automatisch ausblenden"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "In neues Bild einfügen"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dockbar"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Auswahl löschen"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Schwebend"
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Auswahl füllen"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Auswahl umkehren"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Prozentual"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Alles auswählen"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Absolute Werte:"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Auswahl aufheben"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Breite:"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Vergrößern"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "Pixel"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Verkleinern"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Höhe:"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Größe an Fenster anpassen"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Seitenverhältnis beibehalten"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Größe an Auswahl anpassen"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Ankerpunkt:"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Tatsächliche Größe"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Größe des neuen Bildes "
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Pixelgitter"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Ebeneneigenschaften"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Lineale"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Name:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pixel"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Sichtbar"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Zoll"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Deckkraft:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Zentimeter"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Vollbild"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Datei"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Fenster"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "B_earbeiten"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta-Webpräsenz"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Ansicht"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Einen Fehler melden"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "B_ild"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Diese Anwendung übersetzen"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "E_benen"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Allgemein"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Anpassungen"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Werkzeug"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "E_ffekte"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Tastenkürzel"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Fenster"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Kantenglättung"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Werkzeuge"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumente"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Ebenen"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Verlauf"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Bild horizontal spiegeln"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Bild vertikal spiegeln"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Änderungen an Bilddatei \"{0}\" vor dem Schließen speichern?"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Ebene horizontal spiegeln"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Wenn Sie nicht speichern, gehen alle Änderungen dauerhaft verloren."
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Ebene vertikal spiegeln"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Schließen ohne zu speichern"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopieren"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Ebenendeckkraft"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Ebene"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Ebene umbenennen"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Ebene verbergen"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Ebene anzeigen"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Bilddateien"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Bilddatei speichern"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "Anzahl Threads, die zur Bildberechnung benutzt werden"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Version"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Lizenz"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Veröffentlicht unter der MIT X11-Lizenz"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "Pinta-Mitwirkende"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Titel"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Pfad"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Beitragende dieser Version"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Frühere Beitragende"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Andre https://launchpad.net/~ajx\n"
+" Francisco Camenforte Torres https://launchpad.net/~fct\n"
+" Hanh Pham https://launchpad.net/~joel-nohnn\n"
+" Johannes Rössel https://launchpad.net/~joey-muhkuhsaft\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Marco Rolappe https://launchpad.net/~mrolappe\n"
+" Mathias Fussenegger https://launchpad.net/~f-mathias\n"
+" Matthias Mailänder https://launchpad.net/~mailaender"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Übersetzt von:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Basiert auf der Arbeit von Paint.NET:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Einige Icons benutzt von:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Über Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Versionsinfo"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1455,17 +1598,64 @@ msgstr ""
"Bemerkung: Um das beste Ergebnis zu bekommen, markiere am bestens jede Auge "
"einzeln."
+#~ msgid "Help"
+#~ msgstr "Hilfe"
+
+#~ msgid "Adjustments"
+#~ msgstr "Anpassungen"
+
+#~ msgid "Effects"
+#~ msgstr "Effekte"
+
+#~ msgid "File"
+#~ msgstr "Datei"
+
+#~ msgid "Edit"
+#~ msgstr "Bearbeiten"
+
+#~ msgid "View"
+#~ msgstr "Ansicht"
+
+#~ msgid "Image"
+#~ msgstr "Bild"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Ohne Speichern fortfahren"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr ""
+#~ "Änderungen an der Bilddatei \"{0}\" speichern, bevor eine neue angelegt wird?"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Tipp: Rechtsklicken zum Entfernen eines Kontrollpunkts."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr ""
+#~ "Änderungen an Bilddatei \"{0}\" speichern, bevor ein neues Bild geöffnet "
+#~ "wird?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster-Bild (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Kantenglättung"
+
+#~ msgid "Fill mode"
+#~ msgstr "Füllmodus"
+
#~ msgid "Show Pad"
#~ msgstr "zeige Leiste"
diff --git a/po/messages-el.po b/po/messages-el.po
index c194ba2..dfb95c5 100644
--- a/po/messages-el.po
+++ b/po/messages-el.po
@@ -7,536 +7,743 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 10:57+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-16 10:57+0000\n"
+"Last-Translator: Νιάνιος Ρωμανός <Unknown>\n"
"Language-Team: Greek <el at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Σχετικά με..."
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Παράθυρο"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Πινέλο"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Στρώμα"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Αρχείο"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "αντιγραφή"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Επεξεργασία"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Αλλαγή Μεγέθους"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Προβολή"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Εργαλείο"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "Ει_κόνα"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Πλήκτρο συντόμευσης"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "Επίπε_δα"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Ε_φέ"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "Παρά_θυρα"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Βοήθεια"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Αλλαγή Μεγέθους Εικόνας"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Εργαλεία"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Περιστροφή 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Παλέττα"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Αναποδογύρισμα Εικόνας Οριζόντια"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Έγγραφα"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Αναποδογύρισμα Εικόνας Κάθετα"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Επίπεδα"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Περιστροφή 90° Δεξιόστροφα"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Ιστορικό"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Περιστροφή 90° Αριστερόστροφα"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Απόκρυψη"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Αναποδογύρισμα Στρώματος Οριζόντια"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Αναποδογύρισμα Στρώματος Κάθετα"
+
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Γενικά"
+
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} εικόνα ({1})"
+
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Ελεύθερα μετακινούμενη"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Αλλαγή Μεγέθους"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Αυτόματη απόκρυψη"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Μέγεθος Καμβά"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Προσάρτηση"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Οριζόντια Αντιστροφή"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Συντελεστές Έκδοσης"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Κατακόρυφη Αντιστροφή"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Προηγούμενοι Συντελεστές"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Ισοπέδωση"
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Psychorat https://launchpad.net/~dougy-giro1\n"
-" spiros anthis https://launchpad.net/~sugaraddicted"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Μεγέθυνση"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Μεταφράστηκε από:"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Σμίκρυνση"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Βασίζεται στο Paint.NET"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Εστίαση στο Παράθυρο"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Γίνεται χρήση εικονιδίων απο:"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Εστίαση στην επιλογή"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Σχετικά με το Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Πραγματικό μέγεθος"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Πληροφορίες Έκδοσης"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Γραμμή Εργαλείων"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Τίτλος"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Πίνακας Pixel"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Έκδοση"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Χάρακες"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Διαδρομή"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Εικονοστοιχεία"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Άδεια Χρήσης"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Ίντσες"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Κυκλοφορεί κάτω απο την MIT X11 άδεια χρήσης"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Εκατοστά"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Πνευματικά Δικαιώματα"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Πλήρης Οθόνη"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "απο τους συντελεστές του Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Μονάδας Χάρακα"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr ""
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Προσθήκη Στρώματος"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Αλλαγή Μεγέθους Εικόνας"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Διαγραφή Στρώματος"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Σε ποσοστό:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Αντιγραφή Στρώματος"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Σε απόλυτο μέγεθος:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Πλάτος:"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Εισαγωγή απο αρχείο..."
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "Εικονοστοιχεία"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Περιστροφή / Ζουμ"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Ύψος:"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Μετακίνηση Στρώματος Πάνω"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Διατήρηση αναλογίας διαστάσεων"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Μετακίνηση Στρώματος Κάτω"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Ιδιότητες στρώματος"
-
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Όνομα:"
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Ορατό"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Άνοιγμα Αρχείου Εικόνας"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Διαφάνεια:"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Εισαγωγή Απο Αρχείο"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Αλλαγή Μεγέθους"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Αποθήκευση όλων"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Αγκυροβόληση"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Νέα Εικόνα"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Ιστοσελίδα Pinta"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Νέο Μέγεθος Εικόνας "
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Στείλτε αναφορά σφάλματος"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-"Να αποθηκευτούν οι αλλαγές στην εικόνα \"{0}\" πριν δημιουργήσετε νέα;"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Αν δε γίνει αποθήκευση, οι αλλαγές θα χαθούν οριστικά."
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Σχετικά με..."
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Να μην γίνει αποθήκευση"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Νέο..."
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Αδιαφάνεια στρώματος"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Νέα αποτύπωση οθόνης"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Μετονομασία Στρώματος"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Άνοιγμα..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Απόκρυψη Στρώματος"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Άνοιγμα Πρόσφατου"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Εμφάνιση Στρώματος"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Κλείσιμο"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "ετικέττα1"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Αποθήκευση"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "ετικέττα"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Αποθήκευση Ως"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Τυχαίος Θόρυβος"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Εκτύπωση"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Έξοδος"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Επιλογέας Χρώματος"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Νέο"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr "Αριστερό κλικ πρωτεύον χρώμα.Δεξί κλικ δευτερεύον χρώμα."
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Άνοιγμα"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Αναίρεση"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Επαναφορά"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Αποκοπή"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Αλλαγή σε μολύβι"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Αντιγραφή"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Μολύβι"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Επικόλληση"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Επιλογή με λάσο"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Επικόλληση Σε Νέο Στρώμα"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Επικόλληση Σε Νέα Εικόνα"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Μεγένθυση"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Διαγραφή Επιλογής"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Επιλογή Αρχείου"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Μήκος βούρτσας"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Αντιστροφή Επιλογής"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Επιλογή Όλων"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Αποεπιλογή"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Θέστε αριθμό χρωμάτων"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Παλέττα"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Όλα τα αρχεία"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Σφάλμα"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Ελλειψοειδής επιλογή"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Φόντο"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Νέα Εικόνα"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Διαβάθμιση χρώματος"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Άνοιγμα εικόνας"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Δημιουργία πόστερ"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Αντιστροφή χρωμάτων"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Επίπεδα"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Ασπρόμαυρο"
+
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Τύπος χρώματος"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Απόχρωση / Κορεσμός"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr ""
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Φωτεινότητα / αντίθεση"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Στρογγυλεμένο ορθογώνιο"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Σέπια"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Καμπύλες"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Ακτίνα"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Φωτεινότητα"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Κόκκινο "
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Ορθογώνια επιλογή"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Πράσινο"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Μπλέ "
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Επαναφορά"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Ρύθμιση Επιπέδων"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Ιστόγραμμα Εισόδου"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Είσοδος"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Έξοδος"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Ιστόγραμμα Εξόδου"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Αυτόματα"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Κόκκινο"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Μπλέ"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Συνδεμένο"
+
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Σκίτσο με μολύβι"
+
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Καλλιτεχνικό"
+
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Αναίρεση Εστίασης"
+
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Φούσκωμα"
+
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Παραμόρφωση"
+
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Μετακίνηση επιλογής"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Αποτύπωση"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Μέση τιμή"
+
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Θόρυβος"
+
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Εικονοστοιχειοποίηση"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Όξυνση"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Φωτογραφία"
+
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Ζωγραφική Λαδιού"
+
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Θόλωμα Gauss"
+
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Λάμψη"
+
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Αντανάκλαση Πλακιδίου"
+
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Αφαίρεση Κοκκινίλας Ματιών"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Παγωμένο Γυαλί"
+
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Εντοπισμός Άκρου"
+
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Πρόσδοση Ύφους"
+
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Φράκταλ Julia"
+
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Θόλωμα κίνησης"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Εμβάθυνση"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Θόλωμα μεγέθυνσης"
+
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Πολική Αναστροφή"
+
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Σύννεφα"
+
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Κατακερμάτιση"
+
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Μείωση Θορύβου"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Ακτινικό θόλωμα"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Συστροφή"
+
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Προσθήκη θορύβου"
+
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Ανάγλυφο"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Εξωτερικό περίγραμμα"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Τυχαίος Θόρυβος"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "ετικέττα1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "ετικέττα"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Ανοχή"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
#: Pinta.Tools/TextTool.cs:37
@@ -549,42 +756,34 @@ msgid ""
"color."
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Γραμματοσειρά"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Έντονα"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Πλάγια"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Υπογράμμιση"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Αριστερή στοίχιση"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Δεξιά στοίχιση"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr ""
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr ""
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Ορθογώνιο"
@@ -595,653 +794,600 @@ msgid ""
"shift to constrain to a square."
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Γραμμή"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Γόμα"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Εικονοστοιχειοποίηση"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Παραμόρφωση"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Αφαίρεση Κοκκινίλας Ματιών"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Φωτογραφία"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Ανοχή"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Θόλωμα κίνησης"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Γραμμή"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr ""
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Μετακίνηση επιλογής"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Καλλιτεχνικό"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Ακτινικό θόλωμα"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Ορθογώνια επιλογή"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Αναίρεση Εστίασης"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Εντοπισμός Άκρου"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Πρόσδοση Ύφους"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Παγωμένο Γυαλί"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Ελλειψοειδής επιλογή"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Ζωγραφική Λαδιού"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Θόλωμα μεγέθυνσης"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Επιλογή με λάσο"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Πολική Αναστροφή"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Σύννεφα"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Αποτύπωση"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Λάμψη"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Διαβάθμιση χρώματος"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Προσθήκη θορύβου"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Θόρυβος"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Κατακερμάτιση"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Όξυνση"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Σκίτσο με μολύβι"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Εξωτερικό περίγραμμα"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Θόλωμα Gauss"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Αντανάκλαση Πλακιδίου"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Τύπος χρώματος"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Ανάγλυφο"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Εμβάθυνση"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Μήκος βούρτσας"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Φούσκωμα"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Συστροφή"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Πινέλο"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Μείωση Θορύβου"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Φράκταλ Julia"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Μέση τιμή"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Καμπύλες"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Επίπεδα"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Αντιστροφή χρωμάτων"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Δημιουργία πόστερ"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Ασπρόμαυρο"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Απόχρωση / Κορεσμός"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Σέπια"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Φωτεινότητα / αντίθεση"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Μεγένθυση"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Ρύθμιση Επιπέδων"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Ιστόγραμμα Εισόδου"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Στρογγυλεμένο ορθογώνιο"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Είσοδος"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Έξοδος"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Ακτίνα"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Ιστόγραμμα Εξόδου"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Αυτόματα"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Επαναφορά"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Επιλογέας Χρώματος"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Κόκκινο"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr "Αριστερό κλικ πρωτεύον χρώμα.Δεξί κλικ δευτερεύον χρώμα."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Πράσινο"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Μπλέ"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Συνδεμένο"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Προηγούμενο εργαλείο"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Αλλαγή σε μολύβι"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Μολύβι"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Φωτεινότητα"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Γόμα"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Κόκκινο "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Μπλέ "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Προσθήκη Στρώματος"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Απόκρυψη"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Διαγραφή Στρώματος"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Προσάρτηση"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Αντιγραφή Στρώματος"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Αυτόματη απόκρυψη"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Εισαγωγή απο αρχείο..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Ελεύθερα μετακινούμενη"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Οριζόντια Αντιστροφή"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Κατακόρυφη Αντιστροφή"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Σε ποσοστό:"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Περιστροφή / Ζουμ"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Σε απόλυτο μέγεθος:"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Μετακίνηση Στρώματος Πάνω"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Πλάτος:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Μετακίνηση Στρώματος Κάτω"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "Εικονοστοιχεία"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Άνοιγμα Αρχείου Εικόνας"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Ύψος:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Εισαγωγή Απο Αρχείο"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Διατήρηση αναλογίας διαστάσεων"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Νέο..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Αγκυροβόληση"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Άνοιγμα..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Νέο Μέγεθος Εικόνας "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Άνοιγμα Πρόσφατου"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Ιδιότητες στρώματος"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Κλείσιμο"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Όνομα:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Αποθήκευση"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Ορατό"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Αποθήκευση Ως"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Διαφάνεια:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Εκτύπωση"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Έξοδος"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Αρχείο"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Νέο"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Επεξεργασία"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Άνοιγμα"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Προβολή"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Φόντο"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "Ει_κόνα"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Άνοιγμα εικόνας"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "Επίπε_δα"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Σφάλμα"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Ε_φέ"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Να αποθηκευθούν οι αλλαγές στην εικόνα \"{0}\" πριν ανοίξετε νέα;"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "Παρά_θυρα"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Αρχεία Εικόνων"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Εργαλειοθήκες"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Όλα τα αρχεία"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Βοήθεια"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Αποθήκευση αρχείου εικόνας"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Εργαλεία"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} εικόνα ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Έγγραφα"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Εικόνα OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Επίπεδα"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Ιστορικό"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Να αποθηκευτούν οι αλλαγές στην εικόνα \"{0}\" πριν την έξοδο;"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Αν δε γίνει αποθήκευση, οι αλλαγές θα χαθούν οριστικά."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Κλείσιμο χωρίς αποθήκευση"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Αλλαγή Μεγέθους"
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Μέγεθος Καμβά"
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Περιστροφή 90° Δεξιόστροφα"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Περιστροφή 90° Αριστερόστροφα"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Περιστροφή 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Ισοπέδωση"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Αναίρεση"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Επαναφορά"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Αποκοπή"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Αντιγραφή"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Επικόλληση"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Επικόλληση Σε Νέο Στρώμα"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Επικόλληση Σε Νέα Εικόνα"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Διαγραφή Επιλογής"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Αδιαφάνεια στρώματος"
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Επιλογή Αρχείου"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Μετονομασία Στρώματος"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Αντιστροφή Επιλογής"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Απόκρυψη Στρώματος"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Επιλογή Όλων"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Εμφάνιση Στρώματος"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Αποεπιλογή"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Αρχεία Εικόνων"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Μεγέθυνση"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Σμίκρυνση"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Εστίαση στο Παράθυρο"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Αποθήκευση αρχείου εικόνας"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Εστίαση στην επιλογή"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Πραγματικό μέγεθος"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Χάρακες"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Εικονοστοιχεία"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Έκδοση"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Ίντσες"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Άδεια Χρήσης"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Εκατοστά"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Κυκλοφορεί κάτω απο την MIT X11 άδεια χρήσης"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Πλήρης Οθόνη"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Πνευματικά Δικαιώματα"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Παράθυρο"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "απο τους συντελεστές του Pinta"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Ιστοσελίδα Pinta"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Τίτλος"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Στείλτε αναφορά σφάλματος"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Διαδρομή"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Γενικά"
-
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Εργαλείο"
-
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Πλήκτρο συντόμευσης"
-
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Antialiasing"
-
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Αναποδογύρισμα Εικόνας Οριζόντια"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Συντελεστές Έκδοσης"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Αναποδογύρισμα Εικόνας Κάθετα"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Προηγούμενοι Συντελεστές"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Αναποδογύρισμα Στρώματος Οριζόντια"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Petros Kyladitis https://launchpad.net/~multipetros\n"
+" Psychorat https://launchpad.net/~dougy-giro1\n"
+" spiros anthis https://launchpad.net/~sugaraddicted\n"
+" Νιάνιος Ρωμανός https://launchpad.net/~romanos-nianios"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Αναποδογύρισμα Στρώματος Κάθετα"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Μεταφράστηκε από:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Βασίζεται στο Paint.NET"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Γίνεται χρήση εικονιδίων απο:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "αντιγραφή"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Σχετικά με το Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Στρώμα"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Πληροφορίες Έκδοσης"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1420,11 +1566,53 @@ msgstr ""
"Υπόδειξη: Για καλύτερα αποτελέσματα, χρησημοποιείστε τα εργαλεία επιλογής σε "
"κάθε μάτι."
+#~ msgid "Help"
+#~ msgstr "Βοήθεια"
+
+#~ msgid "Adjustments"
+#~ msgstr "Προσαρμογές"
+
+#~ msgid "Effects"
+#~ msgstr "Εφέ"
+
+#~ msgid "File"
+#~ msgstr "Αρχείο"
+
+#~ msgid "Edit"
+#~ msgstr "Επεξεργασία"
+
+#~ msgid "View"
+#~ msgstr "Προβολή"
+
+#~ msgid "Image"
+#~ msgstr "Εικόνα"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Να μην γίνει αποθήκευση"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr ""
+#~ "Να αποθηκευτούν οι αλλαγές στην εικόνα \"{0}\" πριν δημιουργήσετε νέα;"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Εικόνα OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Antialiasing"
+
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Να αποθηκευθούν οι αλλαγές στην εικόνα \"{0}\" πριν ανοίξετε νέα;"
diff --git a/po/messages.pot b/po/messages-en_GB.po
similarity index 92%
copy from po/messages.pot
copy to po/messages-en_GB.po
index 8ea8d21..97c4499 100644
--- a/po/messages.pot
+++ b/po/messages-en_GB.po
@@ -1,20 +1,21 @@
-# Pinta Translatable Strings
-# Copyright (C) 2010 Pinta Contributors
-# This file is distributed under the same license as the Pinta package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# English (United Kingdom) translation for pinta
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the pinta package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2010.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: pinta\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2010-10-31 12:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2010-11-04 20:01+0000\n"
+"Last-Translator: nsx98 <Unknown>\n"
+"Language-Team: English (United Kingdom) <en_GB at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
#: Pinta.Core/Classes/DocumentWorkspace.cs:160
#: Pinta.Core/Classes/DocumentWorkspace.cs:181
@@ -176,7 +177,7 @@ msgstr ""
#: Pinta.Core/Actions/ViewActions.cs:72
msgid "Centimeters"
-msgstr ""
+msgstr "Centimetres"
#: Pinta.Core/Actions/ViewActions.cs:73
msgid "Fullscreen"
@@ -225,8 +226,7 @@ msgid "Move Layer Down"
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
+msgid "Layer Properties..."
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
@@ -360,7 +360,7 @@ msgstr ""
#: Pinta.Core/Actions/EditActions.cs:81
msgid "Set Number of Colors"
-msgstr ""
+msgstr "Set Number of Colours"
#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
#: Pinta/MainWindow.cs:569
@@ -403,6 +403,11 @@ msgstr ""
msgid "GIMP palette (*.gpl)"
msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
+
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
msgstr ""
@@ -432,7 +437,7 @@ msgstr ""
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Invert Colours"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
@@ -721,12 +726,16 @@ msgstr ""
msgid "label"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr ""
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
#: Pinta.Tools/PanTool.cs:38
@@ -746,6 +755,8 @@ msgid ""
"Left click to place cursor, then type desired text. Text color is primary "
"color."
msgstr ""
+"Left click to place cursor, then type desired text. Text colour is primary "
+"colour."
#: Pinta.Tools/TextTool.cs:144
msgid "Font"
@@ -769,7 +780,7 @@ msgstr ""
#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
-msgstr ""
+msgstr "Centre Align"
#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
@@ -784,6 +795,8 @@ msgid ""
"Click and drag to draw a rectangle (right click for secondary color). Hold "
"shift to constrain to a square."
msgstr ""
+"Click and drag to draw a rectangle (right click for secondary colour). Hold "
+"shift to constrain to a square."
#: Pinta.Tools/FreeformShapeTool.cs:53
msgid "Freeform Shape"
@@ -794,6 +807,8 @@ msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
+"Left click to draw with primary colour, right click to draw with secondary "
+"colour."
#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
msgid "Fill Style"
@@ -832,8 +847,10 @@ msgid "Line"
msgstr ""
#: Pinta.Tools/LineCurveTool.cs:44
-msgid "Left click to draw with primary color, right click for secondary color."
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
+"Left click to draw with primary colour, right click for secondary colour."
#: Pinta.Tools/MoveSelectionTool.cs:42
msgid "Move Selection"
@@ -859,7 +876,7 @@ msgstr ""
#: Pinta.Tools/MagicWandTool.cs:54
msgid "Click to select region of similar color."
-msgstr ""
+msgstr "Click to select region of similar colour."
#: Pinta.Tools/EllipseSelectTool.cs:38
msgid "Ellipse Select"
@@ -888,6 +905,8 @@ msgid ""
"Left click to fill a region with the primary color, right click to fill with "
"the secondary color."
msgstr ""
+"Left click to fill a region with the primary colour, right click to fill "
+"with the secondary colour."
#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
msgid "Gradient"
@@ -925,7 +944,7 @@ msgstr ""
#: Pinta.Tools/GradientTool.cs:202
msgid "Color Mode"
-msgstr ""
+msgstr "Colour Mode"
#: Pinta.Tools/GradientTool.cs:203
msgid "Transparency Mode"
@@ -953,11 +972,11 @@ msgstr ""
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
-msgstr ""
+msgstr "Recolour"
#: Pinta.Tools/RecolorTool.cs:61
msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
+msgstr "Left click to replace the secondary colour with the primary colour."
#: Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
@@ -988,6 +1007,8 @@ msgid ""
"Click and drag to draw an ellipse (right click for secondary color). Hold "
"shift to constrain to a circle."
msgstr ""
+"Click and drag to draw an ellipse (right click for secondary colour). Hold "
+"shift to constrain to a circle."
#: Pinta.Tools/CloneStampTool.cs:43
msgid "Clone Stamp"
@@ -1016,6 +1037,8 @@ msgid ""
"Click and drag to draw a rounded rectangle (right click for secondary "
"color). Hold shift to constrain."
msgstr ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"colour). Hold shift to constrain."
#: Pinta.Tools/RoundedRectangleTool.cs:83
msgid "Radius"
@@ -1031,11 +1054,12 @@ msgstr ""
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
-msgstr ""
+msgstr "Colour Picker"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Left click to set primary colour. Right click to set secondary colour."
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
@@ -1070,6 +1094,8 @@ msgid ""
"Left click to draw freeform, one-pixel wide lines with the primary color, "
"right click to use the secondary color."
msgstr ""
+"Left click to draw freeform, one-pixel wide lines with the primary colour, "
+"right click to use the secondary colour."
#: Pinta.Tools/MoveSelectedTool.cs:42
msgid "Move Selected Pixels"
@@ -1148,6 +1174,10 @@ msgstr ""
msgid "New Image Size "
msgstr ""
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr ""
+
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
msgstr ""
@@ -1160,7 +1190,11 @@ msgstr ""
msgid "Opacity:"
msgstr ""
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
+
+#: Pinta/MainWindow.cs:450
msgid "_File"
msgstr ""
@@ -1344,6 +1378,10 @@ msgstr ""
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
+"This is a dummy translation so that the credits are counted as translated.\n"
+"\n"
+"Launchpad Contributions:\n"
+" nsx98 https://launchpad.net/~nsx98"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
@@ -1406,11 +1444,11 @@ msgstr ""
#: MotionBlurEffect dialog
msgid "Center Offset"
-msgstr ""
+msgstr "Centre Offset"
#: OilPaintingEffect dialog
msgid "Centered"
-msgstr ""
+msgstr "Centred"
#: PencilSketchEffect dialog
msgid "Coarseness"
@@ -1418,15 +1456,15 @@ msgstr ""
#: AddNoiseEffect dialog
msgid "Color Range"
-msgstr ""
+msgstr "Colour Range"
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr ""
+msgstr "Colour Saturation"
#: GlowEffect dialog
msgid "Coloring"
-msgstr ""
+msgstr "Colouring"
#: AddNoiseEffect dialog
msgid "Contrast"
@@ -1531,7 +1569,9 @@ msgid "Warmth"
msgstr ""
#: RadialBlurEffect dialog
-msgid "Use low quality for previews, small images, and small angles. Use high quality for final quality, large images, and large angles."
+msgid ""
+"Use low quality for previews, small images, and small angles. Use high "
+"quality for final quality, large images, and large angles."
msgstr ""
#: RedEyeRemoveEffect dialog
diff --git a/po/messages-es.po b/po/messages-es.po
index bc6557e..2bd41b3 100644
--- a/po/messages-es.po
+++ b/po/messages-es.po
@@ -7,560 +7,747 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-05 03:39+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-07 22:06+0000\n"
"Last-Translator: Fitoschido <Unknown>\n"
"Language-Team: Spanish <es at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Acerca de"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Ventana"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pincel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Capa"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Archivo"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "copiar"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Editar"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Redimensionar el lienzo"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Ver"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Herramienta"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Imagen"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Atajo de teclado"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Capas"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Mezclado normal"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Ajustes"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Sobreescribir"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efe_ctos"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Suavizado habilitado"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Ventana"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Suavizado deshabilitado"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "Ay_uda"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Redimensionar la imagen"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Finalizar píxeles"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Herramientas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Girar 180º"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Voltear imagen horizontalmente"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documentos"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Voltear imagen verticalmente"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Capas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Girar 90º a la derecha"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historial"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Girar 90º a la izquierda"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ocultar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Voltear capa horizontalmente"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Acoplable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Voltear capa verticalmente"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flotante"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "General"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Ocultar automáticamente"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "Imagen {0} ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Anclar"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Recortar según la selección"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Contribuidores de esta versión"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Redimensionar…"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Contribuidores anteriores"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Tamaño de lienzo..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Fitoschido https://launchpad.net/~fitoschido\n"
-" Francisco Camenforte Torres https://launchpad.net/~fct\n"
-" Jin Valiant https://launchpad.net/~jin-valiant\n"
-" Jonathan Pobst https://launchpad.net/~jpobst"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Voltear horizontalmente"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Traducido por:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Voltear verticalmente"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Basado en el trabajo de Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Acoplar"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Se usan algunos iconos de:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Ampliar"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Acerca de Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Reducir"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Información de la versión"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Ampliar a ventana"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Título"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Ampliar a selección"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versión"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Tamaño real"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Ruta"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Barra de herramientas"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licencia"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Cuadrícula de píxeles"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Publicado bajo licencia MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Reglas"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Píxeles"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "de los contribuidores de Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Pulgadas"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "número de hebras que se usarán al renderizar"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centímetros"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Cambiar tamaño de imagen"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Pantalla completa"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Por porcentaje:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Unidades de regla"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Por tamaño absoluto:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Añadir nueva capa"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Anchura:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Eliminar capa"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "píxeles"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplicar capa"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Altura:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Combinar las capas hacia abajo"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Mantener las proporciones"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importar desde archivo..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Girar y zoom"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Subir capa"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Bajar capa"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Propiedades de capa"
+msgid "Layer Properties..."
+msgstr "Propiedades de capa..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nombre:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Abrir archivo de imagen"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Visible"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importar desde archivo"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Opacidad:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Guardar todo"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Cambiar tamaño del lienzo"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Cerrar todo"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Anclaje:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Sitio web de Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Informar de un fallo"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Traducir esta aplicación"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Acerca de"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nuevo..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nueva captura de pantalla..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Abrir..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Abrir recientes"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Cerrar"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Guardar"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Guardar como…"
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Imprimir"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Salir"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nuevo"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Abrir"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Deshacer"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Rehacer"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Cortar"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Copiar"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Pegar"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Pegar en una capa nueva"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Pegar en una imagen nueva"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Borrar selección"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Rellenar la selección"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Invertir la selección"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Seleccionar todo"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Anular la selección"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Restablecer valores predeterminados"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Configurar número de colores"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Abrir archivo de paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Archivos de paletas (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Todos los archivos"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"No se pudo abrir el archivo de paleta: {0}.\n"
+"Verifique que está tratando de abrir un archivo de paleta de GIMP o "
+"Paint.NET válido."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Error"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Guardar archivo de paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paleta de Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Paleta de GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Imagen sin guardar {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Fondo"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
-msgstr "Nueva Imagen"
+msgstr "Nueva imagen"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Nuevo tamaño de imagen "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Abrir imagen"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "¿Guardar los cambios en la imagen \"{0}\" antes de crear otra?"
+msgid "Could not open file: {0}"
+msgstr "No se pudo abrir el archivo: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Si no guarda los cambios, éstos se perderán permanentemente."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efecto de renderizado"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Continuar sin guardar"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterizar"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Opacidad de la capa"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Invertir colores"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Renombrar capa"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Niveles"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Ocultar Capa"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Blanco y negro"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Mostrar Capa"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Autonivel"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etiqueta1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Matiz y saturación"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etiqueta"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Brillo y contraste"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Ruido aleatorio"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Reiniciar semilla"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Curvas"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Selector de color"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Mapa de transferencia"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Haga clic con el botón izquierdo para establecer el color primario. Haga "
-"clic con el botón derecho para establecer el color secundario."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Tras selección"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminosidad"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "No cambiar herramienta"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Usar herramienta anterior"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Rojo "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Usar lápiz"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Verde"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Lápiz"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Azul "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Selección con lazo"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Restablecer"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Seleccione y arrastre el contorno para seleccionar un área."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Consejo: Haga clic secundario para eliminar los puntos de control."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zoom"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Ajuste de niveles"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Haga clic con el botón izquierdo para ampliar o con el botón derecho para "
-"reducir. Haga clic y arrastre para hacer zoom en la selección."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Histograma de entrada"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Grosor del pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Entrada"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Reducir grosor del pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Salida"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Aumentar grosor del pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Histograma de salida"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Perfilar forma"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automático"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Rellenar forma"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Rojo"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Rellenar y perfilar forma"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Azul"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Desplazar píxeles seleccionados"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Vinculado"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Arrastre la selección para desplazar el contenido."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Boceto a lápiz"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Desplazamiento"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artístico"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Haga clic y arrastre para desplazarse por la imagen."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Desenfocar"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Clic con botón izquierdo para dibujar libremente líneas de un píxel de "
-"grosor con color primario, clic con botón derecho para usar color secundario."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Difuminados"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Selección elíptica"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Abultar"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Haga clic y arrastre para dibujar una selección elíptica. Mantenga pulsada "
-"la tecla Mayús si desea que la forma sea un círculo."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distorsión"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradiente"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fractal de Mandelbrot"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Haga clic y arrastre para dibujar un gradiente del color primario al "
-"secundario. Haga clic con el botón derecho para realizar la operación a la "
-"inversa."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Renderizar"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Gradiente lineal"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Mediana"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Gradiente lineal reflejado"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Ruido"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Gradiente lineal en diamante"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pixelar"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Gradiente radial"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Nítido"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Gradiente cónico"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Fotografía"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Modo de color"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Pintura al óleo"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Modo de transparencia"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Difuminado gaussiano"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Rectángulo redondeado"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Brillo"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Haga clic y arrastre para dibujar un rectángulo redondeado (con el botón "
-"derecho para usar el color secundario). Mantenga pulsada la tecla Mayús si "
-"desea que la forma sea un cuadrado."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Suavizado de retrato"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Radio"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Reflejo en mosaico"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Reducir radio de la esquina del rectángulo"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Quitar ojos rojos"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Aumentar radio de la esquina del rectángulo"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Cristal congelado"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Haga clic con el botón izquierdo para dibujar con el color primario, o bien "
-"con el botón derecho para dibujar con el color secundario."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Detección de bordes"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Selección rectangular"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Estilizado"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Haga clic y arrastre para dibujar una selección rectangular. Mantenga "
-"pulsada la tecla Mayús si desea que la forma sea un cuadrado."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fractal de Julia"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Cubo de pintura"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Difuminado de movimiento"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Haga clic con botón izquierdo para rellenar una región con el color "
-"primario, con el botón derecho para usar el color secundario."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Realce"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Tampón de clonación"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Boceto en tinta"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Mover selección"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Difuminado de zoom"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Arrastre la selección para mover su contorno."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Inversión polar"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Forma libre"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Nubes"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Modo de relleno"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragmento"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Contigua"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Reducir ruido"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Difuminado radial"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerancia"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Giro"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipse"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Añadir ruido"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Haga clic y arrastre para dibujar una elipse (con el botón derecho para usar "
-"el color secundario). Mantenga pulsada la tecla Mayús si desea que la forma "
-"sea un círculo."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relieve"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Contorno"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Ruido aleatorio"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Reiniciar semilla"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etiqueta1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etiqueta"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Elegir color primario"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Elegir color secundario"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Elegir colores de paleta"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Desplazamiento"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Haga clic y arrastre para desplazarse por la imagen."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -574,42 +761,34 @@ msgstr ""
"Haga clic con botón izquierdo para color el cursor, después teclee el texto. "
"El color del texto será el primario."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Fuente"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Negrita"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Cursiva"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Subrayado"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Alinear a la izquierda"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Centrar texto"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Alinear a la derecha"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Selección con varita mágica"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Haga clic para seleccionar una región de un color similar."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Rectángulo"
@@ -623,657 +802,628 @@ msgstr ""
"usar el color secundario). Mantenga pulsada la tecla Mayús si desea que la "
"forma sea un cuadrado."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Línea"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Forma libre"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
"Haga clic con el botón izquierdo para dibujar con el color primario, o bien "
"con el botón derecho para dibujar con el color secundario."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Recolorear"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
-"Haga clic con el botón izquierdo para reemplazar el color secundario por el "
-"primario."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Goma de borrar"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Haga clic y arrastre para borrar una parte de la imagen."
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pixelar"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Estilo de llenado"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distorsión"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Quitar ojos rojos"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Fotografía"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Difuminado de movimiento"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Difuminados"
-
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Boceto en tinta"
-
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artístico"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Perfilar forma"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Difuminado radial"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Rellenar forma"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Desenfocar"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Rellenar y perfilar forma"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Detección de bordes"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Modo de llenado"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Estilizado"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Contigua"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Cristal congelado"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Pintura al óleo"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerancia"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Difuminado de zoom"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Línea"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Inversión polar"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Haga clic con el botón izquierdo para dibujar con el color primario, o bien "
+"con el botón derecho para dibujar con el color secundario."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Nubes"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Mover selección"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Renderizar"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Arrastre la selección para mover su contorno."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Brillo"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Selección rectangular"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Añadir ruido"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Haga clic y arrastre para dibujar una selección rectangular. Mantenga "
+"pulsada la tecla Mayús si desea que la forma sea un cuadrado."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Ruido"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Selección con varita mágica"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragmento"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Haga clic para seleccionar una región de un color similar."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Nítido"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Selección elíptica"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Boceto a lápiz"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Haga clic y arrastre para dibujar una selección elíptica. Mantenga pulsada "
+"la tecla Mayús si desea que la forma sea un círculo."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Contorno"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Selección con lazo"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Difuminado gaussiano"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Seleccione y arrastre el contorno para seleccionar un área."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Reflejo en mosaico"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Cubo de pintura"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relieve"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Haga clic con botón izquierdo para rellenar una región con el color "
+"primario, con el botón derecho para usar el color secundario."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Realce"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradiente"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fractal de Mandelbrot"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Haga clic y arrastre para dibujar un gradiente del color primario al "
+"secundario. Haga clic con el botón derecho para realizar la operación a la "
+"inversa."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Abultar"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Gradiente lineal"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Giro"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Gradiente lineal reflejado"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Suavizado de retrato"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Gradiente lineal en diamante"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Reducir ruido"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Gradiente radial"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fractal de Julia"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Gradiente cónico"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Mediana"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Modo"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Curvas"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Modo de color"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Niveles"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Modo de transparencia"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Autonivel"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Grosor del pincel"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Invertir colores"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Reducir grosor del pincel"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterizar"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Aumentar grosor del pincel"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Blanco y negro"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pincel"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Matiz y saturación"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Tipo"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Recolorear"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Brillo y contraste"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
+"Haga clic con el botón izquierdo para reemplazar el color secundario por el "
+"primario."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Ajuste de niveles"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normal"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Histograma de entrada"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Círculos"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Entrada"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Cuadrados"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Salida"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Aerógrafo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Histograma de salida"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Red"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automático"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipse"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Restablecer"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Haga clic y arrastre para dibujar una elipse (con el botón derecho para usar "
+"el color secundario). Mantenga pulsada la tecla Mayús si desea que la forma "
+"sea un círculo."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Rojo"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Tampón de clonación"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Verde"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "Ctrl+clic para fijar origen, clic para pintar."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Azul"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zoom"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Vinculado"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Haga clic con el botón izquierdo para ampliar o con el botón derecho para "
+"reducir. Haga clic y arrastre para hacer zoom en la selección."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Mapa de transferencia"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Rectángulo redondeado"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Haga clic y arrastre para dibujar un rectángulo redondeado (con el botón "
+"derecho para usar el color secundario). Mantenga pulsada la tecla Mayús si "
+"desea que la forma sea un cuadrado."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminosidad"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Radio"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Reducir radio de la esquina del rectángulo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Rojo "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Aumentar radio de la esquina del rectángulo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Azul "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Selector de color"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Haga clic con el botón izquierdo para establecer el color primario. Haga "
+"clic con el botón derecho para establecer el color secundario."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Añadir nueva capa"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Borrar capa"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplicar capa"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Tras selección"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Combinar las capas hacia abajo"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "No cambiar herramienta"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importar desde archivo..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Usar herramienta anterior"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Voltear horizontalmente"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Usar lápiz"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Voltear verticalmente"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Lápiz"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Girar y zoom"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Goma de borrar"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Subir capa"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Haga clic y arrastre para borrar una parte de la imagen."
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Bajar capa"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Clic con botón izquierdo para dibujar libremente líneas de un píxel de "
+"grosor con color primario, clic con botón derecho para usar color secundario."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Abrir fichero de imagen"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Desplazar píxeles seleccionados"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importar desde archivo"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Arrastre la selección para desplazar el contenido."
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nuevo..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ocultar"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Abrir..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Anclar"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Abrir reciente"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Ocultar automáticamente"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Cerrar"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Acoplable"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Guardar"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flotante"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Guardar como…"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "OptionName"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Imprimir"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Por porcentaje:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Salir"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Por tamaño absoluto:"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nuevo"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Anchura:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Abrir"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "píxeles"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Fondo"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Altura:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Abrir imagen"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Mantener las proporciones"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "No se pudo abrir el fichero: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Anclaje:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Error"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Nuevo tamaño de imagen "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "¿Guardar los cambios en la imagen \"{0}\" antes de abrir otra?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Propiedades de capa"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Ficheros de imagen"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nombre:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Todos los ficheros"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Visible"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Guardar fichero de imagen"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacidad:"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "Imagen {0} ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Imagen OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Archivo"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "¿Guardar los cambios en la imagen \"{0}\" antes de cerrar?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Editar"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Cerrar sin guardar"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Ver"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Recortar según la selección"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Imagen"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Cambiar el tamaño..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Capas"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Tamaño de lienzo..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "A_justes"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Girar 90º a la derecha"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efe_ctos"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Girar 90º a la izquierda"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Ventana"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Girar 180º"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Ventanas de herramientas"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Acoplar"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "Ay_uda"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Deshacer"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Herramientas"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Rehacer"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documentos"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Cortar"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Capas"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Copiar"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historial"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Pegar"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Tomar captura de pantalla"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Pegar en una capa nueva"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Tiempo de retraso antes de tomar la captura (segs):"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Pegar en una imagen nueva"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "¿Guardar los cambios en la imagen \"{0}\" antes de cerrar?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Borrar selección"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Si no guarda los cambios, éstos se perderán permanentemente."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Rellenar la selección"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Cerrar sin guardar"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Invertir la selección"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Redimensionar paleta"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Seleccionar todo"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nuevo tamaño de paleta:"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Anular la selección"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Opacidad de la capa"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Ampliar"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Renombrar capa"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Reducir"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Ocultar Capa"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Ampliar a ventana"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Mostrar Capa"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Ampliar a selección"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Ficheros de imagen"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Tamaño real"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Pegado cancelado"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Cuadrícula de píxeles"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "El portapapeles no contiene ninguna imagen"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Reglas"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Guardar archivo de imagen"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Píxeles"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta no soporta el guardado de imágenes en este formato."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Pulgadas"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Un archivo llamado «{0}» ya existe. ¿Desea reemplazarlo?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centímetros"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"El archivo ya existe en «{1}». Al reemplazarlo se sobreescribirá su "
+"contenido."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Pantalla completa"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "número de hebras que se usarán al renderizar"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Ventana"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versión"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Página web de Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licencia"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Informar de un fallo"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Publicado bajo licencia MIT X11."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Traducir esta aplicación"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "General"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "de los contribuidores de Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Herramienta"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Título"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Atajo de teclado"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Ruta"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Suavizado"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Calidad de JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Mezcla normal / Reemplazar"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Calidad: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Voltear imagen horizontalmente"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Contribuidores de esta versión"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Voltear imagen verticalmente"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Contribuidores anteriores"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Voltear capa horizontalmente"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Fitoschido https://launchpad.net/~fitoschido\n"
+" Francisco Camenforte Torres https://launchpad.net/~fct\n"
+" Jin Valiant https://launchpad.net/~jin-valiant\n"
+" Jonathan Pobst https://launchpad.net/~jpobst"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Voltear capa verticalmente"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Traducido por:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Finalizar píxeles"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Basado en el trabajo de Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Efecto de renderizado"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Se usan algunos iconos de:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "copiar"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Acerca de Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Capa"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Información de la versión"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1455,18 +1605,71 @@ msgstr ""
"Consejo: para mejorar el resultado, seleccione primero cada ojo con las "
"herramientas de selección."
+#~ msgid "Help"
+#~ msgstr "Ayuda"
+
+#~ msgid "Adjustments"
+#~ msgstr "Ajustes"
+
+#~ msgid "Effects"
+#~ msgstr "Efectos"
+
+#~ msgid "File"
+#~ msgstr "Fichero"
+
+#~ msgid "Edit"
+#~ msgstr "Edición"
+
+#~ msgid "View"
+#~ msgstr "Ver"
+
+#~ msgid "Image"
+#~ msgstr "Imagen"
+
#~ msgid "%"
#~ msgstr "%"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "¿Guardar los cambios en la imagen \"{0}\" antes de crear otra?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Imagen OpenRaster (*.ora)"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Mezcla normal / Reemplazar"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Continuar sin guardar"
+
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr ""
#~ "Sugerencia: haga clic con el botón derecho para quitar los puntos de control."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "¿Guardar los cambios en la imagen \"{0}\" antes de abrir otra?"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Suavizado"
+
#~ msgid "X :"
#~ msgstr "X:"
#~ msgid "Y :"
#~ msgstr "Y:"
+#~ msgid "Fill mode"
+#~ msgstr "Modo de relleno"
+
#~ msgid "Show Pad"
#~ msgstr "Mostrar panel"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages.pot b/po/messages-eu.po
similarity index 69%
copy from po/messages.pot
copy to po/messages-eu.po
index 8ea8d21..9fe8776 100644
--- a/po/messages.pot
+++ b/po/messages-eu.po
@@ -1,383 +1,383 @@
-# Pinta Translatable Strings
-# Copyright (C) 2010 Pinta Contributors
-# This file is distributed under the same license as the Pinta package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Basque translation for pinta
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the pinta package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2010.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: pinta\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2010-10-31 12:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2010-12-11 22:24+0000\n"
+"Last-Translator: Asier Sarasua Garmendia <Unknown>\n"
+"Language-Team: Basque <eu at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
#: Pinta.Core/Classes/DocumentWorkspace.cs:160
#: Pinta.Core/Classes/DocumentWorkspace.cs:181
#: Pinta.Core/Actions/ViewActions.cs:200
msgid "Window"
-msgstr ""
+msgstr "Leihoa"
#: Pinta.Core/Classes/Document.cs:299
msgid "Layer"
-msgstr ""
+msgstr "Geruza"
#: Pinta.Core/Classes/Document.cs:367
msgid "copy"
-msgstr ""
+msgstr "kopiatu"
#: Pinta.Core/Classes/Document.cs:589
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
msgid "Resize Canvas"
-msgstr ""
+msgstr "Aldatu oihalaren tamaina"
#: Pinta.Core/Classes/BaseTool.cs:146
msgid "Tool"
-msgstr ""
+msgstr "Tresna"
#: Pinta.Core/Classes/BaseTool.cs:204
msgid "Shortcut key"
-msgstr ""
+msgstr "Lasterbide-gakoa"
#: Pinta.Core/Classes/BaseTool.cs:227
msgid "Normal Blending"
-msgstr ""
+msgstr "Nahaste normala"
#: Pinta.Core/Classes/BaseTool.cs:228
msgid "Overwrite"
-msgstr ""
+msgstr "Gainidatzi"
#: Pinta.Core/Classes/BaseTool.cs:242
msgid "Antialiasing On"
-msgstr ""
+msgstr "Antialiasing-a aktibatua"
#: Pinta.Core/Classes/BaseTool.cs:243
msgid "Antialiasing Off"
-msgstr ""
+msgstr "Antialiasing-a desaktibatua"
#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
msgid "Resize Image"
-msgstr ""
+msgstr "Aldatu irudiaren tamaina"
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
msgid "Finish Pixels"
-msgstr ""
+msgstr "Amaitu pixelak"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
#: Pinta.Core/Actions/ImageActions.cs:65
msgid "Rotate 180°"
-msgstr ""
+msgstr "Biratu 180º"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
msgid "Flip Image Horizontal"
-msgstr ""
+msgstr "Irauli irudia horizontalki"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
msgid "Flip Image Vertical"
-msgstr ""
+msgstr "Irauli irudia bertikalki"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
#: Pinta.Core/Actions/ImageActions.cs:63
msgid "Rotate 90° Clockwise"
-msgstr ""
+msgstr "Biratu 90º eskuinetara"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
#: Pinta.Core/Actions/ImageActions.cs:64
msgid "Rotate 90° Counter-Clockwise"
-msgstr ""
+msgstr "Biratu 90º ezkerretara"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
msgid "Flip Layer Horizontal"
-msgstr ""
+msgstr "Irauli geruza horizontalki"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
msgid "Flip Layer Vertical"
-msgstr ""
+msgstr "Irauli geruza bertikalki"
#: Pinta.Core/Effects/BaseEffect.cs:42
msgid "General"
-msgstr ""
+msgstr "Orokorra"
#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
#, csharp-format
msgid "{0} image ({1})"
-msgstr ""
+msgstr "{0} irudia ({1})"
#: Pinta.Core/Actions/ImageActions.cs:58
#: Pinta.Core/Actions/ImageActions.cs:181
msgid "Crop to Selection"
-msgstr ""
+msgstr "Moztu hautapenera"
#: Pinta.Core/Actions/ImageActions.cs:59
msgid "Resize..."
-msgstr ""
+msgstr "Aldatu tamaina..."
#: Pinta.Core/Actions/ImageActions.cs:60
msgid "Canvas Size..."
-msgstr ""
+msgstr "Oihalaren tamaina..."
#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
msgid "Flip Horizontal"
-msgstr ""
+msgstr "Irauli horizontalki"
#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
msgid "Flip Vertical"
-msgstr ""
+msgstr "Irauli bertikalki"
#: Pinta.Core/Actions/ImageActions.cs:66
#: Pinta.Core/Actions/ImageActions.cs:127
msgid "Flatten"
-msgstr ""
+msgstr "Berdindu"
#: Pinta.Core/Actions/ViewActions.cs:62
msgid "Zoom In"
-msgstr ""
+msgstr "Handiagotu"
#: Pinta.Core/Actions/ViewActions.cs:63
msgid "Zoom Out"
-msgstr ""
+msgstr "Txikiagotu"
#: Pinta.Core/Actions/ViewActions.cs:64
msgid "Zoom to Window"
-msgstr ""
+msgstr "Zooma leihora"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Zoom to Selection"
-msgstr ""
+msgstr "Zooma hautapenera"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Actual Size"
-msgstr ""
+msgstr "Uneko tamaina"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Toolbar"
-msgstr ""
+msgstr "Tresna-barra"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Pixel Grid"
-msgstr ""
+msgstr "Pixel-sareta"
#: Pinta.Core/Actions/ViewActions.cs:69
msgid "Rulers"
-msgstr ""
+msgstr "Erregelak"
#: Pinta.Core/Actions/ViewActions.cs:70
msgid "Pixels"
-msgstr ""
+msgstr "Pixelak"
#: Pinta.Core/Actions/ViewActions.cs:71
msgid "Inches"
-msgstr ""
+msgstr "Hazbeteak"
#: Pinta.Core/Actions/ViewActions.cs:72
msgid "Centimeters"
-msgstr ""
+msgstr "Zentimetroak"
#: Pinta.Core/Actions/ViewActions.cs:73
msgid "Fullscreen"
-msgstr ""
+msgstr "Pantaila osoa"
#: Pinta.Core/Actions/ViewActions.cs:111
msgid "Ruler Units"
-msgstr ""
+msgstr "Erregelen unitateak"
#: Pinta.Core/Actions/LayerActions.cs:64
#: Pinta.Core/Actions/LayerActions.cs:283
msgid "Add New Layer"
-msgstr ""
+msgstr "Gehitu geruza berria"
#: Pinta.Core/Actions/LayerActions.cs:65
#: Pinta.Core/Actions/LayerActions.cs:266
msgid "Delete Layer"
-msgstr ""
+msgstr "Ezabatu geruza"
#: Pinta.Core/Actions/LayerActions.cs:66
#: Pinta.Core/Actions/LayerActions.cs:257
msgid "Duplicate Layer"
-msgstr ""
+msgstr "Bikoiztu geruza"
#: Pinta.Core/Actions/LayerActions.cs:67
#: Pinta.Core/Actions/LayerActions.cs:235
msgid "Merge Layer Down"
-msgstr ""
+msgstr "Batu geruza beherantz"
#: Pinta.Core/Actions/LayerActions.cs:68
msgid "Import from File..."
-msgstr ""
+msgstr "Inportatu fitxategitik..."
#: Pinta.Core/Actions/LayerActions.cs:71
msgid "Rotate / Zoom"
-msgstr ""
+msgstr "Biratu / Zooma"
#: Pinta.Core/Actions/LayerActions.cs:72
#: Pinta.Core/Actions/LayerActions.cs:213
msgid "Move Layer Up"
-msgstr ""
+msgstr "Mugitu geruza gora"
#: Pinta.Core/Actions/LayerActions.cs:73
#: Pinta.Core/Actions/LayerActions.cs:224
msgid "Move Layer Down"
-msgstr ""
+msgstr "Mugitu geruza behera"
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
-msgstr ""
+msgid "Layer Properties..."
+msgstr "Geruzaren propietateak..."
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
msgid "Open Image File"
-msgstr ""
+msgstr "Ireki irudi-fitxategia"
#: Pinta.Core/Actions/LayerActions.cs:179
msgid "Import From File"
-msgstr ""
+msgstr "Inportatu fitxategitik"
#: Pinta.Core/Actions/WindowActions.cs:45
msgid "Save All"
-msgstr ""
+msgstr "Gorde dena"
#: Pinta.Core/Actions/WindowActions.cs:46
msgid "Close All"
-msgstr ""
+msgstr "Itxi dena"
#: Pinta.Core/Actions/HelpActions.cs:50
msgid "Pinta Website"
-msgstr ""
+msgstr "Pinta-ren webgunea"
#: Pinta.Core/Actions/HelpActions.cs:51
msgid "File a Bug"
-msgstr ""
+msgstr "Jakinarazi akatsa"
#: Pinta.Core/Actions/HelpActions.cs:52
msgid "Translate This Application"
-msgstr ""
+msgstr "Itzuli aplikazio hau"
#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
msgid "About"
-msgstr ""
+msgstr "Honi buruz"
#: Pinta.Core/Actions/FileActions.cs:54
msgid "New..."
-msgstr ""
+msgstr "Berria..."
#: Pinta.Core/Actions/FileActions.cs:55
msgid "New Screenshot..."
-msgstr ""
+msgstr "Pantaila-argazki berria..."
#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
msgid "Open..."
-msgstr ""
+msgstr "Ireki..."
#: Pinta.Core/Actions/FileActions.cs:57
msgid "Open Recent"
-msgstr ""
+msgstr "Ireki azkenak"
#: Pinta.Core/Actions/FileActions.cs:64
msgid "Close"
-msgstr ""
+msgstr "Itxi"
#: Pinta.Core/Actions/FileActions.cs:65
msgid "Save"
-msgstr ""
+msgstr "Gorde"
#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
msgid "Save As..."
-msgstr ""
+msgstr "Gorde honela..."
#: Pinta.Core/Actions/FileActions.cs:67
msgid "Print"
-msgstr ""
+msgstr "Inprimatu"
#: Pinta.Core/Actions/FileActions.cs:68
msgid "Quit"
-msgstr ""
+msgstr "Irten"
#: Pinta.Core/Actions/FileActions.cs:70
msgid "New"
-msgstr ""
+msgstr "Berria"
#: Pinta.Core/Actions/FileActions.cs:71
msgid "Open"
-msgstr ""
+msgstr "Ireki"
#: Pinta.Core/Actions/EditActions.cs:65
msgid "Undo"
-msgstr ""
+msgstr "Desegin"
#: Pinta.Core/Actions/EditActions.cs:66
msgid "Redo"
-msgstr ""
+msgstr "Berregin"
#: Pinta.Core/Actions/EditActions.cs:67
msgid "Cut"
-msgstr ""
+msgstr "Moztu"
#: Pinta.Core/Actions/EditActions.cs:68
msgid "Copy"
-msgstr ""
+msgstr "Kopiatu"
#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
msgid "Paste"
-msgstr ""
+msgstr "Itsatsi"
#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
msgid "Paste Into New Layer"
-msgstr ""
+msgstr "Itsatsi geruza berrian"
#: Pinta.Core/Actions/EditActions.cs:71
msgid "Paste Into New Image"
-msgstr ""
+msgstr "Itsatsi irudi berrian"
#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
#: Pinta.Core/Actions/EditActions.cs:296
msgid "Erase Selection"
-msgstr ""
+msgstr "Ezabatu hautapena"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
msgid "Fill Selection"
-msgstr ""
+msgstr "Bete hautapena"
#: Pinta.Core/Actions/EditActions.cs:74
msgid "Invert Selection"
-msgstr ""
+msgstr "Alderantzikatu hautapena"
#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
msgid "Select All"
-msgstr ""
+msgstr "Hautatu dena"
#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
msgid "Deselect"
-msgstr ""
+msgstr "Desautatu"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
-msgstr ""
+msgstr "Berrezarri lehenetsia"
#: Pinta.Core/Actions/EditActions.cs:81
msgid "Set Number of Colors"
-msgstr ""
+msgstr "Ezarri kolore-kopurua"
#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
#: Pinta/MainWindow.cs:569
msgid "Palette"
-msgstr ""
+msgstr "Paleta"
#: Pinta.Core/Actions/EditActions.cs:313
msgid "Open Palette File"
-msgstr ""
+msgstr "Ireki paleta-fitxategia"
#: Pinta.Core/Actions/EditActions.cs:320
msgid "Palette files (*.txt, *.gpl)"
-msgstr ""
+msgstr "Paleta-fitxategiak (*.txt, *.gpl)"
#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
msgid "All files"
-msgstr ""
+msgstr "Fitxategi guztiak"
#: Pinta.Core/Actions/EditActions.cs:340
#, csharp-format
@@ -385,171 +385,180 @@ msgid ""
"Could not open palette file: {0}.\n"
"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
+"Ezin izan da paleta-fitxategia ireki: {0}.\n"
+"Egiaztatu benetan GIMPen edo Paint.NETen paleta bat irekitzen saiatzen ari "
+"zarela."
#: Pinta.Core/Actions/EditActions.cs:341
#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
msgid "Error"
-msgstr ""
+msgstr "Errorea"
#: Pinta.Core/Actions/EditActions.cs:353
msgid "Save Palette File"
-msgstr ""
+msgstr "Gorde paleta-fitxategia"
#: Pinta.Core/Actions/EditActions.cs:359
msgid "Paint.NET palette (*.txt)"
-msgstr ""
+msgstr "Paint.NET paleta (*.txt)"
#: Pinta.Core/Actions/EditActions.cs:364
msgid "GIMP palette (*.gpl)"
-msgstr ""
+msgstr "GIMP paleta (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Gorde gabeko {0} irudia"
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
-msgstr ""
+msgstr "Atzeko planoa"
#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
msgid "New Image"
-msgstr ""
+msgstr "Irudi berria"
#: Pinta.Core/Managers/WorkspaceManager.cs:176
msgid "Open Image"
-msgstr ""
+msgstr "Ireki irudia"
#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
msgid "Could not open file: {0}"
-msgstr ""
+msgstr "Ezin izan da fitxategia ireki: {0}"
#: Pinta.Core/Managers/LivePreviewManager.cs:220
msgid "Rendering Effect"
-msgstr ""
+msgstr "Errendatze-efektua"
#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
msgid "Posterize"
-msgstr ""
+msgstr "Posterizatu"
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Alderantzikatu koloreak"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
-msgstr ""
+msgstr "Mailak"
#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
msgid "Black and White"
-msgstr ""
+msgstr "Zuri-beltza"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
-msgstr ""
+msgstr "Maila automatikoa"
#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
msgid "Hue / Saturation"
-msgstr ""
+msgstr "Ñabardura / saturazioa"
#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
msgid "Brightness / Contrast"
-msgstr ""
+msgstr "Distira / kontrastea"
#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
msgid "Sepia"
-msgstr ""
+msgstr "Sepia"
#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
msgid "Curves"
-msgstr ""
+msgstr "Kurbak"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
msgid "Transfer Map"
-msgstr ""
+msgstr "Transferentzia-mapa"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
msgid "RGB"
-msgstr ""
+msgstr "RGB"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
msgid "Luminosity"
-msgstr ""
+msgstr "Argitasuna"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
msgid "(256, 256)"
-msgstr ""
+msgstr "(256, 256)"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
msgid "Red "
-msgstr ""
+msgstr "Gorria "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
msgid "Green"
-msgstr ""
+msgstr "Berdea"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
msgid "Blue "
-msgstr ""
+msgstr "Urdina "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
msgid "Reset"
-msgstr ""
+msgstr "Berrezarri"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
msgid "Tip: Right-click to remove control points."
msgstr ""
+"Iradokizuna: Egin klik eskuineko botoiarekin kontrol-puntuak kentzeko."
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
msgid "Levels Adjustment"
-msgstr ""
+msgstr "Mailen doikuntza"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
msgid "Input Histogram"
-msgstr ""
+msgstr "Sarrerako histograma"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
msgid "Input"
-msgstr ""
+msgstr "Sarrera"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
msgid "Output"
-msgstr ""
+msgstr "Irteera"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
msgid "Output Histogram"
-msgstr ""
+msgstr "Irteerako histograma"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
msgid "Auto"
-msgstr ""
+msgstr "Automatikoa"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
msgid "Red"
-msgstr ""
+msgstr "Gorria"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
msgid "Blue"
-msgstr ""
+msgstr "Urdina"
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
msgid "Linked"
-msgstr ""
+msgstr "Lotua"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
msgid "Pencil Sketch"
-msgstr ""
+msgstr "Arkatz-zirriborroa"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
#: Pinta.Effects/Effects/InkSketchEffect.cs:42
msgid "Artistic"
-msgstr ""
+msgstr "Artistikoa"
#: Pinta.Effects/Effects/UnfocusEffect.cs:28
msgid "Unfocus"
-msgstr ""
+msgstr "Desenfokatu"
#: Pinta.Effects/Effects/UnfocusEffect.cs:36
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
@@ -558,11 +567,11 @@ msgstr ""
#: Pinta.Effects/Effects/FragmentEffect.cs:34
#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
msgid "Blurs"
-msgstr ""
+msgstr "Lausotzeak"
#: Pinta.Effects/Effects/BulgeEffect.cs:26
msgid "Bulge"
-msgstr ""
+msgstr "Konkortu"
#: Pinta.Effects/Effects/BulgeEffect.cs:34
#: Pinta.Effects/Effects/PixelateEffect.cs:38
@@ -571,554 +580,587 @@ msgstr ""
#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
#: Pinta.Effects/Effects/TwistEffect.cs:34
msgid "Distort"
-msgstr ""
+msgstr "Distortsioa"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
msgid "Mandelbrot Fractal"
-msgstr ""
+msgstr "Mandelbrot-en fraktala"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
#: Pinta.Effects/Effects/CloudsEffect.cs:38
msgid "Render"
-msgstr ""
+msgstr "Errendatu"
#: Pinta.Effects/Effects/MedianEffect.cs:29
msgid "Median"
-msgstr ""
+msgstr "Mediana"
#: Pinta.Effects/Effects/MedianEffect.cs:37
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
msgid "Noise"
-msgstr ""
+msgstr "Zarata"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
-msgstr ""
+msgstr "Pixelatu"
#: Pinta.Effects/Effects/SharpenEffect.cs:26
msgid "Sharpen"
-msgstr ""
+msgstr "Zorroztu"
#: Pinta.Effects/Effects/SharpenEffect.cs:34
#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
-msgstr ""
+msgstr "Argazkia"
#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
msgid "Oil Painting"
-msgstr ""
+msgstr "Olioz pintatu"
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
msgid "Gaussian Blur"
-msgstr ""
+msgstr "Gauss-en lausotzea"
#: Pinta.Effects/Effects/GlowEffect.cs:31
msgid "Glow"
-msgstr ""
+msgstr "Dirdira"
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
msgid "Soften Portrait"
-msgstr ""
+msgstr "Erretratu leuna"
#: Pinta.Effects/Effects/TileEffect.cs:26
msgid "Tile Reflection"
-msgstr ""
+msgstr "Mosaiko-islapena"
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
msgid "Red Eye Removal"
-msgstr ""
+msgstr "Begi gorriak kentzea"
#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
msgid "Frosted Glass"
-msgstr ""
+msgstr "Beira izoztua"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
-msgstr ""
+msgstr "Ertz-detekzioa"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
#: Pinta.Effects/Effects/EmbossEffect.cs:34
#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
-msgstr ""
+msgstr "Estilizatu"
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
msgid "Julia Fractal"
-msgstr ""
+msgstr "Julia-ren fraktala"
#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
msgid "Motion Blur"
-msgstr ""
+msgstr "Mugimendu-lausotzea"
#: Pinta.Effects/Effects/EmbossEffect.cs:26
msgid "Emboss"
-msgstr ""
+msgstr "Bozeldu"
#: Pinta.Effects/Effects/InkSketchEffect.cs:34
msgid "Ink Sketch"
-msgstr ""
+msgstr "Tinta-zirriborroa"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
-msgstr ""
+msgstr "Zoom-lausotzea"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
-msgstr ""
+msgstr "Alderantzikatze polarra"
#: Pinta.Effects/Effects/CloudsEffect.cs:30
msgid "Clouds"
-msgstr ""
+msgstr "Hodeiak"
#: Pinta.Effects/Effects/FragmentEffect.cs:26
msgid "Fragment"
-msgstr ""
+msgstr "Zatikatu"
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
-msgstr ""
+msgstr "Murriztu zarata"
#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
msgid "Radial Blur"
-msgstr ""
+msgstr "Lausotze erradiala"
#: Pinta.Effects/Effects/TwistEffect.cs:26
msgid "Twist"
-msgstr ""
+msgstr "Bihurritu"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
-msgstr ""
+msgstr "Gehitu zarata"
#: Pinta.Effects/Effects/ReliefEffect.cs:45
msgid "Relief"
-msgstr ""
+msgstr "Erliebea"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
-msgstr ""
+msgstr "Eskema sortu"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
msgid "Random Noise"
-msgstr ""
+msgstr "Ausazko zarata"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
msgid "Reseed"
-msgstr ""
+msgstr "Hazi berria eman"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
msgid "label1"
-msgstr ""
+msgstr "label1"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
msgid "label"
-msgstr ""
+msgstr "label"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Hautatu kolore nagusia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Hautatu bigarren mailako kolorea"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Hautatu paletako kolorea"
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
-msgstr ""
+msgstr "Desplazamendua"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
-msgstr ""
+msgstr "Egin klik eta arrastatu irudian mugitzeko."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
-msgstr ""
+msgstr "Testua"
#: Pinta.Tools/TextTool.cs:44
msgid ""
"Left click to place cursor, then type desired text. Text color is primary "
"color."
msgstr ""
+"Ezkerreko klik-a kurtsorea kokatzeko, ondoren idatzi textua. Testuaren "
+"kolorea kolore nagusia izango da."
#: Pinta.Tools/TextTool.cs:144
msgid "Font"
-msgstr ""
+msgstr "Letra-tipoa"
#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
-msgstr ""
+msgstr "Lodia"
#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
-msgstr ""
+msgstr "Etzana"
#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
-msgstr ""
+msgstr "Azpimarratua"
#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
-msgstr ""
+msgstr "Ezkerrean lerrokatua"
#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
-msgstr ""
+msgstr "Erdian lerrokatua"
#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
-msgstr ""
+msgstr "Eskuinean lerrokatua"
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
-msgstr ""
+msgstr "Laukizuzena"
#: Pinta.Tools/RectangleTool.cs:44
msgid ""
"Click and drag to draw a rectangle (right click for secondary color). Hold "
"shift to constrain to a square."
msgstr ""
+"Egin klik eta arrastatu laukizuzena marrazteko (eskuineko klik-a bigarren "
+"mailako kolorea erabiltzeko). Mantendu Shift sakatuta lauki bat marrazteko."
#: Pinta.Tools/FreeformShapeTool.cs:53
msgid "Freeform Shape"
-msgstr ""
+msgstr "Forma librea"
#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
+"Ezkerreko klik-a kolore nagusiarekin marrazteko, eskuineko klik-a bigarren "
+"mailako kolorearekin marrazteko."
#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
msgid "Fill Style"
-msgstr ""
+msgstr "Betegarriaren estiloa"
#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
msgid "Outline Shape"
-msgstr ""
+msgstr "Ingerada"
#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
msgid "Fill Shape"
-msgstr ""
+msgstr "Betegarria"
#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
msgid "Fill and Outline Shape"
-msgstr ""
+msgstr "Betegarria eta ingerada"
#: Pinta.Tools/FloodTool.cs:72
msgid "Flood Mode"
-msgstr ""
+msgstr "Betegarri-modua"
#: Pinta.Tools/FloodTool.cs:79
msgid "Contiguous"
-msgstr ""
+msgstr "Albokoa"
#: Pinta.Tools/FloodTool.cs:80
msgid "Global"
-msgstr ""
+msgstr "Globala"
#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
msgid "Tolerance"
-msgstr ""
+msgstr "Tolerantzia"
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
-msgstr ""
+msgstr "Lerroa"
#: Pinta.Tools/LineCurveTool.cs:44
-msgid "Left click to draw with primary color, right click for secondary color."
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
+"Ezkerreko klik-a kolore nagusiarekin marrazteko, eskuineko klik-a bigarren "
+"mailako kolorea erabilitzeko."
#: Pinta.Tools/MoveSelectionTool.cs:42
msgid "Move Selection"
-msgstr ""
+msgstr "Mugitu hautapena"
#: Pinta.Tools/MoveSelectionTool.cs:48
msgid "Drag the selection to move selection outline."
-msgstr ""
+msgstr "Arrastatu hautapena hautapenaren ertza mugitzeko"
#: Pinta.Tools/RectangleSelectTool.cs:38
msgid "Rectangle Select"
-msgstr ""
+msgstr "Laukizuzen bidezko hautapena"
#: Pinta.Tools/RectangleSelectTool.cs:44
msgid ""
"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
"square."
msgstr ""
+"Egin klik eta arrastatu laukizuzen-formako hautapena marrazteko. Mantendu "
+"Shift sakatuta laukia egiteko."
#: Pinta.Tools/MagicWandTool.cs:46
msgid "Magic Wand Select"
-msgstr ""
+msgstr "Makila magikoaren bidezko hautapena"
#: Pinta.Tools/MagicWandTool.cs:54
msgid "Click to select region of similar color."
-msgstr ""
+msgstr "Egin klik antzeko kolorea duen eskualdea hautatzeko"
#: Pinta.Tools/EllipseSelectTool.cs:38
msgid "Ellipse Select"
-msgstr ""
+msgstr "Elipse-formako hautapena"
#: Pinta.Tools/EllipseSelectTool.cs:44
msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
+"Egin klik eta arrastatu hautapen eliptikoa marrazteko. Mantendu Shift "
+"sakatuta zirkulua egiteko."
#: Pinta.Tools/LassoSelectTool.cs:45
msgid "Lasso Select"
-msgstr ""
+msgstr "Lakio bidezko hautapena"
#: Pinta.Tools/LassoSelectTool.cs:47
msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+msgstr "Egin klik eta arrastatu hautapen-arearen ertza marrazteko."
#: Pinta.Tools/PaintBucketTool.cs:40
msgid "Paint Bucket"
-msgstr ""
+msgstr "Margo-ontzia"
#: Pinta.Tools/PaintBucketTool.cs:46
msgid ""
"Left click to fill a region with the primary color, right click to fill with "
"the secondary color."
msgstr ""
+"Ezkerreko klik-a eskualde bat kolore nagusiarekin betetzeko, eskuineko klik-"
+"a bigarren mailako kolorearekin betetzeko."
#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
msgid "Gradient"
-msgstr ""
+msgstr "Gradientea"
#: Pinta.Tools/GradientTool.cs:73
msgid ""
"Click and drag to draw gradient from primary to secondary color. Right "
"click to reverse."
msgstr ""
+"Egin klik eta arrastatu kolore nagusitik bigarren mailako kolorera doan "
+"gradientea marrazteko. Eskuineko klik-a alderantzikatzeko."
#: Pinta.Tools/GradientTool.cs:183
msgid "Linear Gradient"
-msgstr ""
+msgstr "Gradiente lineala"
#: Pinta.Tools/GradientTool.cs:184
msgid "Linear Reflected Gradient"
-msgstr ""
+msgstr "Gradiente lineal isladatua"
#: Pinta.Tools/GradientTool.cs:185
msgid "Linear Diamond Gradient"
-msgstr ""
+msgstr "Diamante-formako gradiente lineala"
#: Pinta.Tools/GradientTool.cs:186
msgid "Radial Gradient"
-msgstr ""
+msgstr "Gradiente erradiala"
#: Pinta.Tools/GradientTool.cs:187
msgid "Conical Gradient"
-msgstr ""
+msgstr "Gradiente konikoa"
#: Pinta.Tools/GradientTool.cs:195
msgid "Mode"
-msgstr ""
+msgstr "Modua"
#: Pinta.Tools/GradientTool.cs:202
msgid "Color Mode"
-msgstr ""
+msgstr "Kolore-modua"
#: Pinta.Tools/GradientTool.cs:203
msgid "Transparency Mode"
-msgstr ""
+msgstr "Gardentasun-modua"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
-msgstr ""
+msgstr "Brotxaren zabalera"
#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
msgid "Decrease brush size"
-msgstr ""
+msgstr "Handitu brotxaren tamaina"
#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
msgid "Increase brush size"
-msgstr ""
+msgstr "Txikitu brotxaren tamaina"
#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
msgid "Paintbrush"
-msgstr ""
+msgstr "Pintzela"
#: Pinta.Tools/PaintBrushTool.cs:63
msgid "Type"
-msgstr ""
+msgstr "Mota"
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
-msgstr ""
+msgstr "Koloreztatu berriro"
#: Pinta.Tools/RecolorTool.cs:61
msgid "Left click to replace the secondary color with the primary color."
msgstr ""
+"Ezkerreko klik-a bigarren mailako kolorea kolore nagusiarekin ordezteko."
#: Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
-msgstr ""
+msgstr "Normala"
#: Pinta.Tools/Brushes/CircleBrush.cs:38
msgid "Circles"
-msgstr ""
+msgstr "Zirkuluak"
#: Pinta.Tools/Brushes/SquaresBrush.cs:40
msgid "Squares"
-msgstr ""
+msgstr "Laukiak"
#: Pinta.Tools/Brushes/SplatterBrush.cs:38
msgid "Splatter"
-msgstr ""
+msgstr "Zipriztinak"
#: Pinta.Tools/Brushes/GridBrush.cs:38
msgid "Grid"
-msgstr ""
+msgstr "Sareta"
#: Pinta.Tools/EllipseTool.cs:38
msgid "Ellipse"
-msgstr ""
+msgstr "Elipsea"
#: Pinta.Tools/EllipseTool.cs:44
msgid ""
"Click and drag to draw an ellipse (right click for secondary color). Hold "
"shift to constrain to a circle."
msgstr ""
+"Egin klik eta arrastatu elipse bat marrazteko (eskuineko klik-a bigarren "
+"mailako kolorea erabiltzeko). Mantendu Shift sakatuta zirkulua egiteko."
#: Pinta.Tools/CloneStampTool.cs:43
msgid "Clone Stamp"
-msgstr ""
+msgstr "Klonatze-zigilua"
#: Pinta.Tools/CloneStampTool.cs:48
msgid "Ctrl-left click to set origin, left click to paint."
-msgstr ""
+msgstr "Ctrl-ezkerreko klik jatorria ezartzeko, ezkerreko klik margotzeko."
#: Pinta.Tools/ZoomTool.cs:49
msgid "Zoom"
-msgstr ""
+msgstr "Zooma"
#: Pinta.Tools/ZoomTool.cs:55
msgid ""
"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
"selection."
msgstr ""
+"Ezkerreko klik-a handiagotzeko. Eskuineko klik-a txikiagotzeko. Egin klik "
+"eta arrastatu hautapenera zooma egiteko."
#: Pinta.Tools/RoundedRectangleTool.cs:44
msgid "Rounded Rectangle"
-msgstr ""
+msgstr "Laukizuzen biribildua"
#: Pinta.Tools/RoundedRectangleTool.cs:50
msgid ""
"Click and drag to draw a rounded rectangle (right click for secondary "
"color). Hold shift to constrain."
msgstr ""
+"Egin klik eta arrastatu laukizuzen biribildua marrazteko (eskuineko klik-a "
+"bigarren mailako kolorea erabiltzeko). Mantendu Shift sakatuta proportzioak "
+"mantentzeko."
#: Pinta.Tools/RoundedRectangleTool.cs:83
msgid "Radius"
-msgstr ""
+msgstr "Erradioa"
#: Pinta.Tools/RoundedRectangleTool.cs:88
msgid "Decrease rectangle's corner radius"
-msgstr ""
+msgstr "Txikitu laukizuzenaren izkinen erradioa"
#: Pinta.Tools/RoundedRectangleTool.cs:102
msgid "Increase rectangle's corner radius"
-msgstr ""
+msgstr "Handitu laukizuzenaren izkinen erradioa"
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
-msgstr ""
+msgstr "Kolore-hautatzailea"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Ezkerreko klik-a kolore nagusia ezartzeko. Eskuineko klik-a bigarren mailako "
+"kolorea ezartzeko."
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
-msgstr ""
+msgstr "Hautaketaren ondoren"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Do not switch tool"
-msgstr ""
+msgstr "Ez aldatu tresnaz"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to previous tool"
-msgstr ""
+msgstr "Aldatu aurreko tresnara"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to Pencil tool"
-msgstr ""
+msgstr "Aldatu Arkatza tresnara"
#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
msgid "Pencil"
-msgstr ""
+msgstr "Arkatza"
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
-msgstr ""
+msgstr "Borragoma"
#: Pinta.Tools/EraserTool.cs:47
msgid "Click and drag to erase a portion of the image."
-msgstr ""
+msgstr "Egin klik eta arrastatu irudiaren zati bat borratzeko."
#: Pinta.Tools/PencilTool.cs:50
msgid ""
"Left click to draw freeform, one-pixel wide lines with the primary color, "
"right click to use the secondary color."
msgstr ""
+"Ezkerreko klik forma librea marrazteko, pixel bateko zabaleradun lerroak "
+"kolore nagusiarekin, eskuineko klik bigarren mailako kolorea erabiltzeko."
#: Pinta.Tools/MoveSelectedTool.cs:42
msgid "Move Selected Pixels"
-msgstr ""
+msgstr "Mugitu hautatutako pixelak"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
-msgstr ""
+msgstr "Arrastatu hautapena hura mugitzeko."
#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
msgid "Hide"
-msgstr ""
+msgstr "Ezkutatu"
#: Pinta/DockLibrary/DockItemContainer.cs:190
msgid "Dock"
-msgstr ""
+msgstr "Atrakea"
#: Pinta/DockLibrary/DockItemContainer.cs:194
#: Pinta/DockLibrary/DockItem.cs:502
msgid "Auto Hide"
-msgstr ""
+msgstr "Automatikoki ezkutatu"
#: Pinta/DockLibrary/DockItem.cs:485
msgid "Dockable"
-msgstr ""
+msgstr "Atrakagarria"
#: Pinta/DockLibrary/DockItem.cs:493
msgid "Floating"
-msgstr ""
+msgstr "Mugikorra"
#: Pinta/Options.cs:486
msgid "OptionName"
-msgstr ""
+msgstr "OptionName"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
msgid "By percentage:"
-msgstr ""
+msgstr "Ehunekoetan:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
msgid "By absolute size:"
-msgstr ""
+msgstr "Tamaina absolutuan:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
msgid "Width:"
-msgstr ""
+msgstr "Zabalera:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
@@ -1127,243 +1169,259 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
msgid "pixels"
-msgstr ""
+msgstr "pixel"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
msgid "Height:"
-msgstr ""
+msgstr "Altuera:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
msgid "Maintain aspect ratio"
-msgstr ""
+msgstr "Mantendu aspektu-erlazioa"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
msgid "Anchor:"
-msgstr ""
+msgstr "Ainguratzea:"
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
msgid "New Image Size "
-msgstr ""
+msgstr "Irudiaren tamaina berria "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Geruza-propietateak"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
-msgstr ""
+msgstr "Izena:"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
msgid "Visible"
-msgstr ""
+msgstr "Ikusgaia"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
msgid "Opacity:"
-msgstr ""
+msgstr "Opakutasuna:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:450
msgid "_File"
-msgstr ""
+msgstr "_Fitxategia"
#: Pinta/MainWindow.cs:449
msgid "_Edit"
-msgstr ""
+msgstr "_Editatu"
#: Pinta/MainWindow.cs:451
msgid "_View"
-msgstr ""
+msgstr "_Ikusi"
#: Pinta/MainWindow.cs:454
msgid "_Image"
-msgstr ""
+msgstr "I_rudia"
#: Pinta/MainWindow.cs:455
msgid "_Layers"
-msgstr ""
+msgstr "_Geruzak"
#: Pinta/MainWindow.cs:456
msgid "_Adjustments"
-msgstr ""
+msgstr "_Doikuntzak"
#: Pinta/MainWindow.cs:457
msgid "Effe_cts"
-msgstr ""
+msgstr "Efe_ktuak"
#: Pinta/MainWindow.cs:459
msgid "_Window"
-msgstr ""
+msgstr "Lei_hoa"
#: Pinta/MainWindow.cs:463
msgid "Tool Windows"
-msgstr ""
+msgstr "Tresna-leihoak"
#: Pinta/MainWindow.cs:467
msgid "_Help"
-msgstr ""
+msgstr "_Laguntza"
#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
msgid "Tools"
-msgstr ""
+msgstr "Tresnak"
#: Pinta/MainWindow.cs:578
msgid "Documents"
-msgstr ""
+msgstr "Dokumentuak"
#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
msgid "Layers"
-msgstr ""
+msgstr "Geruzak"
#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
msgid "History"
-msgstr ""
+msgstr "Historia"
#: Pinta/DialogHandlers.cs:99
msgid "Take Screenshot"
-msgstr ""
+msgstr "Hartu pantaila-argazkia"
#: Pinta/DialogHandlers.cs:100
msgid "Delay before taking a screenshot (seconds):"
-msgstr ""
+msgstr "Pantaila-argazkia hartzeko atzerapena (segundoak):"
#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+msgstr "Gorde \"{0}\" irudiaren aldaketak itxi baino lehen?"
#: Pinta/DialogHandlers.cs:140
msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
+msgstr "Gordetzen ez baduzu, aldaketa guztiak betiko galduko dira."
#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
-msgstr ""
+msgstr "Itxi gorde gabe"
#: Pinta/DialogHandlers.cs:174
msgid "Resize Palette"
-msgstr ""
+msgstr "Aldatu paletaren tamaina"
#: Pinta/DialogHandlers.cs:175
msgid "New palette size:"
-msgstr ""
+msgstr "Paletaren tamaina berria:"
#: Pinta/DialogHandlers.cs:301
msgid "Layer Opacity"
-msgstr ""
+msgstr "Geruzaren opakutasuna"
#: Pinta/DialogHandlers.cs:306
msgid "Rename Layer"
-msgstr ""
+msgstr "Aldatu geruzaren izena"
#: Pinta/DialogHandlers.cs:311
msgid "Hide Layer"
-msgstr ""
+msgstr "Ezkutatu geruza"
#: Pinta/DialogHandlers.cs:311
msgid "Show Layer"
-msgstr ""
+msgstr "Erakutsi geruza"
#: Pinta/DialogHandlers.cs:404
msgid "Image files"
-msgstr ""
+msgstr "Irudi-fitxategiak"
#: Pinta/DialogHandlers.cs:461
msgid "Paste cancelled"
-msgstr ""
+msgstr "Itsastea bertan behera geratu da"
#: Pinta/DialogHandlers.cs:462
msgid "The clipboard does not contain an image"
-msgstr ""
+msgstr "Arbelean ez dago irudirik"
#: Pinta/DialogHandlers.cs:495
msgid "Save Image File"
-msgstr ""
+msgstr "Gorde irudi-fitxategia"
#: Pinta/DialogHandlers.cs:575
msgid "Pinta does not support saving images in this file format."
msgstr ""
+"Pintak ez du onartzen fitxategi-formatu horretako irudiak gordetzerik."
#: Pinta/DialogHandlers.cs:593
#, csharp-format
msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
+"Jadanik existitzen da \"{0}\" deitutako fitxategi bat. Ordeztu nahi al duzu?"
#: Pinta/DialogHandlers.cs:594
#, csharp-format
msgid ""
"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
+"Fitxategia jadanik existitzen da \"{1}\"-(e)n. Ordezten baduzu, bere eduki "
+"guztiak gainidatziko dira."
#: Pinta/Main.cs:68
msgid "number of threads to use for rendering"
-msgstr ""
+msgstr "errendatzerako erabiliko den hari-kopurua"
#: Pinta/Dialogs/AboutPintaTabPage.cs:41
#: Pinta/Dialogs/VersionInformationTabPage.cs:50
msgid "Version"
-msgstr ""
+msgstr "Bertsioa"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "License"
-msgstr ""
+msgstr "Lizentzia"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "Released under the MIT X11 License."
-msgstr ""
+msgstr "MIT X11 lizentziapean argitaratua."
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "Copyright"
-msgstr ""
+msgstr "Copyright"
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "by Pinta contributors"
-msgstr ""
+msgstr "Pintaren garatzaileak"
#: Pinta/Dialogs/VersionInformationTabPage.cs:44
msgid "Title"
-msgstr ""
+msgstr "Izenburua"
#: Pinta/Dialogs/VersionInformationTabPage.cs:53
msgid "Path"
-msgstr ""
+msgstr "Bidea"
#: Pinta/Dialogs/JpegCompressionDialog.cs:38
msgid "JPEG Quality"
-msgstr ""
+msgstr "JPEG kalitatea"
#: Pinta/Dialogs/JpegCompressionDialog.cs:46
msgid "Quality: "
-msgstr ""
+msgstr "Kalitatea: "
#: Pinta/Dialogs/AboutDialog.cs:101
msgid "Contributors to this Release"
-msgstr ""
+msgstr "Bertsio honetan lan egin dutenak"
#: Pinta/Dialogs/AboutDialog.cs:111
msgid "Previous Contributors"
-msgstr ""
+msgstr "Aurretik ekarpenak egin dituztenak"
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
+"This is a dummy translation so that the credits are counted as translated.\n"
+"\n"
+"Launchpad Contributions:\n"
+" Asier Sarasua Garmendia https://launchpad.net/~asarasuagarmendia"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
-msgstr ""
+msgstr "Itzulpena:"
#: Pinta/Dialogs/AboutDialog.cs:130
msgid "Based on the work of Paint.NET:"
-msgstr ""
+msgstr "Paint.NETen lanean oinarritua:"
#: Pinta/Dialogs/AboutDialog.cs:137
msgid "Using some icons from:"
-msgstr ""
+msgstr "Zenbait ikono hemendik datoz:"
#: Pinta/Dialogs/AboutDialog.cs:249
msgid "About Pinta"
-msgstr ""
+msgstr "Pintari buruz"
#: Pinta/Dialogs/AboutDialog.cs:267
msgid "Version Info"
-msgstr ""
+msgstr "Bertsio-informazioa"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1372,7 +1430,7 @@ msgstr ""
#: SharpenData dialog
#: MotionBlurEffect dialog
msgid "Amount"
-msgstr ""
+msgstr "Kantitatea"
#: RadialBlurEffect dialog
#: JuliaFractalEffect dialog
@@ -1382,158 +1440,171 @@ msgstr ""
#: ReliefData dialog
#: TwistEffect dialog
msgid "Angle"
-msgstr ""
+msgstr "Angelua"
#: CloudsEffect dialog
msgid "Antialias"
-msgstr ""
+msgstr "Antialias-a"
#: GlowEffect dialog
msgid "Blend Mode"
-msgstr ""
+msgstr "Nahaste-modua"
#: OilPaintingEffect dialog
msgid "Brightness"
-msgstr ""
+msgstr "Distira"
#: PixelateData dialog
msgid "Brush Size"
-msgstr ""
+msgstr "Brotxaren tamaina"
#: PolarInversionEffect dialog
msgid "Cell Size"
-msgstr ""
+msgstr "Gelaxkaren tamaina"
#: MotionBlurEffect dialog
msgid "Center Offset"
-msgstr ""
+msgstr "Erdiko desplazamendua"
#: OilPaintingEffect dialog
msgid "Centered"
-msgstr ""
+msgstr "Zentratua"
#: PencilSketchEffect dialog
msgid "Coarseness"
-msgstr ""
+msgstr "Ale-tamaina"
#: AddNoiseEffect dialog
msgid "Color Range"
-msgstr ""
+msgstr "Kolore-barrutia"
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr ""
+msgstr "Kolore-saturazioa"
#: GlowEffect dialog
msgid "Coloring"
-msgstr ""
+msgstr "Koloratzailea"
#: AddNoiseEffect dialog
msgid "Contrast"
-msgstr ""
+msgstr "Kontrastea"
#: FragmentEffect dialog
msgid "Coverage"
-msgstr ""
+msgstr "Estaldura"
#: MotionBlurEffect dialog
#: PolarInversionEffect dialog
msgid "Distance"
-msgstr ""
+msgstr "Distantzia"
#: JuliaFractalEffect dialog
msgid "Edge Behavior"
-msgstr ""
+msgstr "Ertz-portaera"
#: MandelbrotFractalEffect dialog
#: FragmentEffect dialog
msgid "Factor"
-msgstr ""
+msgstr "Faktorea"
#: InkSketchEffect dialog
msgid "Fragments"
-msgstr ""
+msgstr "Zatiak"
#: TileEffect dialog
msgid "Ink Outline"
-msgstr ""
+msgstr "Tinta-ingerada"
#: AddNoiseEffect dialog
#: OutlineEffect dialog
#: MandelbrotFractalEffect dialog
msgid "Intensity"
-msgstr ""
+msgstr "Intentsitatea"
#: RadialBlurEffect dialog
msgid "Lighting"
-msgstr ""
+msgstr "Argiztapena"
#: ZoomBlurEffect dialog
#: BulgeEffect dialog
#: PencilSketchEffect dialog
msgid "Offset"
-msgstr ""
+msgstr "Desplazamendua"
#: MedianEffect dialog
msgid "Pencil Tip Size"
-msgstr ""
+msgstr "Arkatz-puntaren tamaina"
#: CloudsEffect dialog
msgid "Percentile"
-msgstr ""
+msgstr "Ehunekoa"
#: RadialBlurEffect dialog
msgid "Power"
-msgstr ""
+msgstr "Energia"
#: PolarInversionEffect dialog
#: JuliaFractalEffect dialog
#: MandelbrotFractalEffect dialog
#: GaussianBlurEffect dialog
msgid "Quality"
-msgstr ""
+msgstr "Kalitatea"
#: TileEffect dialog
#: RedEyeRemoveData dialog
msgid "Rotation"
-msgstr ""
+msgstr "Biraketa"
#: CloudsEffect dialog
msgid "Saturation percentage"
-msgstr ""
+msgstr "Saturazioaren ehunekoa"
#: CloudsEffect dialog
msgid "Scale"
-msgstr ""
+msgstr "Eskala"
#: SoftenPortraitData dialog
msgid "Seed"
-msgstr ""
+msgstr "Hazia"
#: ReduceNoiseEffect dialog
msgid "Softness"
-msgstr ""
+msgstr "Leuntasuna"
#: OutlineEffect dialog
msgid "Strength"
-msgstr ""
+msgstr "Sendotasuna"
#: TileEffect dialog
msgid "Thickness"
-msgstr ""
+msgstr "Lodiera"
#: RedEyeRemoveData dialog
msgid "Tile Size"
-msgstr ""
+msgstr "Mosaiko-tamaina"
#: JuliaFractalEffect dialog
msgid "Warmth"
-msgstr ""
+msgstr "Berotasuna"
#: RadialBlurEffect dialog
-msgid "Use low quality for previews, small images, and small angles. Use high quality for final quality, large images, and large angles."
+msgid ""
+"Use low quality for previews, small images, and small angles. Use high "
+"quality for final quality, large images, and large angles."
msgstr ""
+"Erabili kalitate baxua aurrebistetarako, irudi txikietarako eta angelu "
+"txikietarako. Erabili kalitate altua behin-betiko irudietarako, irudi "
+"handietarako eta angelu handietarako."
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+"Argibidea: Emaitza hobeak lortzeko, lehenengo erabili hautapen-tresnak begi "
+"bakoitza hautatzeko."
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-fi.po b/po/messages-fi.po
index 98817be..b7fb1cc 100644
--- a/po/messages-fi.po
+++ b/po/messages-fi.po
@@ -7,557 +7,746 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-24 19:59+0000\n"
-"Last-Translator: Jarno Ruokamo <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-12 12:05+0000\n"
+"Last-Translator: Jiri Grönroos <Unknown>\n"
"Language-Team: Finnish <fi at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Tietoja"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Ikkuna"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Sivellin"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Taso"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Tiedosto"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopioi"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Muokkaa"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Pohjan koko"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Näytä"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Työkalu"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Kuva"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Pikanäppäin"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "T_asot"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Normaali sekoitus"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Säädöt"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Ylikirjoitus"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "T_ehosteet"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Reunojen pehmennys päällä"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Ikkuna"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Reunojen pehmennys pois päältä"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Ohje"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Muuta kokoa"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr "Työkaluikkunat"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Viimeistele pikselit"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Työkalut"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Pyöritä 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paletti"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Käännä kuva vaakatasossa"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumentit"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Käännä kuva pystytasossa"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Tasot"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Pyöritä 90° myötäpäivään"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historia"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Pyöritä 90° vastapäivään"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Piilota"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Käännä taso vaakatasossa"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Telakoitava"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Käännä taso pystytasossa"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Kelluva"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Yleiset"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automaattinen piilotus"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} kuva ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Telakka"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Rajaa valintaan"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Tämän julkaisun tekijät"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Muuta kokoa..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Aiemmat tekijät"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Pohjan koko..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jarno Ruokamo https://launchpad.net/~jarno-ruokamo\n"
-" Jiri Grönroos https://launchpad.net/~jiri-gronroos\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Tommi Saira https://launchpad.net/~tommisaira\n"
-" Urmas https://launchpad.net/~urmas-2006"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Käännä vaakatasossa"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Käännöksen tehnyt:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Käännä pystytasossa"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Perustuu ohjelmaan Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Yhdistä tasot"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Käyttää kuvakkeita kokoelmista:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Suurenna"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Tietoja Pintasta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Pienennä"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Versiotiedot"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Tarkenna ikkunaan"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Nimi"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Tarkenna valintaan"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versio"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Oikea koko"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Polku"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Työkalupalkki"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Lisenssi"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Pikseliristikko"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Julkaistaan MIT X11 -lisenssin alaisena."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Viivoitin"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Tekijänoikeus"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pikseliä"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "Pinta-tekijöiden"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Tuumaa"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "renderointiin käytettävät säikeet"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Senttimetriä"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Muuta kokoa"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Koko näyttö"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Prosentin mukaan:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Mitta-asteikko"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Koon mukaan:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Uusi taso"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Leveys:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Poista taso"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pikseliä"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Monista taso"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Korkeus:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Yhdistä taso alas"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Säilytä kuvasuhde"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Tuo tiedostosta..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Pyöritä / Zoomaa"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Siirrä tasoa ylös"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Siirrä tasoa alas"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Tason ominaisuudet"
+msgid "Layer Properties..."
+msgstr "Tason ominaisuudet..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nimi:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Avaa kuvatiedosto"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Näkyvä"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Tuo tiedostosta"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Peittävyys:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Tallenna kaikki"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Pohjan koko"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Sulje kaikki"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Ankkuri:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pintan verkkosivusto"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Ilmoita virheestä"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Käännä tämä ohjelma"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Tietoja"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Uusi..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Uusi kuvakaappaus..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Avaa..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Avaa viimeisin"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Sulje"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Tallenna"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Tallenna nimellä..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Tulosta"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Poistu"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Uusi"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Avaa"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Kumoa"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Tee uudelleen"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Leikkaa"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopioi"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Liitä"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Liitä uuteen tasoon"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Liitä uuteen kuvaan"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Poista valinta"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Täytä valinta"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Käännä valinta"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Valitse kaikki"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Poista valinta"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Palauta oletus"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Aseta värien määrä"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paletti"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Avaa palettitiedosto"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Palettitiedostot (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Kaikki tiedostot"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Palettia ei voitu avata: {0}\n"
+"Varmista että tiedosto jota yrität avata on joko GIMP tai Paint.NET paletti."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Virhe"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Tallenna palettitiedosto"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET paletti (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP paletti (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Tallentamaton kuva {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Tausta"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Uusi kuva"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Uusi koko "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Avaa kuva"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Tallennetanko muutokset kuvaan \"{0}\" ennen uuden luontia?"
+msgid "Could not open file: {0}"
+msgstr "Tiedostoa ei voitu avata: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Jos tallennusta ei tehdä, kaikki muutokset häviävät lopullisesti."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Renderointi"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Jatka ilman tallennusta"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Porrasta"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Tason peittävyys"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Käännä värit"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Nimeä taso uudelleen"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Sävyala"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Piilota taso"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Mustavalkoinen"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Näytä taso"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Automaattinen taso"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "label1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Sävy / Värikylläisyys"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "label"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Kirkkaus / Kontrasti"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Satunnainen kohina"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Seepia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Uusi siemen"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Käyrät"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Värinpoimija"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Siirtokartta"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Vasemmalla hiiren napilla valitset edustavärin, oikealla valitset "
-"taustavärin."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Valinnan jälkeen"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Värin kirkkaus"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Älä vaihda työkalua"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Vaihda edelliseen työkaluun"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Punainen "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Vaihda Kynään"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Vihreä"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Kynä"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Sininen "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Lassovalinta"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Palauta"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Napsauta ja siirrä hiirtä luodaksesi valittavan alueen reunan."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Vihje: Napsauta oikealla napilla poistaaksesi pisteitä."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zoomaus"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Sävyjen säädöt"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Vasemmalla napilla suurennat, oikealla pienennät. Napsauta ja siirrä "
-"luodaksesi valinnan."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Sisääntulon histogrammi"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Siveltimen koko"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Sisääntulo"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Pienennä sivellintä"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Ulostulo"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Suurenna sivellintä"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Ulostulon histogrammi"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Reunan muoto"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Auto"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Täytön muoto"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Punainen"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Täytön ja reunan muoto"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Sininen"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Siirrä valittuja pikseleitä"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Kytketty"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Siirrä valintaa siirtääksesi kohdetta."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Kynäluonnos"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Pan"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artistinen"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Napsauta ja siirrä hiirtä liikkuaksesi kuvalla."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Epäkohdistus"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Vasemmalla napilla piirrät vapaita, pikselin leveitä viivoja edustavärillä, "
-"oikealla napilla taustavärillä."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Sumennus"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Ellipsivalinta"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Pullistuma"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Napsauta ja siirrä piirtääksesi elliptisen valinnan. Paina shift-näppäintä "
-"pakottaaksesi ympyrään."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Vääristä"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Väriliukuma"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrotin joukko"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Napsauta ja siirrä piirtääksesi liukuman edustaväristä taustaväriin. "
-"Oikealla napilla käänteinen suunta."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Renderointi"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Lineaari"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Mediaani"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Lineaari (Peilattu)"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Kohina"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Timantti"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pikselöi"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Säteittäinen"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Terävöitä"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Kartio"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Valokuva"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Väritila"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Öljymaalaus"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Läpinäkyvyystila"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gauss-sumennus"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Pyöristetty suorakulmio"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Hehku"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Napsauta ja siirrä piirtääksesi pyöristetyn suorakulmion (oikealla napilla "
-"taustaväri). Pakota neliöksi shift-näppäimellä."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Pehmennä"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Säde"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Tiiliheijastus"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Vähennä pyöristetyn kulman sädettä"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Punasilmän poistaja"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Lisää pyöristetyn kulman sädettä"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Jäätynyt lasi"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Vasemmalla napilla piirrät edustavärillä, oikealla napilla taustavärillä."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Reunan tunnistus"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Suorakulmainen valinta"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Tyyli"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Napsauta ja siirrä piirtääksesi suorakulmaisen valinnan. Pakota neliöksi "
-"shift-näppäimellä."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julian joukko"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Täyttö"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Liike-epäterävyys"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Vasemmalla napilla täytät alueen edustavärillä, oikealla napilla täytät "
-"taustavärillä."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Korkokuva"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Kloonaus"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Musteluonnos"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Siirrä valintaa"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Zoom-sumennus"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Vedä valintaa siirtääksesi valinnan reunaa."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Käänteismuunnos"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Vapaa muoto"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Pilviä"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Tulvatila"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Pirstaloi"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Jatkuva"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Vähennä kohinaa"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Globaali"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Säteittäinen sumennus"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Toleranssi"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Kierre"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Ellipsi"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Lisää kohinaa"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Napsauta ja siirrä piirtääksesi ellipsin (oikealla napilla taustavärillä). "
-"Pakota ympyräksi shift-näppäimellä."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Reliefi"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Ääriviiva"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Satunnainen kohina"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Uusi siemen"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "label1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "label"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Valitse edustaväri"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Valitse taustaväri"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Valitse palettiväri"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Pan"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Napsauta ja siirrä hiirtä liikkuaksesi kuvalla."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -571,42 +760,34 @@ msgstr ""
"Napsauta vasemmalla sijoittaaksesi kursorin, ja kirjoita teksti. Väri on "
"edustaväri."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Kirjasin"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Lihavoitu"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Kursivoitu"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Alleviivattu"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Tasaa vasemmalle"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Keskitä"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Tasaa oikealle"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Taikasauva"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Napsauta valitaksesi samanvärisen alueen."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Suorakulmio"
@@ -619,654 +800,619 @@ msgstr ""
"Napsauta ja siirrä piirtääksesi suorakulmion (oikealla napilla "
"taustavärillä). Pakota neliöksi shift-näppäimellä."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Viiva"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Vapaa muoto"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "Vasemmalla piirrät edustavärillä, oikealla napilla taustavärillä."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Vasemmalla napilla piirrät edustavärillä, oikealla napilla taustavärillä."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Uudelleen väritä"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Piirtotyyli"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Vasemmalla napilla korvaa taustaväri edustavärillä."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Reunan muoto"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Pyyhin"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Täytön muoto"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Napsauta ja siirrä poistaaksesi osan kuvasta."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Täytön ja reunan muoto"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pikselöi"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Tulvatila"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Vääristä"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Jatkuva"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Punasilmän poistaja"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Globaali"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Valokuva"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Toleranssi"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Liike-epäterävyys"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Viiva"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Sumennus"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "Vasemmalla piirrät edustavärillä, oikealla napilla taustavärillä."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Musteluonnos"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Siirrä valintaa"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artistinen"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Vedä valintaa siirtääksesi valinnan reunaa."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Säteittäinen sumennus"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Suorakulmainen valinta"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Epäkohdistus"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Napsauta ja siirrä piirtääksesi suorakulmaisen valinnan. Pakota neliöksi "
+"shift-näppäimellä."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Reunan tunnistus"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Taikasauva"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Tyyli"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Napsauta valitaksesi samanvärisen alueen."
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Jäätynyt lasi"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Ellipsivalinta"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Öljymaalaus"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Napsauta ja siirrä piirtääksesi elliptisen valinnan. Paina shift-näppäintä "
+"pakottaaksesi ympyrään."
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Zoom-sumennus"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Lassovalinta"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Käänteismuunnos"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Napsauta ja siirrä hiirtä luodaksesi valittavan alueen reunan."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Pilviä"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Täyttö"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Renderointi"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Vasemmalla napilla täytät alueen edustavärillä, oikealla napilla täytät "
+"taustavärillä."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Hehku"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Väriliukuma"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Lisää kohinaa"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Napsauta ja siirrä piirtääksesi liukuman edustaväristä taustaväriin. "
+"Oikealla napilla käänteinen suunta."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Kohina"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Lineaari"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Pirstaloi"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Lineaari (Peilattu)"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Terävöitä"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Timantti"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Kynäluonnos"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Säteittäinen"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Ääriviiva"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Kartio"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gauss-sumennus"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Tila"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Tiiliheijastus"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Väritila"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Reliefi"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Läpinäkyvyystila"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Korkokuva"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Siveltimen koko"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrotin joukko"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Pienennä sivellintä"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Pullistuma"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Suurenna sivellintä"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Kierre"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Sivellin"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Pehmennä"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Tyyppi"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Vähennä kohinaa"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Uudelleen väritä"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julian joukko"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Vasemmalla napilla korvaa taustaväri edustavärillä."
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Mediaani"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normaali"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Käyrät"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Ympyrät"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Sävyala"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Neliöt"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Automaattinen taso"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Roiske"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Käännä värit"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Ristikot"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Porrasta"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Ellipsi"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Mustavalkoinen"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Napsauta ja siirrä piirtääksesi ellipsin (oikealla napilla taustavärillä). "
+"Pakota ympyräksi shift-näppäimellä."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Sävy / Värikylläisyys"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Kloonaus"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Seepia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "Napsauta oikealla asettaaksesi lähtöpisteen, vasemmalla piirrät."
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Kirkkaus / Kontrasti"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zoomaus"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Sävyjen säädöt"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Vasemmalla napilla suurennat, oikealla pienennät. Napsauta ja siirrä "
+"luodaksesi valinnan."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Sisääntulon histogrammi"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Pyöristetty suorakulmio"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Sisääntulo"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Napsauta ja siirrä piirtääksesi pyöristetyn suorakulmion (oikealla napilla "
+"taustaväri). Pakota neliöksi shift-näppäimellä."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Ulostulo"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Säde"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Ulostulon histogrammi"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Vähennä pyöristetyn kulman sädettä"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Auto"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Lisää pyöristetyn kulman sädettä"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Palauta"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Värinpoimija"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Punainen"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Vasemmalla hiiren napilla valitset edustavärin, oikealla valitset "
+"taustavärin."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Vihreä"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Valinnan jälkeen"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Sininen"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Älä vaihda työkalua"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Kytketty"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Vaihda edelliseen työkaluun"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Siirtokartta"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Vaihda Kynään"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Kynä"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Värin kirkkaus"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Pyyhin"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Napsauta ja siirrä poistaaksesi osan kuvasta."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Punainen "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Vasemmalla napilla piirrät vapaita, pikselin leveitä viivoja edustavärillä, "
+"oikealla napilla taustavärillä."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Sininen "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Siirrä valittuja pikseleitä"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Vihje: Napsauta oikealla napilla poistaaksesi pisteitä."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Siirrä valintaa siirtääksesi kohdetta."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Uusi taso"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Piilota"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Poista taso"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Telakka"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Monista taso"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automaattinen piilotus"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Yhdistä taso alas"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Telakoitava"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Tuo tiedostosta..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Kelluva"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Käännä vaakatasossa"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "OptionName"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Käännä pystytasossa"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Prosentin mukaan:"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Pyöritä / Zoomaa"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Koon mukaan:"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Siirrä tasoa ylös"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Leveys:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Siirrä tasoa alas"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pikseliä"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Avaa kuvatiedosto"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Korkeus:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Tuo tiedostosta"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Säilytä kuvasuhde"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Uusi..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Ankkuri:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Avaa..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Uusi koko "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Avaa viimeisin"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Tason ominaisuudet"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Sulje"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nimi:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Tallenna"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Näkyvä"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Tallenna nimellä..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Peittävyys:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Tulosta"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Poistu"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Tiedosto"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Uusi"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Muokkaa"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Avaa"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Näytä"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Tausta"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Kuva"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Avaa kuva"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "T_asot"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Tiedostoa ei voitu avata: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Säädöt"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Virhe"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "T_ehosteet"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr ""
-"Tallennetaanko muutokset kuvaan \"{0}\", ennen kuin avaat uuden kuvan?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Ikkuna"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Kuvatiedostot"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Työkaluikkunat"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Kaikki tiedostot"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Ohje"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Tallenna kuva"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Työkalut"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} kuva ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumentit"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster-kuva (*.ora)"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Tasot"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historia"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Ota kuvankaappaus"
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Viive ennen kuvankaappauksen ottamista (sekuntteja):"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Tallennetaanko muutokset kuvaan \"{0}\" ennen sulkemista?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Jos tallennusta ei tehdä, kaikki muutokset häviävät lopullisesti."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Sulje tallentamatta"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Rajaa valintaan"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Muuta kokoa..."
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Pohjan koko..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Pyöritä 90° myötäpäivään"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Pyöritä 90° vastapäivään"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Pyöritä 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Yhdistä tasot"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Kumoa"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Tee uudelleen"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Leikkaa"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopioi"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Liitä"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Muuta paletin kokoa"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Liitä uuteen tasoon"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Paletin uusi koko:"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Liitä uuteen kuvaan"
-
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Poista valinta"
-
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Täytä valinta"
-
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Käännä valinta"
-
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Valitse kaikki"
-
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Poista valinta"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Tason peittävyys"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Suurenna"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Nimeä taso uudelleen"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Pienennä"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Piilota taso"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Tarkenna ikkunaan"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Näytä taso"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Tarkenna valintaan"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Kuvatiedostot"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Oikea koko"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Liitä peruutettu"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Pikseliristikko"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Leikepöydällä ei ole kuvaa"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Viivoitin"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Tallenna kuva"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pikseliä"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta ei tue kuvien tallentamista tässä muodossa."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Tuumaa"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Tiedosto nimeltä \"{0}\" on olemassa. Haluatko korvata sen?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Senttimetriä"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "Tiedosto on jo olemassa \"{1}\". Korvaaminen ylikirjoittaa sisällön."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Koko näyttö"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "renderointiin käytettävät säikeet"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Ikkuna"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versio"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pintan verkkosivusto"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Lisenssi"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Ilmoita virheestä"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Julkaistaan MIT X11 -lisenssin alaisena."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Käännä tämä ohjelma"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Tekijänoikeus"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Yleiset"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "Pinta-tekijöiden"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Työkalu"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Nimi"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Pikanäppäin"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Polku"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Reunojen pehmennys"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG Laatu"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Normaali sekoitus / Ylikirjoitus"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Laatu: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Käännä kuva vaakatasossa"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Tämän julkaisun tekijät"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Käännä kuva pystytasossa"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Aiemmat tekijät"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Käännä taso vaakatasossa"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jarno Ruokamo https://launchpad.net/~jarno-ruokamo\n"
+" Jiri Grönroos https://launchpad.net/~jiri-gronroos\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Tommi Saira https://launchpad.net/~tommisaira\n"
+" Urmas https://launchpad.net/~urmas-2006"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Käännä taso pystytasossa"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Käännöksen tehnyt:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Viimeistele pikselit"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Perustuu ohjelmaan Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Renderointi"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Käyttää kuvakkeita kokoelmista:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopioi"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Tietoja Pintasta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Taso"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Versiotiedot"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1450,14 +1596,44 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Jatka ilman tallennusta"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "Fill mode"
+#~ msgstr "Tulvatila"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Vihje: Oikealla napilla voit poistaa pisteitä."
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Normaali sekoitus / Ylikirjoitus"
+
#~ msgid "Show Pad"
#~ msgstr "Näytä valikko"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Tallennetanko muutokset kuvaan \"{0}\" ennen uuden luontia?"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr ""
+#~ "Tallennetaanko muutokset kuvaan \"{0}\", ennen kuin avaat uuden kuvan?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster-kuva (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Reunojen pehmennys"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages.pot b/po/messages-fo.po
similarity index 77%
copy from po/messages.pot
copy to po/messages-fo.po
index 8ea8d21..cf97649 100644
--- a/po/messages.pot
+++ b/po/messages-fo.po
@@ -1,47 +1,49 @@
-# Pinta Translatable Strings
-# Copyright (C) 2010 Pinta Contributors
-# This file is distributed under the same license as the Pinta package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# Faroese translation for pinta
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the pinta package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2010.
+# Gunleif Joensen <gunleif at gmail.com>, 2010.
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: pinta\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2010-10-31 12:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2010-11-08 19:16+0000\n"
+"Last-Translator: Gunleif Joensen <Unknown>\n"
+"Language-Team: Føroyabólkurin\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
+"Language: fo\n"
#: Pinta.Core/Classes/DocumentWorkspace.cs:160
#: Pinta.Core/Classes/DocumentWorkspace.cs:181
#: Pinta.Core/Actions/ViewActions.cs:200
msgid "Window"
-msgstr ""
+msgstr "Vindeyga"
#: Pinta.Core/Classes/Document.cs:299
msgid "Layer"
-msgstr ""
+msgstr "Lag"
#: Pinta.Core/Classes/Document.cs:367
msgid "copy"
-msgstr ""
+msgstr "avrita"
#: Pinta.Core/Classes/Document.cs:589
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
msgid "Resize Canvas"
-msgstr ""
+msgstr "Broyt støddina á lørifti"
#: Pinta.Core/Classes/BaseTool.cs:146
msgid "Tool"
-msgstr ""
+msgstr "Amboð"
#: Pinta.Core/Classes/BaseTool.cs:204
msgid "Shortcut key"
-msgstr ""
+msgstr "Snarvegsknappur"
#: Pinta.Core/Classes/BaseTool.cs:227
msgid "Normal Blending"
@@ -49,7 +51,7 @@ msgstr ""
#: Pinta.Core/Classes/BaseTool.cs:228
msgid "Overwrite"
-msgstr ""
+msgstr "Skriva oman á"
#: Pinta.Core/Classes/BaseTool.cs:242
msgid "Antialiasing On"
@@ -62,7 +64,7 @@ msgstr ""
#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
msgid "Resize Image"
-msgstr ""
+msgstr "Broyt støddina á mynd"
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
msgid "Finish Pixels"
@@ -71,288 +73,287 @@ msgstr ""
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
#: Pinta.Core/Actions/ImageActions.cs:65
msgid "Rotate 180°"
-msgstr ""
+msgstr "Snara 180°"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
msgid "Flip Image Horizontal"
-msgstr ""
+msgstr "Venda mynd vannrætt"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
msgid "Flip Image Vertical"
-msgstr ""
+msgstr "Venda mynd loddrætt"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
#: Pinta.Core/Actions/ImageActions.cs:63
msgid "Rotate 90° Clockwise"
-msgstr ""
+msgstr "Snara 90° við urinum"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
#: Pinta.Core/Actions/ImageActions.cs:64
msgid "Rotate 90° Counter-Clockwise"
-msgstr ""
+msgstr "Snara 90° ímóti urinum"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
msgid "Flip Layer Horizontal"
-msgstr ""
+msgstr "Venda lag vannrætt"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
msgid "Flip Layer Vertical"
-msgstr ""
+msgstr "Venda lag loddrætt"
#: Pinta.Core/Effects/BaseEffect.cs:42
msgid "General"
-msgstr ""
+msgstr "Alment"
#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
#, csharp-format
msgid "{0} image ({1})"
-msgstr ""
+msgstr "{0} mynd {1}"
#: Pinta.Core/Actions/ImageActions.cs:58
#: Pinta.Core/Actions/ImageActions.cs:181
msgid "Crop to Selection"
-msgstr ""
+msgstr "Skerja til úrval"
#: Pinta.Core/Actions/ImageActions.cs:59
msgid "Resize..."
-msgstr ""
+msgstr "Broyt støddina"
#: Pinta.Core/Actions/ImageActions.cs:60
msgid "Canvas Size..."
-msgstr ""
+msgstr "Løriftsstødd..."
#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
msgid "Flip Horizontal"
-msgstr ""
+msgstr "Venda vannrætt"
#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
msgid "Flip Vertical"
-msgstr ""
+msgstr "Venda loddrætt"
#: Pinta.Core/Actions/ImageActions.cs:66
#: Pinta.Core/Actions/ImageActions.cs:127
msgid "Flatten"
-msgstr ""
+msgstr "Trýsta flatan"
#: Pinta.Core/Actions/ViewActions.cs:62
msgid "Zoom In"
-msgstr ""
+msgstr "Surra inn"
#: Pinta.Core/Actions/ViewActions.cs:63
msgid "Zoom Out"
-msgstr ""
+msgstr "Surra út"
#: Pinta.Core/Actions/ViewActions.cs:64
msgid "Zoom to Window"
-msgstr ""
+msgstr "Surra til vindeyga"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Zoom to Selection"
-msgstr ""
+msgstr "Surra til úrval"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Actual Size"
-msgstr ""
+msgstr "Verulig stødd"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Toolbar"
-msgstr ""
+msgstr "Amboðsstong"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Pixel Grid"
-msgstr ""
+msgstr "skíggjadeplanet"
#: Pinta.Core/Actions/ViewActions.cs:69
msgid "Rulers"
-msgstr ""
+msgstr "Linealir"
#: Pinta.Core/Actions/ViewActions.cs:70
msgid "Pixels"
-msgstr ""
+msgstr "Skíggjadeplar"
#: Pinta.Core/Actions/ViewActions.cs:71
msgid "Inches"
-msgstr ""
+msgstr "Tummar"
#: Pinta.Core/Actions/ViewActions.cs:72
msgid "Centimeters"
-msgstr ""
+msgstr "Sentimetrar"
#: Pinta.Core/Actions/ViewActions.cs:73
msgid "Fullscreen"
-msgstr ""
+msgstr "Fullskíggja"
#: Pinta.Core/Actions/ViewActions.cs:111
msgid "Ruler Units"
-msgstr ""
+msgstr "Linealeindir"
#: Pinta.Core/Actions/LayerActions.cs:64
#: Pinta.Core/Actions/LayerActions.cs:283
msgid "Add New Layer"
-msgstr ""
+msgstr "Legg nýtt lag afturat"
#: Pinta.Core/Actions/LayerActions.cs:65
#: Pinta.Core/Actions/LayerActions.cs:266
msgid "Delete Layer"
-msgstr ""
+msgstr "Strika lag"
#: Pinta.Core/Actions/LayerActions.cs:66
#: Pinta.Core/Actions/LayerActions.cs:257
msgid "Duplicate Layer"
-msgstr ""
+msgstr "Tvífalda lag"
#: Pinta.Core/Actions/LayerActions.cs:67
#: Pinta.Core/Actions/LayerActions.cs:235
msgid "Merge Layer Down"
-msgstr ""
+msgstr "Flætta lag niður"
#: Pinta.Core/Actions/LayerActions.cs:68
msgid "Import from File..."
-msgstr ""
+msgstr "Flyt inn úr fílu..."
#: Pinta.Core/Actions/LayerActions.cs:71
msgid "Rotate / Zoom"
-msgstr ""
+msgstr "Snara / surra"
#: Pinta.Core/Actions/LayerActions.cs:72
#: Pinta.Core/Actions/LayerActions.cs:213
msgid "Move Layer Up"
-msgstr ""
+msgstr "Flyt lag upp"
#: Pinta.Core/Actions/LayerActions.cs:73
#: Pinta.Core/Actions/LayerActions.cs:224
msgid "Move Layer Down"
-msgstr ""
+msgstr "Flyt lag niður"
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
+msgid "Layer Properties..."
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
msgid "Open Image File"
-msgstr ""
+msgstr "Opna myndafílu"
#: Pinta.Core/Actions/LayerActions.cs:179
msgid "Import From File"
-msgstr ""
+msgstr "Flyt inn úr fílu"
#: Pinta.Core/Actions/WindowActions.cs:45
msgid "Save All"
-msgstr ""
+msgstr "Goym alt"
#: Pinta.Core/Actions/WindowActions.cs:46
msgid "Close All"
-msgstr ""
+msgstr "Lat alt aftur"
#: Pinta.Core/Actions/HelpActions.cs:50
msgid "Pinta Website"
-msgstr ""
+msgstr "Heimasíðan hjá Pinta"
#: Pinta.Core/Actions/HelpActions.cs:51
msgid "File a Bug"
-msgstr ""
+msgstr "Send filufrásøgn"
#: Pinta.Core/Actions/HelpActions.cs:52
msgid "Translate This Application"
-msgstr ""
+msgstr "Týða hesa nýtsluskipan"
#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
msgid "About"
-msgstr ""
+msgstr "Um"
#: Pinta.Core/Actions/FileActions.cs:54
msgid "New..."
-msgstr ""
+msgstr "Nýggj..."
#: Pinta.Core/Actions/FileActions.cs:55
msgid "New Screenshot..."
-msgstr ""
+msgstr "Nýggj skíggjamynd"
#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
msgid "Open..."
-msgstr ""
+msgstr "Opna..."
#: Pinta.Core/Actions/FileActions.cs:57
msgid "Open Recent"
-msgstr ""
+msgstr "Opna nýliga"
#: Pinta.Core/Actions/FileActions.cs:64
msgid "Close"
-msgstr ""
+msgstr "Lat aftur"
#: Pinta.Core/Actions/FileActions.cs:65
msgid "Save"
-msgstr ""
+msgstr "Goym"
#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
msgid "Save As..."
-msgstr ""
+msgstr "Goym sum..."
#: Pinta.Core/Actions/FileActions.cs:67
msgid "Print"
-msgstr ""
+msgstr "Prenta"
#: Pinta.Core/Actions/FileActions.cs:68
msgid "Quit"
-msgstr ""
+msgstr "Gevst"
#: Pinta.Core/Actions/FileActions.cs:70
msgid "New"
-msgstr ""
+msgstr "Nýtt"
#: Pinta.Core/Actions/FileActions.cs:71
msgid "Open"
-msgstr ""
+msgstr "Opna"
#: Pinta.Core/Actions/EditActions.cs:65
msgid "Undo"
-msgstr ""
+msgstr "Angra"
#: Pinta.Core/Actions/EditActions.cs:66
msgid "Redo"
-msgstr ""
+msgstr "Endurgerð"
#: Pinta.Core/Actions/EditActions.cs:67
msgid "Cut"
-msgstr ""
+msgstr "Klipp"
#: Pinta.Core/Actions/EditActions.cs:68
msgid "Copy"
-msgstr ""
+msgstr "Avrita"
#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
msgid "Paste"
-msgstr ""
+msgstr "Klistra"
#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
msgid "Paste Into New Layer"
-msgstr ""
+msgstr "Klistra inn í eitt nýtt lag"
#: Pinta.Core/Actions/EditActions.cs:71
msgid "Paste Into New Image"
-msgstr ""
+msgstr "Klistra inn í eina nýggja mynd"
#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
#: Pinta.Core/Actions/EditActions.cs:296
msgid "Erase Selection"
-msgstr ""
+msgstr "Strika úrval"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
msgid "Fill Selection"
-msgstr ""
+msgstr "Fyll úrval"
#: Pinta.Core/Actions/EditActions.cs:74
msgid "Invert Selection"
-msgstr ""
+msgstr "Vend úrval øvugt"
#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
msgid "Select All"
-msgstr ""
+msgstr "Vel alt"
#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
msgid "Deselect"
-msgstr ""
+msgstr "Frávelja"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
@@ -360,24 +361,24 @@ msgstr ""
#: Pinta.Core/Actions/EditActions.cs:81
msgid "Set Number of Colors"
-msgstr ""
+msgstr "Set tal av litum"
#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
#: Pinta/MainWindow.cs:569
msgid "Palette"
-msgstr ""
+msgstr "Palett"
#: Pinta.Core/Actions/EditActions.cs:313
msgid "Open Palette File"
-msgstr ""
+msgstr "Opna palettfílu"
#: Pinta.Core/Actions/EditActions.cs:320
msgid "Palette files (*.txt, *.gpl)"
-msgstr ""
+msgstr "Palettfílur (*.txt, *gpl)"
#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
msgid "All files"
-msgstr ""
+msgstr "Allar fílur"
#: Pinta.Core/Actions/EditActions.cs:340
#, csharp-format
@@ -385,41 +386,48 @@ msgid ""
"Could not open palette file: {0}.\n"
"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
+"Kundi ikki opna palettfíluna: {0}.\n"
+"Vinarliga vátta, at tú roynir at opna eina gilda GIMP ella Paint.NET palett."
#: Pinta.Core/Actions/EditActions.cs:341
#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
msgid "Error"
-msgstr ""
+msgstr "Villa"
#: Pinta.Core/Actions/EditActions.cs:353
msgid "Save Palette File"
-msgstr ""
+msgstr "Goym palettfílu"
#: Pinta.Core/Actions/EditActions.cs:359
msgid "Paint.NET palette (*.txt)"
-msgstr ""
+msgstr "Paint.NET palett (*.txt)"
#: Pinta.Core/Actions/EditActions.cs:364
msgid "GIMP palette (*.gpl)"
-msgstr ""
+msgstr "GIMP palett (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Ikki goymd fíla {0}"
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
-msgstr ""
+msgstr "Bakgrund"
#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
msgid "New Image"
-msgstr ""
+msgstr "Nýggj mynd"
#: Pinta.Core/Managers/WorkspaceManager.cs:176
msgid "Open Image"
-msgstr ""
+msgstr "Opna mynd"
#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
msgid "Could not open file: {0}"
-msgstr ""
+msgstr "Kundi ikki opna fílu: {0}"
#: Pinta.Core/Managers/LivePreviewManager.cs:220
msgid "Rendering Effect"
@@ -432,15 +440,15 @@ msgstr ""
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Speglvenda litir"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
-msgstr ""
+msgstr "Stig"
#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
msgid "Black and White"
-msgstr ""
+msgstr "Svart og hvítt"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
@@ -448,7 +456,7 @@ msgstr ""
#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
msgid "Hue / Saturation"
-msgstr ""
+msgstr "Dámur / mettan"
#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
msgid "Brightness / Contrast"
@@ -456,7 +464,7 @@ msgstr ""
#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
msgid "Sepia"
-msgstr ""
+msgstr "Brúnlita"
#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
@@ -469,33 +477,33 @@ msgstr ""
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
msgid "RGB"
-msgstr ""
+msgstr "RGB"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
msgid "Luminosity"
-msgstr ""
+msgstr "Ljósmegi"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
msgid "(256, 256)"
-msgstr ""
+msgstr "(256, 256)"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
msgid "Red "
-msgstr ""
+msgstr "Reytt "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
msgid "Green"
-msgstr ""
+msgstr "Grønt"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
msgid "Blue "
-msgstr ""
+msgstr "Blátt "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
msgid "Reset"
-msgstr ""
+msgstr "Tómstilla"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
msgid "Tip: Right-click to remove control points."
@@ -503,7 +511,7 @@ msgstr ""
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
msgid "Levels Adjustment"
-msgstr ""
+msgstr "Stilla styrki"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
msgid "Input Histogram"
@@ -511,11 +519,11 @@ msgstr ""
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
msgid "Input"
-msgstr ""
+msgstr "Inntak"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
msgid "Output"
-msgstr ""
+msgstr "Úttak"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
msgid "Output Histogram"
@@ -523,29 +531,29 @@ msgstr ""
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
msgid "Auto"
-msgstr ""
+msgstr "Sjálvvirkið"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
msgid "Red"
-msgstr ""
+msgstr "Reytt"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
msgid "Blue"
-msgstr ""
+msgstr "Blátt"
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
msgid "Linked"
-msgstr ""
+msgstr "Leinkjað"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
msgid "Pencil Sketch"
-msgstr ""
+msgstr "Blýantskitsa"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
#: Pinta.Effects/Effects/InkSketchEffect.cs:42
msgid "Artistic"
-msgstr ""
+msgstr "Listarligt"
#: Pinta.Effects/Effects/UnfocusEffect.cs:28
msgid "Unfocus"
@@ -558,11 +566,11 @@ msgstr ""
#: Pinta.Effects/Effects/FragmentEffect.cs:34
#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
msgid "Blurs"
-msgstr ""
+msgstr "Kámar"
#: Pinta.Effects/Effects/BulgeEffect.cs:26
msgid "Bulge"
-msgstr ""
+msgstr "Buggla"
#: Pinta.Effects/Effects/BulgeEffect.cs:34
#: Pinta.Effects/Effects/PixelateEffect.cs:38
@@ -571,11 +579,11 @@ msgstr ""
#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
#: Pinta.Effects/Effects/TwistEffect.cs:34
msgid "Distort"
-msgstr ""
+msgstr "Reingja"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
msgid "Mandelbrot Fractal"
-msgstr ""
+msgstr "Mandelbrot fraktal"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
@@ -585,44 +593,44 @@ msgstr ""
#: Pinta.Effects/Effects/MedianEffect.cs:29
msgid "Median"
-msgstr ""
+msgstr "Miðil"
#: Pinta.Effects/Effects/MedianEffect.cs:37
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
msgid "Noise"
-msgstr ""
+msgstr "Larmur"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
-msgstr ""
+msgstr "Skíggjadepla"
#: Pinta.Effects/Effects/SharpenEffect.cs:26
msgid "Sharpen"
-msgstr ""
+msgstr "Skerpa"
#: Pinta.Effects/Effects/SharpenEffect.cs:34
#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
-msgstr ""
+msgstr "Foto"
#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
msgid "Oil Painting"
-msgstr ""
+msgstr "Oljutekning"
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
msgid "Gaussian Blur"
-msgstr ""
+msgstr "Gaussisk káma"
#: Pinta.Effects/Effects/GlowEffect.cs:31
msgid "Glow"
-msgstr ""
+msgstr "Glóð"
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
msgid "Soften Portrait"
-msgstr ""
+msgstr "Blóðka andlitsmynd"
#: Pinta.Effects/Effects/TileEffect.cs:26
msgid "Tile Reflection"
@@ -630,30 +638,30 @@ msgstr ""
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
msgid "Red Eye Removal"
-msgstr ""
+msgstr "Reyðeyga burturtøka"
#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
msgid "Frosted Glass"
-msgstr ""
+msgstr "Óglærað glas"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
-msgstr ""
+msgstr "Varnast kant"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
#: Pinta.Effects/Effects/EmbossEffect.cs:34
#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
-msgstr ""
+msgstr "Sniðger"
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
msgid "Julia Fractal"
-msgstr ""
+msgstr "Julia brýtil"
#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
msgid "Motion Blur"
-msgstr ""
+msgstr "Rørslukáma"
#: Pinta.Effects/Effects/EmbossEffect.cs:26
msgid "Emboss"
@@ -661,11 +669,11 @@ msgstr ""
#: Pinta.Effects/Effects/InkSketchEffect.cs:34
msgid "Ink Sketch"
-msgstr ""
+msgstr "Blekkskitsa"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
-msgstr ""
+msgstr "Surrukáma"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
@@ -673,15 +681,15 @@ msgstr ""
#: Pinta.Effects/Effects/CloudsEffect.cs:30
msgid "Clouds"
-msgstr ""
+msgstr "Skýggj"
#: Pinta.Effects/Effects/FragmentEffect.cs:26
msgid "Fragment"
-msgstr ""
+msgstr "Petti"
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
-msgstr ""
+msgstr "Minka um larm"
#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
msgid "Radial Blur"
@@ -689,15 +697,15 @@ msgstr ""
#: Pinta.Effects/Effects/TwistEffect.cs:26
msgid "Twist"
-msgstr ""
+msgstr "Reingja"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
-msgstr ""
+msgstr "Legg larm til"
#: Pinta.Effects/Effects/ReliefEffect.cs:45
msgid "Relief"
-msgstr ""
+msgstr "Framsker"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
@@ -705,7 +713,7 @@ msgstr ""
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
msgid "Random Noise"
-msgstr ""
+msgstr "Tilvildarligur larmur"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
msgid "Reseed"
@@ -714,70 +722,76 @@ msgstr ""
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
msgid "label1"
-msgstr ""
+msgstr "spjaldur1"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
msgid "label"
-msgstr ""
+msgstr "spjaldur"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Vel grundlit"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Vel hjálit"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Vel palettlit"
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
-msgstr ""
+msgstr "Skotra"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
-msgstr ""
+msgstr "Klikk og drag til at flyta myndina."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
-msgstr ""
+msgstr "Tekstur"
#: Pinta.Tools/TextTool.cs:44
msgid ""
"Left click to place cursor, then type desired text. Text color is primary "
"color."
msgstr ""
+"Vinstraklikkja til at seta vísan, síðani skriva ynskta tekstin. Tekstliturin "
+"er grundliturin."
#: Pinta.Tools/TextTool.cs:144
msgid "Font"
-msgstr ""
+msgstr "Stavasnið"
#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
-msgstr ""
+msgstr "Feitir stavir"
#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
-msgstr ""
+msgstr "Skákskrift"
#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
-msgstr ""
+msgstr "Undirstrika"
#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
-msgstr ""
+msgstr "Vinstrastilla"
#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
-msgstr ""
+msgstr "Miðstilla"
#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
-msgstr ""
+msgstr "Høgrastilla"
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
-msgstr ""
+msgstr "Rætthyrningur"
#: Pinta.Tools/RectangleTool.cs:44
msgid ""
@@ -797,7 +811,7 @@ msgstr ""
#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
msgid "Fill Style"
-msgstr ""
+msgstr "Fyll snið"
#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
msgid "Outline Shape"
@@ -817,27 +831,28 @@ msgstr ""
#: Pinta.Tools/FloodTool.cs:79
msgid "Contiguous"
-msgstr ""
+msgstr "Grannanæstur"
#: Pinta.Tools/FloodTool.cs:80
msgid "Global"
-msgstr ""
+msgstr "Alheimsliga"
#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
msgid "Tolerance"
-msgstr ""
+msgstr "Loyvt frávik"
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
-msgstr ""
+msgstr "Lína"
#: Pinta.Tools/LineCurveTool.cs:44
-msgid "Left click to draw with primary color, right click for secondary color."
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
#: Pinta.Tools/MoveSelectionTool.cs:42
msgid "Move Selection"
-msgstr ""
+msgstr "Flyt úrval"
#: Pinta.Tools/MoveSelectionTool.cs:48
msgid "Drag the selection to move selection outline."
@@ -845,7 +860,7 @@ msgstr ""
#: Pinta.Tools/RectangleSelectTool.cs:38
msgid "Rectangle Select"
-msgstr ""
+msgstr "Vel rætthyrning"
#: Pinta.Tools/RectangleSelectTool.cs:44
msgid ""
@@ -855,7 +870,7 @@ msgstr ""
#: Pinta.Tools/MagicWandTool.cs:46
msgid "Magic Wand Select"
-msgstr ""
+msgstr "Velja við gandastavi"
#: Pinta.Tools/MagicWandTool.cs:54
msgid "Click to select region of similar color."
@@ -863,7 +878,7 @@ msgstr ""
#: Pinta.Tools/EllipseSelectTool.cs:38
msgid "Ellipse Select"
-msgstr ""
+msgstr "Vel við ellipsu"
#: Pinta.Tools/EllipseSelectTool.cs:44
msgid ""
@@ -873,7 +888,7 @@ msgstr ""
#: Pinta.Tools/LassoSelectTool.cs:45
msgid "Lasso Select"
-msgstr ""
+msgstr "Vel við lasso"
#: Pinta.Tools/LassoSelectTool.cs:47
msgid "Click and drag to draw the outline for a selection area."
@@ -881,17 +896,19 @@ msgstr ""
#: Pinta.Tools/PaintBucketTool.cs:40
msgid "Paint Bucket"
-msgstr ""
+msgstr "Málingaspann"
#: Pinta.Tools/PaintBucketTool.cs:46
msgid ""
"Left click to fill a region with the primary color, right click to fill with "
"the secondary color."
msgstr ""
+"Vinstraklikkja til at fylla økið við grundlitinum, høgraklikkja til at fylla "
+"við hjálitinum."
#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
msgid "Gradient"
-msgstr ""
+msgstr "Stigil"
#: Pinta.Tools/GradientTool.cs:73
msgid ""
@@ -921,67 +938,67 @@ msgstr ""
#: Pinta.Tools/GradientTool.cs:195
msgid "Mode"
-msgstr ""
+msgstr "Standur"
#: Pinta.Tools/GradientTool.cs:202
msgid "Color Mode"
-msgstr ""
+msgstr "Litstandur"
#: Pinta.Tools/GradientTool.cs:203
msgid "Transparency Mode"
-msgstr ""
+msgstr "Skygnistandur"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
-msgstr ""
+msgstr "Pensilsbreidd"
#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
msgid "Decrease brush size"
-msgstr ""
+msgstr "Minka um penslabreidd"
#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
msgid "Increase brush size"
-msgstr ""
+msgstr "Økja um penslabreidd"
#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
msgid "Paintbrush"
-msgstr ""
+msgstr "Pensil"
#: Pinta.Tools/PaintBrushTool.cs:63
msgid "Type"
-msgstr ""
+msgstr "Slag"
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
-msgstr ""
+msgstr "Endurlita"
#: Pinta.Tools/RecolorTool.cs:61
msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
+msgstr "Vinstraklikkja til at seta grundlitin, í staðin fyri hjálitin."
#: Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
-msgstr ""
+msgstr "Vanligt"
#: Pinta.Tools/Brushes/CircleBrush.cs:38
msgid "Circles"
-msgstr ""
+msgstr "Sirklar"
#: Pinta.Tools/Brushes/SquaresBrush.cs:40
msgid "Squares"
-msgstr ""
+msgstr "Fýrakantar"
#: Pinta.Tools/Brushes/SplatterBrush.cs:38
msgid "Splatter"
-msgstr ""
+msgstr "Sletta"
#: Pinta.Tools/Brushes/GridBrush.cs:38
msgid "Grid"
-msgstr ""
+msgstr "Rist"
#: Pinta.Tools/EllipseTool.cs:38
msgid "Ellipse"
-msgstr ""
+msgstr "Ellipsa"
#: Pinta.Tools/EllipseTool.cs:44
msgid ""
@@ -999,17 +1016,19 @@ msgstr ""
#: Pinta.Tools/ZoomTool.cs:49
msgid "Zoom"
-msgstr ""
+msgstr "Surra"
#: Pinta.Tools/ZoomTool.cs:55
msgid ""
"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
"selection."
msgstr ""
+"Vinstraklikkja til at surra inn. Høgraklikkja til at surra út. Klikk og drag "
+"til at surra úrvalið inn."
#: Pinta.Tools/RoundedRectangleTool.cs:44
msgid "Rounded Rectangle"
-msgstr ""
+msgstr "Rundaður rætthyrningur"
#: Pinta.Tools/RoundedRectangleTool.cs:50
msgid ""
@@ -1019,7 +1038,7 @@ msgstr ""
#: Pinta.Tools/RoundedRectangleTool.cs:83
msgid "Radius"
-msgstr ""
+msgstr "Radius"
#: Pinta.Tools/RoundedRectangleTool.cs:88
msgid "Decrease rectangle's corner radius"
@@ -1031,39 +1050,40 @@ msgstr ""
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
-msgstr ""
+msgstr "Litveljari"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Vinstraklikkja til at seta grundlit. Høgraklikkja til at seta hjálit."
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
-msgstr ""
+msgstr "Eftir val"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Do not switch tool"
-msgstr ""
+msgstr "Skift ikki amboð"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to previous tool"
-msgstr ""
+msgstr "Skift til fyrra amboðið"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to Pencil tool"
-msgstr ""
+msgstr "Skift til blýantsamboð"
#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
msgid "Pencil"
-msgstr ""
+msgstr "Blýant"
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
-msgstr ""
+msgstr "Viskileður"
#: Pinta.Tools/EraserTool.cs:47
msgid "Click and drag to erase a portion of the image."
-msgstr ""
+msgstr "Klikk og drag til at viska ein part av myndini."
#: Pinta.Tools/PencilTool.cs:50
msgid ""
@@ -1073,32 +1093,32 @@ msgstr ""
#: Pinta.Tools/MoveSelectedTool.cs:42
msgid "Move Selected Pixels"
-msgstr ""
+msgstr "Flyt valdar skíggjadeplar"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
-msgstr ""
+msgstr "Drag úrvalið til flyt úrvalda innihald."
#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
msgid "Hide"
-msgstr ""
+msgstr "Fjal"
#: Pinta/DockLibrary/DockItemContainer.cs:190
msgid "Dock"
-msgstr ""
+msgstr "Dokk"
#: Pinta/DockLibrary/DockItemContainer.cs:194
#: Pinta/DockLibrary/DockItem.cs:502
msgid "Auto Hide"
-msgstr ""
+msgstr "Sjálvfjal"
#: Pinta/DockLibrary/DockItem.cs:485
msgid "Dockable"
-msgstr ""
+msgstr "Dokkiført"
#: Pinta/DockLibrary/DockItem.cs:493
msgid "Floating"
-msgstr ""
+msgstr "Flótandi"
#: Pinta/Options.cs:486
msgid "OptionName"
@@ -1107,18 +1127,18 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
msgid "By percentage:"
-msgstr ""
+msgstr "Eftir prosent:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
msgid "By absolute size:"
-msgstr ""
+msgstr "Eftir avgjørdari stødd:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
msgid "Width:"
-msgstr ""
+msgstr "Breidd:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
@@ -1127,42 +1147,50 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
msgid "pixels"
-msgstr ""
+msgstr "skíggjadeplar"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
msgid "Height:"
-msgstr ""
+msgstr "Hædd:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
msgid "Maintain aspect ratio"
-msgstr ""
+msgstr "Halt áskoðanarlutfall"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
msgid "Anchor:"
-msgstr ""
+msgstr "Akker:"
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
msgid "New Image Size "
-msgstr ""
+msgstr "Nýggj myndastødd "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Lag eginleikar"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
-msgstr ""
+msgstr "Navn:"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
msgid "Visible"
-msgstr ""
+msgstr "Sjónligt"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
msgid "Opacity:"
+msgstr "Óskygni:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:450
msgid "_File"
-msgstr ""
+msgstr "_Fíla"
#: Pinta/MainWindow.cs:449
msgid "_Edit"
@@ -1170,7 +1198,7 @@ msgstr ""
#: Pinta/MainWindow.cs:451
msgid "_View"
-msgstr ""
+msgstr "_Vís"
#: Pinta/MainWindow.cs:454
msgid "_Image"
@@ -1178,11 +1206,11 @@ msgstr ""
#: Pinta/MainWindow.cs:455
msgid "_Layers"
-msgstr ""
+msgstr "_Løg"
#: Pinta/MainWindow.cs:456
msgid "_Adjustments"
-msgstr ""
+msgstr "Stilling_ar"
#: Pinta/MainWindow.cs:457
msgid "Effe_cts"
@@ -1190,107 +1218,109 @@ msgstr ""
#: Pinta/MainWindow.cs:459
msgid "_Window"
-msgstr ""
+msgstr "_Vindeygu"
#: Pinta/MainWindow.cs:463
msgid "Tool Windows"
-msgstr ""
+msgstr "Amboðsvindeygu"
#: Pinta/MainWindow.cs:467
msgid "_Help"
-msgstr ""
+msgstr "_Hjálp"
#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
msgid "Tools"
-msgstr ""
+msgstr "Amboð"
#: Pinta/MainWindow.cs:578
msgid "Documents"
-msgstr ""
+msgstr "Skjøl"
#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
msgid "Layers"
-msgstr ""
+msgstr "Løg"
#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
msgid "History"
-msgstr ""
+msgstr "Søga"
#: Pinta/DialogHandlers.cs:99
msgid "Take Screenshot"
-msgstr ""
+msgstr "Tak skíggjamynd"
#: Pinta/DialogHandlers.cs:100
msgid "Delay before taking a screenshot (seconds):"
-msgstr ""
+msgstr "Seinkan áðrenn skíggjamyndstøku (sekund):"
#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+msgstr "Goym broytingar á myndini \"{0}\" áðrenn afturlatan?"
#: Pinta/DialogHandlers.cs:140
msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
+msgstr "Um tú ikki goymir, verða allar broytingar varandi mistar."
#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
-msgstr ""
+msgstr "Afturlatan uttan at goyma"
#: Pinta/DialogHandlers.cs:174
msgid "Resize Palette"
-msgstr ""
+msgstr "Broyta palettstødd"
#: Pinta/DialogHandlers.cs:175
msgid "New palette size:"
-msgstr ""
+msgstr "Nýggj palletstødd:"
#: Pinta/DialogHandlers.cs:301
msgid "Layer Opacity"
-msgstr ""
+msgstr "Óskygni á lagnum"
#: Pinta/DialogHandlers.cs:306
msgid "Rename Layer"
-msgstr ""
+msgstr "Nýnevn lagið"
#: Pinta/DialogHandlers.cs:311
msgid "Hide Layer"
-msgstr ""
+msgstr "Fjal lagið"
#: Pinta/DialogHandlers.cs:311
msgid "Show Layer"
-msgstr ""
+msgstr "Sýn lagið"
#: Pinta/DialogHandlers.cs:404
msgid "Image files"
-msgstr ""
+msgstr "Myndafílur"
#: Pinta/DialogHandlers.cs:461
msgid "Paste cancelled"
-msgstr ""
+msgstr "Klistran ógildað"
#: Pinta/DialogHandlers.cs:462
msgid "The clipboard does not contain an image"
-msgstr ""
+msgstr "Setiborðið inniheldur onga mynd"
#: Pinta/DialogHandlers.cs:495
msgid "Save Image File"
-msgstr ""
+msgstr "Goym myndafílu"
#: Pinta/DialogHandlers.cs:575
msgid "Pinta does not support saving images in this file format."
-msgstr ""
+msgstr "Pinta stuðlar ikki goymslu í hesum fílusniði."
#: Pinta/DialogHandlers.cs:593
#, csharp-format
msgid "A file named \"{0}\" already exists. Do you want to replace it?"
-msgstr ""
+msgstr "Ein fíla nevnd \"{0}\" finst longu. Vil tú seta í staðin fyri hana?"
#: Pinta/DialogHandlers.cs:594
#, csharp-format
msgid ""
"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
+"Fílan finst longi í \"{1}\". Setur tú nakað í staðin, skrivar tú omaná "
+"innihald hennara."
#: Pinta/Main.cs:68
msgid "number of threads to use for rendering"
@@ -1299,71 +1329,75 @@ msgstr ""
#: Pinta/Dialogs/AboutPintaTabPage.cs:41
#: Pinta/Dialogs/VersionInformationTabPage.cs:50
msgid "Version"
-msgstr ""
+msgstr "Útgáva"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "License"
-msgstr ""
+msgstr "Loyvi"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "Released under the MIT X11 License."
-msgstr ""
+msgstr "Útgivi undir MIT X11 loyvinum."
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "Copyright"
-msgstr ""
+msgstr "Upphavsrættur"
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "by Pinta contributors"
-msgstr ""
+msgstr "Pinta stuðlar"
#: Pinta/Dialogs/VersionInformationTabPage.cs:44
msgid "Title"
-msgstr ""
+msgstr "Heiti"
#: Pinta/Dialogs/VersionInformationTabPage.cs:53
msgid "Path"
-msgstr ""
+msgstr "Leið"
#: Pinta/Dialogs/JpegCompressionDialog.cs:38
msgid "JPEG Quality"
-msgstr ""
+msgstr "JPEG góðska"
#: Pinta/Dialogs/JpegCompressionDialog.cs:46
msgid "Quality: "
-msgstr ""
+msgstr "Góðska: "
#: Pinta/Dialogs/AboutDialog.cs:101
msgid "Contributors to this Release"
-msgstr ""
+msgstr "Stuðulsveitarir á hesari útgávu"
#: Pinta/Dialogs/AboutDialog.cs:111
msgid "Previous Contributors"
-msgstr ""
+msgstr "Fyrrverandi stuðlar"
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
+"This is a dummy translation so that the credits are counted as translated.\n"
+"\n"
+"Launchpad Contributions:\n"
+" Gunleif Joensen https://launchpad.net/~gunleif"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
-msgstr ""
+msgstr "Týtt av:"
#: Pinta/Dialogs/AboutDialog.cs:130
msgid "Based on the work of Paint.NET:"
-msgstr ""
+msgstr "Grundað á arbeiði hjá Paint.NET:"
#: Pinta/Dialogs/AboutDialog.cs:137
msgid "Using some icons from:"
-msgstr ""
+msgstr "Nýtandi nakrar ímyndir frá:"
#: Pinta/Dialogs/AboutDialog.cs:249
msgid "About Pinta"
-msgstr ""
+msgstr "Um Pinta"
#: Pinta/Dialogs/AboutDialog.cs:267
msgid "Version Info"
-msgstr ""
+msgstr "Útgávukunning"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1372,7 +1406,7 @@ msgstr ""
#: SharpenData dialog
#: MotionBlurEffect dialog
msgid "Amount"
-msgstr ""
+msgstr "Mongd"
#: RadialBlurEffect dialog
#: JuliaFractalEffect dialog
@@ -1382,7 +1416,7 @@ msgstr ""
#: ReliefData dialog
#: TwistEffect dialog
msgid "Angle"
-msgstr ""
+msgstr "Vinkul"
#: CloudsEffect dialog
msgid "Antialias"
@@ -1398,11 +1432,11 @@ msgstr ""
#: PixelateData dialog
msgid "Brush Size"
-msgstr ""
+msgstr "Penslastødd"
#: PolarInversionEffect dialog
msgid "Cell Size"
-msgstr ""
+msgstr "Puntastødd"
#: MotionBlurEffect dialog
msgid "Center Offset"
@@ -1410,11 +1444,11 @@ msgstr ""
#: OilPaintingEffect dialog
msgid "Centered"
-msgstr ""
+msgstr "Miðstillað"
#: PencilSketchEffect dialog
msgid "Coarseness"
-msgstr ""
+msgstr "Grovleiki"
#: AddNoiseEffect dialog
msgid "Color Range"
@@ -1422,7 +1456,7 @@ msgstr ""
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr ""
+msgstr "Litmettan"
#: GlowEffect dialog
msgid "Coloring"
@@ -1434,25 +1468,25 @@ msgstr ""
#: FragmentEffect dialog
msgid "Coverage"
-msgstr ""
+msgstr "Dekningur"
#: MotionBlurEffect dialog
#: PolarInversionEffect dialog
msgid "Distance"
-msgstr ""
+msgstr "Fjarstøða"
#: JuliaFractalEffect dialog
msgid "Edge Behavior"
-msgstr ""
+msgstr "Kantatburður"
#: MandelbrotFractalEffect dialog
#: FragmentEffect dialog
msgid "Factor"
-msgstr ""
+msgstr "Faktorur"
#: InkSketchEffect dialog
msgid "Fragments"
-msgstr ""
+msgstr "Petti"
#: TileEffect dialog
msgid "Ink Outline"
@@ -1462,7 +1496,7 @@ msgstr ""
#: OutlineEffect dialog
#: MandelbrotFractalEffect dialog
msgid "Intensity"
-msgstr ""
+msgstr "Styrki"
#: RadialBlurEffect dialog
msgid "Lighting"
@@ -1476,7 +1510,7 @@ msgstr ""
#: MedianEffect dialog
msgid "Pencil Tip Size"
-msgstr ""
+msgstr "Stødd á blýantsspíski"
#: CloudsEffect dialog
msgid "Percentile"
@@ -1484,19 +1518,19 @@ msgstr ""
#: RadialBlurEffect dialog
msgid "Power"
-msgstr ""
+msgstr "Styrki"
#: PolarInversionEffect dialog
#: JuliaFractalEffect dialog
#: MandelbrotFractalEffect dialog
#: GaussianBlurEffect dialog
msgid "Quality"
-msgstr ""
+msgstr "Góðska"
#: TileEffect dialog
#: RedEyeRemoveData dialog
msgid "Rotation"
-msgstr ""
+msgstr "Snúningur"
#: CloudsEffect dialog
msgid "Saturation percentage"
@@ -1504,7 +1538,7 @@ msgstr ""
#: CloudsEffect dialog
msgid "Scale"
-msgstr ""
+msgstr "Stigmarka"
#: SoftenPortraitData dialog
msgid "Seed"
@@ -1520,18 +1554,20 @@ msgstr ""
#: TileEffect dialog
msgid "Thickness"
-msgstr ""
+msgstr "Tjúkd"
#: RedEyeRemoveData dialog
msgid "Tile Size"
-msgstr ""
+msgstr "Tigulstødd"
#: JuliaFractalEffect dialog
msgid "Warmth"
msgstr ""
#: RadialBlurEffect dialog
-msgid "Use low quality for previews, small images, and small angles. Use high quality for final quality, large images, and large angles."
+msgid ""
+"Use low quality for previews, small images, and small angles. Use high "
+"quality for final quality, large images, and large angles."
msgstr ""
#: RedEyeRemoveEffect dialog
diff --git a/po/messages-fr.po b/po/messages-fr.po
index 2bb9539..353616d 100644
--- a/po/messages-fr.po
+++ b/po/messages-fr.po
@@ -7,560 +7,747 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-20 00:50+0000\n"
-"Last-Translator: Simon Leblanc <contact at leblanc-simon.eu>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-03 13:02+0000\n"
+"Last-Translator: fred.lavigne <fred.taff at gmail.com>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "À propos"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Fenêtre"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pinceau"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Calque"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Fichier"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "copier"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Édition"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Redimensionner le canevas"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Affichage"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Outil"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Image"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Raccourcis clavier"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Calques"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Composition normale"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Réglages"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Écraser"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Effet_s"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Lissage activé"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Fenêtre"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Lissage desactivé"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Aide"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Redimensionner l'image"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Dernière retouche sur les pixels"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Outils"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Rotation de 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palette"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Retourner l'Image Horizontalement"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documents"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Retourner l'Image Verticalement"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Calques"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Rotation horaire de 90°"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historique"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Rotation anti-horaire de 90°"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Masquer"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Retourner le Calque Horizontalement"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Ancrable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Retourner le Calque Verticalement"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flottant"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Général"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Cacher automatiquement"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "Image {0} ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Dock"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Rogner"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Contributeurs à cette version"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Redimensionner..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Contributeurs précédents"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Taille du canevas..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Kwentin https://launchpad.net/~pages-quentin\n"
-" Marting https://launchpad.net/~marting\n"
-" Nicolas https://launchpad.net/~nicolas-pecqueux\n"
-" Simon Leblanc https://launchpad.net/~contact-leblanc-simon"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Retourner horizontalement"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Traduit par :"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Retourner verticalement"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Basé sur le travail de Paint.NET"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Aplatir"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Utilisation d'icônes provenant de :"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Zoom avant"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "À propos de Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Zoom arrière"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Information de version"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Adapter l'échelle à la fenêtre"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Titre"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Adapter l'échelle à la sélection"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Version"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Taille réelle"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Emplacement"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Barre d'outils"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licence"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Grille des pixels"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Mis à disposition sous licence MIT X11"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Règles"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Droits d’auteur"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pixels"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "par les contributeurs de Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Pouces"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "nombre de threads à utiliser pour le rendu"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimètres"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Redimensionner l'image"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Plein écran"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "En pourcentage :"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Unités rêgle"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "En taille absolue :"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Ajouter un nouveau calque"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Largeur :"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Supprimer le calque"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixels"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Dupliquer le calque"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Hauteur :"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Fusionner avec le calque inférieur"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Conserver les proportions"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importer depuis un fichier..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Rotation / Zoom"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Déplacer le calque vers le haut"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Déplacer le calque vers le bas"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
+msgid "Layer Properties..."
msgstr "Propriétés du calque"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nom :"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Ouvrir un fichier image"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Visible"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importer depuis un fichier"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Opacité :"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Enregistrer tout"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Redimensionner le canevas"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Fermer tout"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Ancre :"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Site Web de Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Rapporter un dysfonctionnement"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Traduire ce logiciel"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "À propos"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nouveau..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nouvelle capture d'écran..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Ouvrir..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Ouvert récemment"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Fermer"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Enregistrer"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Enregistrer sous..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Imprimer"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Quitter"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nouveau"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Ouvrir"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Défaire"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Rétablir"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Couper"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Copier"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Coller"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Coller dans un nouveau calque"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Coller dans une nouvelle image"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Effacer la sélection"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Remplir la sélection"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Inverser la sélection"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Tout sélectionner"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Désélectionner"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Réinitialiser"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Définir le nombre de couleurs"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palette"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Ouvrir Fichier Palette"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Fichiers Palette (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Tous les fichiers"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Impossible d'ouvrir le fichier de palette : {0}.\n"
+"Veuillez vérifier que vous essayez d'ouvrir une palette GIMP ou Paint.NET "
+"valide"
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Erreur"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Enregistrer le fichier de palette"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Palette Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Palette GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Image non enregistrée {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Arrière-plan"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nouvelle image"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Taille de la nouvelle image "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Ouvrir une image"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr ""
-"Souhaitez-vous enregistrer les changements de l'image \"{0}\" avant d'en "
-"créer une nouvelle ?"
+msgid "Could not open file: {0}"
+msgstr "Impossible d'ouvrir le fichier : {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Si vous n'enregistrez pas, toutes les modifications seront perdues."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Effet de rendu"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Continuer sans enregistrer"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Postériser"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Opacité du calque"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Inverser les couleurs"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Renommer le calque"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Niveaux"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Cacher le calque"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Noir & Blanc"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Afficher le calque"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Niveau automatique"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "étiquette1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Teinte / Saturation"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "étiquette"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Luminosité / Contraste"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Bruit aléatoire"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sépia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Courbes"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Carte de transfert"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RVB"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminosité"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Rouge "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Vert"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Bleu "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr "Réinitialiser"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Pipette"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Astuce : clic droit pour supprimer les points de contrôle."
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Clic gauche pour définir la couleur primaire. Clic droit pour définir la "
-"couleur secondaire."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Ajustement des niveaux"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Après la sélection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Histogramme d'entrée"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Ne pas changer d'outil"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Entrée"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Changer pour l'outil précédent"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Sortie"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Changer pour l'outil Crayon"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Histogramme de sortie"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Crayon"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Auto"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Sélection Lasso"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Rouge"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Cliquer et déposer pour définir la zone de selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Bleu"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zoom"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Lié"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Clic gauche pour agrandir. Clique droit pour réduire. Cliquer et déposer "
-"pour agrandir la sélection."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Croquis au crayon"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Largeur de la brosse"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artistique"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Diminuer la taille du pinceau"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Détacher"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Augmenter la taille du pinceau"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Floutage"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Forme extérieure"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Bomber"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Forme de remplissage"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distortion"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Forme de remplissage et extérieure"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fractale de Mandelbrot"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Déplacer les Pixels Sélectionnés"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Effectuer le rendu"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Déplacer la seléction pour bouger le contenu seléctionné."
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Médian"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Déplacement"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Bruit"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Cliquer et déplacer pour naviguer dans l'image."
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pixeliser"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Clic gauche pour dessiner une forme libre,d'une largeur d'un pixel avec la "
-"couleur principale, clic droit pour utiliser la couleur secondaire"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Augmenter la netteté"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Sélection Elliptique"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Photo"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Cliquer et glisser pour faire une sélection elliptique. Maintenez Shift pour "
-"faire un cercle."
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Peinture à l'huile"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Dégradé"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Flou gaussien"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Cliquer et glisser pour dessiner un dégradé de la première à la seconde "
-"couleur. Clic gauche pour inverser."
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Halo"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Dégradé Linéaire"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Adoucir le portrait"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Dégradé Linéaire Réfléchi"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Réfléxion Mosaïque"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Dégradé Linéaire en Diamant"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Suppression des yeux rouges"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Dégradé Radial"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Verre dépoli"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Dégradé Conique"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Détecter les contours"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Mode de Couleur"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Styliser"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Mode de Transparence"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fractale de Julia"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Rectangle aux coins Arrondis"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Flou de mouvement"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Cliquer et glisser pour dessiner un rectangle aux coins arrondis (clic "
-"gacuhe pour la couleur secondaire). Maintenir Shift pour faire un carré."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Gaufrer"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Rayon"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Croquis à l'encre"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Décrémenter le rayon du coin du rectangle"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Flou d'arrière plan"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Incrémenter le rayon du coin du rectangle"
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Transformation Symétrique"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Clic gauche pour dessiner avec une première couleur, clic droit pour une "
-"deuxième couleur."
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Nuages"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Sélection Rectangulaire"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragmentation"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Cliquer et glisser pour faire une sélection rectangulaire. Maintenir la "
-"touche Majuscule pour contraindre la sélection à un carré."
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Réduire le bruit"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Pot de Peinture"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Flou radial"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Clic gauche pour remplir la région avec la couleur principale, clic droit "
-"pour remplir avec la couleur secondaire"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Tordre"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Tampon Duplicateur"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Ajouter du bruit"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Déplacer la Sélection"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relief"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Déplacer la seléction pour bouger les contours de la seléction."
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Sélection des contours"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Forme Libre"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Bruit aléatoire"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Mode de remplissage"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "regénérer"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Continu"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "étiquette1"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "étiquette"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolérance"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Choisir la couleur primaire"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Ellipse"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Choisir la couleur secondaire"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Cliquer et glisser pour dessiner une ellipse (clic droit pour la couleur "
-"secondaire). Maintenez la touche Majuscule pour forcer un cercle."
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Choisir la palette de couleurs"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Déplacement"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Cliquer et déplacer pour naviguer dans l'image."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -574,42 +761,34 @@ msgstr ""
"Clic gauche pour placer le curseur, puis taper le texte désiré. La couleur "
"du texte est la couleur principale."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Police"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
-msgstr "gras"
+msgstr "Gras"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Italique"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Souligné"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Aligné à gauche"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Aligné au centre"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Aligné à droite"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Sélection Baguette Magique"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Cliquer pour sélectionner une région de couleur similaire"
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Rectangle"
@@ -619,661 +798,636 @@ msgid ""
"Click and drag to draw a rectangle (right click for secondary color). Hold "
"shift to constrain to a square."
msgstr ""
-"Cliquer et glisser pour dessiner un rectangle (clic gauche pour la couleur "
+"Cliquer et glisser pour dessiner un rectangle (clic droit pour la couleur "
"secondaire). Maintenir la touche Majuscule pour faire un carré."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Ligne"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Forme Libre"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-"Clic gauche pour dessiner avec une première couleur, clic droit avec une "
-"deuxième couleur."
+"Clic gauche pour dessiner avec la couleur primaire, clic droit pour la "
+"couleur secondaire."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Recolorisation"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Style de remplissage"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
-"Clic gauche pour remplacer la couleur secondaire par la couleur primaire."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Forme extérieure"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Gomme"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Forme de remplissage"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Cliquer et déplacer pour effacer une portion de l'image."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Forme de remplissage et extérieure"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pixeliser"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Mode de remplissage"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distortion"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Contigu"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Suppression des yeux rouges"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Photo"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolérance"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Flou de mouvement"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Ligne"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Flous"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Clic gauche pour dessiner avec la couleur primaire, clic droit pour la "
+"couleur secondaire."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Croquis à l'encre"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Déplacer la Sélection"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artistique"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Déplacer la sélection pour bouger son contour."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Flou radial"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Sélection Rectangulaire"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Détacher"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Cliquer et glisser pour faire une sélection rectangulaire. Maintenir la "
+"touche Majuscule pour contraindre la sélection à un carré."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Détection des contours"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Sélection Baguette Magique"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Style"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Cliquer pour sélectionner une région de couleur similaire"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Verre poli"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Sélection Elliptique"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Peinture à l'huile"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Cliquer et glisser pour faire une sélection elliptique. Maintenir Majuscule "
+"pour faire un cercle."
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Flou d'arrière plan"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Sélection Lasso"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Transformation Symétrique"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Cliquer et tirer pour tracer le contour d'une zone de selection."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Nuages"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Pot de Peinture"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Effectuer le rendu"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Clic gauche pour remplir la région avec la couleur principale, clic droit "
+"pour remplir avec la couleur secondaire"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Halo"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Dégradé"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Ajouter du bruit"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Cliquer et glisser pour dessiner un dégradé de la couleur primaire vers la "
+"couleur secondaire. Clic droit pour l'inverser."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Bruit"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Dégradé Linéaire"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Kaléidoscope"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Dégradé Linéaire Réfléchi"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Augmenter la netteté"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Dégradé Linéaire en Diamant"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Croquis au crayon"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Dégradé Radial"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Sélection des contours"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Dégradé Conique"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Flou gaussien"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Mode"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Réfléxion Mosaïque"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Mode de Couleur"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relief"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Mode de Transparence"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Gaufrer"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Largeur de la brosse"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fractale de Mandelbrot"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Diminuer la taille du pinceau"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Bomber"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Augmenter la taille du pinceau"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Tordre"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pinceau"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Adoucir le portrait"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Type"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Réduire le bruit"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Recolorisation"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fractale de Julia"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
+"Clic gauche pour remplacer la couleur secondaire par la couleur primaire."
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Médian"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normal"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Courbes"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Cercles"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Niveaux"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Carrés"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Niveau automatique"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Éclaboussure"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Inverser les couleurs"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Grille"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Postériser"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Ellipse"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Noir & Blanc"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Cliquer et glisser pour dessiner une ellipse (clic droit pour la couleur "
+"secondaire). Maintenez la touche Majuscule pour forcer un cercle."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Teinte / Saturation"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Tampon Duplicateur"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sépia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Cliquez sur Ctrl-gauche pour définir l'origine, clic gauche pour peindre."
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Luminosité / Contraste"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zoom"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Ajustement des niveaux"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Clic gauche pour agrandir. Clic droit pour réduire. Cliquer et déposer pour "
+"agrandir la sélection."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Histogramme d'entrée"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Rectangle aux coins Arrondis"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Entrée"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Cliquer et glisser pour dessiner un rectangle aux coins arrondis (clic droit "
+"pour la couleur secondaire). Maintenir la touche Majuscule enfoncée pour "
+"forcer un carré."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Sortie"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Rayon"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Histogramme de sortie"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Réduire le rayon du coin du rectangle"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Auto"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Augmenter le rayon du coin du rectangle"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Réinitialiser"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Pipette"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Rouge"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Clic gauche pour définir la couleur primaire. Clic droit pour définir la "
+"couleur secondaire."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Vert"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Après la sélection"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Bleu"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Ne pas changer d'outil"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Lié"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Changer pour l'outil précédent"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Carte de transfert"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Changer pour l'outil Crayon"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RVB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Crayon"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminosité"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Gomme"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Cliquer et déplacer pour effacer une portion de l'image."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Rouge "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Clic gauche pour dessiner une forme libre d'une largeur d'un pixel avec la "
+"couleur principale. Clic droit pour utiliser la couleur secondaire."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Bleu "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Déplacer les Pixels Sélectionnés"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Astuce : clic droit pour supprimer les points de contrôle."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Déplacer la seléction pour bouger le contenu seléctionné."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Ajouter un nouveau calque"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Masquer"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Supprimer le calque"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Dock"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Dupliquer le calque"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Cacher automatiquement"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Fusionner avec le calque inférieur"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Ancrable"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importer depuis un fichier..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flottant"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Retourner horizontalement"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "Nom de l'option"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Retourner verticalement"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "En pourcentage :"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Rotation / Zoom"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "En taille absolue :"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Déplacer le calque vers le haut"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Largeur :"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Déplacer le calque vers le bas"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixels"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Ouvrir un fichier image"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Hauteur :"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importer depuis un fichier"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Conserver les proportions"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nouveau..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Ancre :"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Ouvrir..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Taille de la nouvelle image "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Ouvert récemment"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Propriétés du calque"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Fermer"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nom :"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Enregistrer"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Visible"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Enregistrer sous..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacité :"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Imprimer"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Quitter"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Fichier"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nouveau"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Édition"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Ouvrir"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Affichage"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Arrière-plan"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Image"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Ouvrir une image"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Calques"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Impossible d'ouvrir le fichier : {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Réglages"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Erreur"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Effet_s"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr ""
-"Enregistrer les changements de l'image \"{0}\" avant d'en ouvrir une "
-"nouvelle ?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Fenêtre"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Fichiers image"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Boites à outils"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Tous les fichiers"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Aide"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Enregistrer le fichier image"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Outils"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "Image {0} ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documents"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Calques"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historique"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Image OpenRaster (*.ora)"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Prendre une capture d'écran"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Délai avant de prendre une capture d'écran (en secondes):"
+
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Enregistrer les changements de l'image \"{0}\" avant de fermer ?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Si vous n'enregistrez pas, toutes les modifications seront perdues."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Fermer sans enregistrer"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Rogner"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Redimensionner..."
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Taille du canevas..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Rotation horaire de 90°"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Rotation anti-horaire de 90°"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Rotation de 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Aplatir"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Défaire"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Rétablir"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Couper"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Copier"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Coller"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Coller dans un nouveau calque"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Coller dans une nouvelle image"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Redimensionner Palette"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Effacer la sélection"
-
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Remplir la sélection"
-
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Inverser la sélection"
-
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Tout sélectionner"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nouvelle taille de la palette :"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Désélectionner"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Opacité du calque"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Zoom avant"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Renommer le calque"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Zoom arrière"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Cacher le calque"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Adapter l'échelle à la fenêtre"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Afficher le calque"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Adapter l'échelle à la sélection"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Fichiers image"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Taille réelle"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Coller annulé"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Grille des pixels"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Le presse-papiers ne contient pas d'image"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Règles"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Enregistrer le fichier image"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pixels"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
+"Pinta ne prend pas en charge l'enregistrement des images dans ce format de "
+"fichier."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Pouces"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Un fichier nommé \"{0}\" existe déjà. Souhaitez vous le remplacer ?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimètres"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"Le fichier existe déjà dans \"{1}\". Le remplacer écrasera son contenu "
+"actuel."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Plein écran"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "nombre de threads à utiliser pour le rendu"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Fenêtre"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Version"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Site Web de Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licence"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Rapporter un bug"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Mis à disposition sous licence MIT X11"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Traduire ce logiciel"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Droits d’auteur"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Général"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "par les contributeurs de Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Outil"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Titre"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Raccourcis clavier"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Emplacement"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Anticrénelage"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Qualité JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Mélange normal / Mélange recouvrant"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Qualité: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Retourner l'Image Horizontalement"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Contributeurs à cette version"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Retourner l'Image Verticalement"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Contributeurs précédents"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Retourner le Calque Horizontalement"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Ersplus https://launchpad.net/~ersplus-free\n"
+" Jean-François Huck https://launchpad.net/~huckjf-aquitania\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Kwentin https://launchpad.net/~pages-quentin\n"
+" Marting https://launchpad.net/~marting\n"
+" Nicolas https://launchpad.net/~nicolas-pecqueux\n"
+" Simon Leblanc https://launchpad.net/~contact-leblanc-simon\n"
+" dufoli https://launchpad.net/~olivier-duff\n"
+" fred.lavigne https://launchpad.net/~fred-taff"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Retourner le Calque Verticalement"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Traduit par :"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Dernière retouche sur les pixels"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Basé sur le travail de Paint.NET :"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Effet de rendu"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Utilisation d'icônes provenant de :"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "copier"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "À propos de Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Calque"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Information de version"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1312,7 +1466,7 @@ msgstr "Taille du pinceau"
#: PolarInversionEffect dialog
msgid "Cell Size"
-msgstr "Taille d'une Cellule"
+msgstr "Taille de cellule"
#: MotionBlurEffect dialog
msgid "Center Offset"
@@ -1353,7 +1507,7 @@ msgstr "Distance"
#: JuliaFractalEffect dialog
msgid "Edge Behavior"
-msgstr "Comportement sur les bords"
+msgstr "Comportement du bord"
#: MandelbrotFractalEffect dialog
#: FragmentEffect dialog
@@ -1376,7 +1530,7 @@ msgstr "Intensité"
#: RadialBlurEffect dialog
msgid "Lighting"
-msgstr "Luminosité"
+msgstr "Éclairage"
#: ZoomBlurEffect dialog
#: BulgeEffect dialog
@@ -1458,6 +1612,9 @@ msgstr ""
#~ msgid "File"
#~ msgstr "Fichier"
+#~ msgid "Continue without saving"
+#~ msgstr "Continuer sans enregistrer"
+
#~ msgid "RGB\n"
#~ msgstr "RVB\n"
@@ -1665,6 +1822,9 @@ msgstr ""
#~ msgid "Alphablending"
#~ msgstr "Alphablending"
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Mélange normal / Mélange recouvrant"
+
#~ msgid "Opacity"
#~ msgstr "Opacité"
@@ -1716,8 +1876,47 @@ msgstr ""
#~ msgid "EdgeBehavior"
#~ msgstr "Comportement aux Limites"
+#~ msgid "RGB\r"
+#~ msgstr "RVB\r"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Image OpenRaster (*.ora)"
+
+#~ msgid "Edit"
+#~ msgstr "Édition"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Anticrénelage"
+
+#~ msgid "Adjustments"
+#~ msgstr "Réglages"
+
+#~ msgid "View"
+#~ msgstr "Affichage"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr ""
+#~ "Souhaitez-vous enregistrer les changements de l'image \"{0}\" avant d'en "
+#~ "créer une nouvelle ?"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr ""
+#~ "Enregistrer les changements de l'image \"{0}\" avant d'en ouvrir une "
+#~ "nouvelle ?"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Astuce : Clic-droit pour retirer les points de contrôle."
+#~ msgid "Fill mode"
+#~ msgstr "Mode de remplissage"
+
#~ msgid "Show Pad"
#~ msgstr "Afficher la fenêtre"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-ga.po b/po/messages-ga.po
index 916ed18..ad96ab9 100644
--- a/po/messages-ga.po
+++ b/po/messages-ga.po
@@ -7,670 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:04+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-27 02:28+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Irish <ga at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
msgstr ""
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "scuab phéinte"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
msgstr ""
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
msgstr ""
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Feach"
-
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Íomhá"
-
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Fuinneóg"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Cabhair"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
msgstr ""
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Doiciméid"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
msgstr ""
-#: Pinta/MainWindow.cs:398
-msgid "History"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Cuir i nDuga"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Shane Halloran https://launchpad.net/~shane.halloran"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Aistrithe ag:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Leagan"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Ceadúnas"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Cóipcheart"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Leitheid:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Airde:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Ainm:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -678,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -704,541 +680,710 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr ""
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "scuab phéinte"
+
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Cuir i nDuga"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Leitheid:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Airde:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Ainm:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Feach"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Íomhá"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Fuinneóg"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Cabhair"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Doiciméid"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr ""
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Leagan"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Ceadúnas"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr ""
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Cóipcheart"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr ""
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr ""
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr ""
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Shane Halloran https://launchpad.net/~shane.halloran"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Aistrithe ag:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
msgstr ""
#: BulgeEffect dialog
diff --git a/po/messages-gl.po b/po/messages-gl.po
index 630206c..5ddb8d8 100644
--- a/po/messages-gl.po
+++ b/po/messages-gl.po
@@ -7,669 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-21 22:19+0000\n"
-"Last-Translator: xanocebreiro <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-11-03 18:37+0000\n"
+"Last-Translator: Manuel Xosé Lemos <Unknown>\n"
"Language-Team: Galician <gl at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Acerca de"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pincel de pintura"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Ficheiro"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Editar"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Xanela"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Ver"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Capa"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Imaxe"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "copiar"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Capas"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Axustes"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Ferramenta"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efe_ctos"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Atallo de teclado"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Ventá"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Axuda"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Sobreescribir"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Ferramentas"
-
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documentos"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Mudar o tamaño da imaxe"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Capas"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historial"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Rotar 180º"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ocultar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Voltear imaxe horizontalmente"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Ancorable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Voltear imaxe verticalmente"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flotante"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Rotar 90º á dereita"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Agochar automaticamente"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Rotar 90º á esquerda"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Panel"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Voltear capa horizontalmente"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Contribuíron nesta versión"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Voltear capa verticalmente"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Contribuíntes anteriores"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Xeral"
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-"Launchpad Contributions:\n"
-" xanocebreiro https://launchpad.net/~xanocebreiro"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Traducido por:"
-
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Con base no traballo de Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Recortar pola selección"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Usando algunhas iconas:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Sobre Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Tamaño do lenzo..."
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Información sobre a versión"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Voltear horizontalmente"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Título"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Voltear verticalmente"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versión"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Camiño"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licenza"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Liberado baixo a licenza MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "polos contribuíntes de Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "número de segmentos para procesar"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Mudar o tamaño da imaxe"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "En porcentaxe:"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Acerca de"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -677,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -703,542 +680,712 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr ""
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pincel de pintura"
+
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ocultar"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Panel"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Agochar automaticamente"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Ancorable"
+
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flotante"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "En porcentaxe:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Ficheiro"
+
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Editar"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Ver"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Imaxe"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Capas"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Axustes"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efe_ctos"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Ventá"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Axuda"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Ferramentas"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documentos"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Capas"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historial"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "número de segmentos para procesar"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versión"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licenza"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Liberado baixo a licenza MIT X11."
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "polos contribuíntes de Pinta"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Título"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Camiño"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Contribuíron nesta versión"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Contribuíntes anteriores"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Manuel Xosé Lemos https://launchpad.net/~mxlemos\n"
+" xanocebreiro https://launchpad.net/~xanocebreiro"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Traducido por:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Con base no traballo de Paint.NET:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Usando algunhas iconas:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Sobre Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Información sobre a versión"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1414,3 +1561,6 @@ msgstr ""
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+
+#~ msgid "Show Pad"
+#~ msgstr "Amosar bloque"
diff --git a/po/messages-he.po b/po/messages-he.po
index d0567a9..91ef054 100644
--- a/po/messages-he.po
+++ b/po/messages-he.po
@@ -7,547 +7,746 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:07+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-07 09:03+0000\n"
"Last-Translator: Yaron <sh.yaron at gmail.com>\n"
"Language-Team: Hebrew <he at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "על אודות"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "חלון"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "מברשת"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "שכבה"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_קובץ"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "עותק"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "ע_ריכה"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "שינוי גודל משטח הציור"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "ת_צוגה"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "כלי"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "ת_מונה"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "מקשי קיצור"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "שכ_בות"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "ערבול רגיל"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "הת_אמות"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "דריסה"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_אפקטים"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "החלקה פעילה"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_חלון"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "החלקה כבויה"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "ע_זרה"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "שינוי גודל התמונה"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "גימור הפיקסלים"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "כלים"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "היפוך ב־180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "לוח צבעים"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "היפוך התמונה אופקית"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "מסמכים"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "היפוך התמונה אנכית"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "שכבות"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "היפוך ב־90° עם כיוון השעון"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "היסטוריה"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "היפוך ב־90° נגד כיוון השעון"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "הסתרה"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "היפוך השכבה אופקית"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "ניתן לעגינה"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "היפוך השכבה אנכית"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "צף"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "כללי"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "הסתרה אוטומטית"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} תמונה ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "עגינה"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "חיתוך לבחירה"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "תורמים להפצה זו"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "שינוי גודל..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "תורמי עבר"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "גודל משטח הציור..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Yaron https://launchpad.net/~sh-yaron"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "היפוך אופקי"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "תורגם על ידי:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "היפוך אנכי"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "מבוסס על העבודה של Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "השטחה"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "נעשה שימוש בכמה סמלים מ־:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "התקרבות"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "על אודות Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "התרחקות"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "נתוני הגרסה"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "תקריב על גודל החלון"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "כותרת"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "תקריב על הבחירה"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "גרסה"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "גודל ממשי"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "נתיב"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "סרגל כלים"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "רישיון"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "רשת פיקסלים"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "שוחרר תחת תנאי הרישיון MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "סרגלים"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "כל הזכויות שמורות"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "פיקסלים"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "לתורמי Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "אינטשים"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "מספר הפתילים לשימוש בטרם העיבוד"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "סנטימטרים"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "שינוי גודל התמונה"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "מסך מלא"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "באחוזים:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "יחידות הסרגל"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "בגודל מוחלט:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "הוספת שכבה חדשה"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "רוחב:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "מחיקת שכבה"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "פיקסלים"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "שכפול שכבה"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "גובה:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "מיזוג השכבה כלפי מטה"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "שמירה על יחס גובה־רוחב"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "ייבוא מקובץ..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "הטייה / התקרבות"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "הגבהת השכבה"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "הנמכת השכבה"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "מאפייני השכבה"
+msgid "Layer Properties..."
+msgstr "מאפייני השכבה..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "שם:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "פתיחת קובץ תמונה"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "גלוי"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "ייבוא מקובץ"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "אטימות:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "שמירת הכול"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "שינוי גודל משטח הציור"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "סגירת הכול"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "עוגן:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "אתר הבית של Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "דיווח על באג"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "תרגום יישום זה"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "על אודות"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "חדשה..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "צילום מסך חדש..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "פתיחה..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "נפתחו לאחרונה"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "סגירה"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "שמירה"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "שמירה בשם..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "הדפסה"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "יציאה"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "חדשה"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "פתיחה"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "ביטול"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "ביצוע חוזר"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "גזירה"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "העתקה"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "הדבקה"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "הדבקה לשכבה חדשה"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "הדבקה לתמונה חדשה"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "מחיקת הבחירה"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "מילוי הבחירה"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "היפוך הבחירה"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "בחירת הכול"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "ביטול בחירה"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "איפוס לבררת המחדל"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "הגדרת מספר הצבעים"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "לוח צבעים"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "פתיחת קובץ ערכת צבעים"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "קובצי ערכת צבעים (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "כל הקבצים"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"לא ניתן לפתוח את קובץ ערכת הצבעים: {0}.\n"
+"נא לוודא שהקובץ המיועד לפתיחה הוא ערכת צבעים תקנית של GIMP או Paint.NET."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "שגיאה"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "שמירת קובץ ערכת הצבעים"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "ערכת צבעים של Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "ערכת צבעים של GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "תמונה שלא נשמרה {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "רקע"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "תמונה חדשה"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "גודל התמונה החדשה "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "פתיחת תמונה"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "האם לשמור את השינויים לתמונה \"{0}\" בטרם יצירת אחת חדשה?"
+msgid "Could not open file: {0}"
+msgstr "לא ניתן לפתוח את הקובץ: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "אם השינויים לא ישמרו הם יאבדו לעד."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "אפקט עיבוד"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "להמשיך מבלי לשמור"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "הפחתת כמות הצבעים"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "אטימות השכבה"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "היפוך צבעים"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "שינוי שם השכבה"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "רמות"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "הסתרת השכבה"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "שחור ולבן"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "הצגת השכבה"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "רמות אוטומטיות"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "תווית1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "גוון / רוויה"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "תווית"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "בהירות / ניגודיות"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "רעש אקראי"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "ענתיקה"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "מיקום מחדש"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "עקומות"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "מלקט הצבעים"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "מרחב צבעים להמרה"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"לחיצה בלחצן השמאלי כדי לבחור צבע עיקרי. בימיני כדי להגדיר את הצבע המשני."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "לאחר הבחירה"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "עצמת התאורה"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "לא להחליף כלי"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "חזרה לכלי הקודם"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "אדום "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "מעבר לכלי העיפרון"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "ירוק"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "עיפרון"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "כחול "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "בחירת פלצור"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "איפוס"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "יש ללחוץ ולגרור כדי לצייר קו מתאר לאזור הבחירה."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "עצה: לחצן ימני כדי להסיר נקודות בקרה."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "תקריב"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "התאמת הרמות"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"לחיצה שמאלית להתקרבות. לחצן ימני להתרחקות. לחיצה וגרירה כדי להתקרב לבחירה."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "היסטוגרמת הקלט"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "עובי המברשת"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "קלט"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "הקטנת גודל המברשת"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "פלט"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "הגדלת גודל המברשת"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "היסטוגרמת הפלט"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "קו המתאר של הצורה"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "אוטומטי"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "מילוי הצורה"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "אדום"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "מילוי וקו המתאר של הצורה"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "כחול"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "הזזת הפיקסלים הנבחרים"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "מקושר"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "יש לגרור את הבחירה כדי להזיז את התוכן הנבחר."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "סקיצה בעפרון"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "ניווט"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "אמנותי"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "יש ללחוץ ולגרור כדי לנווט ברחבי התמונה."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "יציאה ממיקוד"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"לחיצה שמאלית כדי לצייר ביד חופשית, שורות ברוחב פיקסל אחד בצבע העיקרי, לחצן "
-"ימני כדי להשתמש בצבע המשני."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "טשטושים"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "בחירת אליפסה"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "בליטה"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"יש ללחוץ ולגרור כדי לצייר בחירה אליפטית. יש להחזיק shift כדי לקבע את העיגול."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "עיוות"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "מדרג"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "פרקטל מנדלברוט"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"יש ללחוץ ולגרור כדי לצייר מדרג מהצבע העיקרי לצבע המשני. לחיצה ימנית להיפוך."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "עיבוד"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "מדרג קווי"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "חציוני"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "מדרג קווי משתקף"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "רעש"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "מדרג קווי בצורת מעוין"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "טשטוש לפיקסלים"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "מדרג מעגלי"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "חידוד"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "מדרג חרוטי"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "צילום"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "מצב צבע"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "ציור שמן"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "מצב שקיפות"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "טשטוש גאוסי"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "מלבן מעוגל"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "זריחה"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"יש ללחוץ ולגרור כדי לצייר ריבוע מעוגל (לחיצה ימנית לצבע משני). יש להחזיק "
-"shift כדי לקבע יחס."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "ריכוך דיוקן"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "רדיוס"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "השתקפות אריחית"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "הקטנת רדיוס הפינה של המרובע"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "הסרת עיניים אדומות"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "הגדלת רדיוס הפינה של המרובע"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "זכוכית קפואה"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr "לחיצה שמאלית כדי לצייר בצבע הראשי, לחיצה ימנית כדי לצייר בצבע המשני."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "איתור קצוות"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "בחירה ריבועית"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "מסוגנן"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"יש ללחוץ ולגרור גדי לצייר בחירה ריבועית. יש להחזיק shift כדי לקבע את יחס "
-"הריבוע."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "פרקטל יוליה"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "דלי צבע"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "טשטוש בתנועה"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"לחיצה שמאלית כדי למלא אזור בצבע העיקרי, לחיצה ימנית כדי למלא בצבע המשני."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "תבליט"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "חותמת העתקים"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "סקיצת דיו"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "הזזת האזור נבחר"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "טשטוש מרחק"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "יש לגרור את הבחירה כדי להזיז את קווי המתאר של הבחירה."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "היפוך קוטבי"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "צורה ביד חופשית"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "עננים"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "מצב מילוי"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "שבר"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "המשכי"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "הפחתת רעש"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "גלובלי"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "טשטוש מעגלי"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "טולרנטיות"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "סיבוב"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "אליפסה"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "הוספת רעש"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"יש ללחוץ ולגרור כדי לצייר אליפסה (לחצן ימני לצבע המשני). יש להחזיק shift כדי "
-"לקבע יחס לעיגול."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "איזון גבהים"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "קו מתאר"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "רעש אקראי"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "מיקום מחדש"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "תווית1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "תווית"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "בחירת צבע עיקרי"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "בחירת צבע משני"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "בחירת ערכת צבעים"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "ניווט"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "יש ללחוץ ולגרור כדי לנווט ברחבי התמונה."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -561,42 +760,34 @@ msgstr ""
"לחיצה שמאלית כדי להציב את הסמן, ואז להקליד את הטקסט הרצוי. צבע הטקסט הוא "
"הצבע העיקרי."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "גופן"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "מודגש"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "נטוי"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "קו תחתי"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "יישור לשמאל"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "יישור למרכז"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "יישור לימין"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "בחירה עם שרביט קסם"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "יש ללחוץ כדי לבחור אזור בעל אותו הצבע."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "מלבן"
@@ -609,653 +800,609 @@ msgstr ""
"יש ללחוץ ולגרור כדי לצייר מלבן (לחיצה ימנית לצבע משני). יש להחזיק shift כדי "
"לקבע יחס לריבוע."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "קו"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "צורה ביד חופשית"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "לחיצה שמאלית כדי לצייר עם הצבע העיקרי, ימנית עם הצבע המשני."
-
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "החלפת צבעים"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "לחיצה שמאלית כדי להחליף את המשני בעיקרי."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "מוחק"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "יש ללחוץ ולגרור כדי למחוק חלק מהתמונה."
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "טשטוש לפיקסלים"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "עיוות"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "הסרת עיניים אדומות"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "צילום"
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr "לחיצה שמאלית כדי לצייר בצבע הראשי, לחיצה ימנית כדי לצייר בצבע המשני."
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "טשטוש בתנועה"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "סגנון המילוי"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "טשטושים"
-
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "סקיצת דיו"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "קו המתאר של הצורה"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "אמנותי"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "מילוי הצורה"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "טשטוש מעגלי"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "מילוי וקו המתאר של הצורה"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "יציאה ממיקוד"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "מצב הצפה"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "איתור קצוות"
-
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "מסוגנן"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "המשכי"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "זכוכית קפואה"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "גלובלי"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "ציור שמן"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "טולרנטיות"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "טשטוש מרחק"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "קו"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "היפוך קוטבי"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "לחיצה שמאלית כדי לצייר עם הצבע העיקרי, ימנית עם הצבע המשני."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "עננים"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "הזזת האזור נבחר"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "עיבוד"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "יש לגרור את הבחירה כדי להזיז את קווי המתאר של הבחירה."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "זריחה"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "בחירה ריבועית"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "הוספת רעש"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"יש ללחוץ ולגרור גדי לצייר בחירה ריבועית. יש להחזיק shift כדי לקבע את יחס "
+"הריבוע."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "רעש"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "בחירה עם שרביט קסם"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "שבר"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "יש ללחוץ כדי לבחור אזור בעל אותו הצבע."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "חידוד"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "בחירת אליפסה"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "סקיצה בעפרון"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"יש ללחוץ ולגרור כדי לצייר בחירה אליפטית. יש להחזיק shift כדי לקבע את העיגול."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "קו מתאר"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "בחירת פלצור"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "טשטוש גאוסי"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "יש ללחוץ ולגרור כדי לצייר קו מתאר לאזור הבחירה."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "השתקפות אריחית"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "דלי צבע"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "איזון גבהים"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"לחיצה שמאלית כדי למלא אזור בצבע העיקרי, לחיצה ימנית כדי למלא בצבע המשני."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "תבליט"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "מדרג"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "פרקטל מנדלברוט"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"יש ללחוץ ולגרור כדי לצייר מדרג מהצבע העיקרי לצבע המשני. לחיצה ימנית להיפוך."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "בליטה"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "מדרג קווי"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "סיבוב"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "מדרג קווי משתקף"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "ריכוך דיוקן"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "מדרג קווי בצורת מעוין"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "הפחתת רעש"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "מדרג מעגלי"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "פרקטל יוליה"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "מדרג חרוטי"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "חציוני"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "מצב"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "עקומות"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "מצב צבע"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "רמות"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "מצב שקיפות"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "רמות אוטומטיות"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "עובי המברשת"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "היפוך צבעים"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "הקטנת גודל המברשת"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "הפחתת כמות הצבעים"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "הגדלת גודל המברשת"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "שחור ולבן"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "מברשת"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "גוון / רוויה"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "סוג"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "ענתיקה"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "החלפת צבעים"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "בהירות / ניגודיות"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "לחיצה שמאלית כדי להחליף את המשני בעיקרי."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "התאמת הרמות"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "רגיל"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "היסטוגרמת הקלט"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "עיגולים"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "קלט"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "מרובעים"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "פלט"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "פיזור"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "היסטוגרמת הפלט"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "רשת"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "אוטומטי"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "אליפסה"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "איפוס"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"יש ללחוץ ולגרור כדי לצייר אליפסה (לחצן ימני לצבע המשני). יש להחזיק shift כדי "
+"לקבע יחס לעיגול."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "אדום"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "חותמת העתקים"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "ירוק"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "Ctrl+לחצן שמאלי כדי להגדיר את המקור, לחצן שמאלי לציור."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "כחול"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "תקריב"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "מקושר"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"לחיצה שמאלית להתקרבות. לחצן ימני להתרחקות. לחיצה וגרירה כדי להתקרב לבחירה."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "מרחב צבעים להמרה"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "מלבן מעוגל"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"יש ללחוץ ולגרור כדי לצייר ריבוע מעוגל (לחיצה ימנית לצבע משני). יש להחזיק "
+"shift כדי לקבע יחס."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "עצמת התאורה"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "רדיוס"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "הקטנת רדיוס הפינה של המרובע"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "אדום "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "הגדלת רדיוס הפינה של המרובע"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "כחול "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "מלקט הצבעים"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"לחיצה בלחצן השמאלי כדי לבחור צבע עיקרי. בימיני כדי להגדיר את הצבע המשני."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "הוספת שכבה חדשה"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "מחיקת שכבה"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "שכפול שכבה"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "לאחר הבחירה"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "מיזוג השכבה כלפי מטה"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "לא להחליף כלי"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "ייבוא מקובץ..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "חזרה לכלי הקודם"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "היפוך אופקי"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "מעבר לכלי העיפרון"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "היפוך אנכי"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "עיפרון"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "הטייה / התקרבות"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "מוחק"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "הגבהת השכבה"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "יש ללחוץ ולגרור כדי למחוק חלק מהתמונה."
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "הנמכת השכבה"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"לחיצה שמאלית כדי לצייר ביד חופשית, שורות ברוחב פיקסל אחד בצבע העיקרי, לחצן "
+"ימני כדי להשתמש בצבע המשני."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "פתיחת קובץ תמונה"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "הזזת הפיקסלים הנבחרים"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "ייבוא מקובץ"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "יש לגרור את הבחירה כדי להזיז את התוכן הנבחר."
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "חדשה..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "הסתרה"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "פתיחה..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "עגינה"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "נפתחו לאחרונה"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "הסתרה אוטומטית"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "סגירה"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "ניתן לעגינה"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "שמירה"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "צף"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "שמירה בשם..."
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "שם האפשרות"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "הדפסה"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "באחוזים:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "יציאה"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "בגודל מוחלט:"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "חדשה"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "רוחב:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "פתיחה"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "פיקסלים"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "רקע"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "גובה:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "פתיחת תמונה"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "שמירה על יחס גובה־רוחב"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "לא ניתן לפתוח את הקובץ: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "עוגן:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "שגיאה"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "גודל התמונה החדשה "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "האם לשמור את השינויים לתמונה \"{0}\" בטרם פתיחת תמונה חדשה?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "מאפייני השכבה"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "קובצי תמונה"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "שם:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "כל הקבצים"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "גלוי"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "שמירת קובץ תמונה"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "אטימות:"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} תמונה ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "תמונת OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_קובץ"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "האם לשמור את השינויים לתמונה \"{0}\" בטרם היציאה?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "ע_ריכה"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "סגירה ללא שמירה"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "ת_צוגה"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "חיתוך לבחירה"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "ת_מונה"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "שינוי גודל..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "שכ_בות"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "גודל משטח הציור..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "הת_אמות"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "היפוך ב־90° עם כיוון השעון"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_אפקטים"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "היפוך ב־90° נגד כיוון השעון"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_חלון"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "היפוך ב־180°"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "חלונות כלים"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "השטחה"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "ע_זרה"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "ביטול"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "כלים"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "ביצוע חוזר"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "מסמכים"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "גזירה"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "שכבות"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "העתקה"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "היסטוריה"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "הדבקה"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "צילום המסך"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "הדבקה לשכבה חדשה"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "ההשהיה שלפני צילום המסך (בשניות):"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "הדבקה לתמונה חדשה"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "האם לשמור את השינויים לתמונה \"{0}\" בטרם היציאה?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "מחיקת הבחירה"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "אם השינויים לא ישמרו הם יאבדו לעד."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "מילוי הבחירה"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "סגירה ללא שמירה"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "היפוך הבחירה"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "שינוי גודל ערכת הצבעים"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "בחירת הכול"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "גודל ערכת הצבעים החדשה:"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "ביטול בחירה"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "אטימות השכבה"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "התקרבות"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "שינוי שם השכבה"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "התרחקות"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "הסתרת השכבה"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "תקריב על גודל החלון"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "הצגת השכבה"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "תקריב על הבחירה"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "קובצי תמונה"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "גודל ממשי"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "ההדבקה נכשלה"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "רשת פיקסלים"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "לוח הגזירים אינו מכיל תמונה"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "סרגלים"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "שמירת קובץ תמונה"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "פיקסלים"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "ל־Pinta אין תמיכה בשמירת תמונות במבנה קובץ זה."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "אינטשים"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "קובץ בשם \"{0}\" כבר קיים. האם ברצונך להחליף אותו?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "סנטימטרים"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "הקובץ כבר קיים תחת \"{1}\". החלפתו תשכתב על תוכנו."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "מסך מלא"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "מספר הפתילים לשימוש בטרם העיבוד"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "חלון"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "גרסה"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "אתר הבית של Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "רישיון"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "דיווח על באג"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "שוחרר תחת תנאי הרישיון MIT X11."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "תרגום יישום זה"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "כל הזכויות שמורות"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "כללי"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "לתורמי Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "כלי"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "כותרת"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "מקשי קיצור"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "נתיב"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "החלקה"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "איכות ה־JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "ערבול רגיל / שכתוב על הערבול"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "איכות: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "היפוך התמונה אופקית"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "תורמים להפצה זו"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "היפוך התמונה אנכית"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "תורמי עבר"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "היפוך השכבה אופקית"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Yaron https://launchpad.net/~sh-yaron"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "היפוך השכבה אנכית"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "תורגם על ידי:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "גימור הפיקסלים"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "מבוסס על העבודה של Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "אפקט עיבוד"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "נעשה שימוש בכמה סמלים מ־:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "עותק"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "על אודות Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "שכבה"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "נתוני הגרסה"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1436,17 +1583,70 @@ msgstr ""
"עצה: לקבלת התוצאות המיטביות כדאי תחילה לסמן כל אחת מהעיניים באמצעות כלי "
"הבחירה."
+#~ msgid "Help"
+#~ msgstr "עזרה"
+
+#~ msgid "Adjustments"
+#~ msgstr "התאמות"
+
+#~ msgid "Effects"
+#~ msgstr "אפקטים"
+
+#~ msgid "File"
+#~ msgstr "קובץ"
+
+#~ msgid "Edit"
+#~ msgstr "עריכה"
+
+#~ msgid "View"
+#~ msgstr "תצוגה"
+
+#~ msgid "Image"
+#~ msgstr "תמונה"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "להמשיך מבלי לשמור"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "האם לשמור את השינויים לתמונה \"{0}\" בטרם יצירת אחת חדשה?"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "עצה: לחיצה עם המקש הימני מסירה את נקודות הבקרה."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "האם לשמור את השינויים לתמונה \"{0}\" בטרם פתיחת תמונה חדשה?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "תמונת OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "החלקה"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "ערבול רגיל / שכתוב על הערבול"
+
#~ msgid "Show Pad"
#~ msgstr "הצגת הלוח"
+
+#~ msgid "Fill mode"
+#~ msgstr "מצב מילוי"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-hr.po b/po/messages-hr.po
index 135f1e9..f679bfc 100644
--- a/po/messages-hr.po
+++ b/po/messages-hr.po
@@ -7,537 +7,743 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:00+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-27 02:38+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Croatian <hr at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "O aplikaciji..."
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Prozor"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Sloj"
+
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopiraj"
+
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Promjeni velčinu platna"
+
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Alat"
+
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Tipka kratice"
+
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
msgstr ""
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Datoteka"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Uredi"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Prikaz"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Slika"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Promijeni veličinu slike"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Slojevi"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Dovrši piksele"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Podešenja"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Okreni 180°"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efek_ti"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Zrcali sliku vodoravno"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Prozor"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Zrcali sliku okomito"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Pomoć"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Okreni 90° u smjeru kazaljke na satu"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Okreni 90° suprotnu smjeru kazaljke na satu"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Alati"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Zrcali sloj vodoravno"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Zrcali sloj okomito"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenti"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Općenito"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Slojevi"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} slika ({1})"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Stare stavke"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Odreži prema izabranome"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Sakrij"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Promjeni veličinu..."
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Usidrivo"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Veličina podloge..."
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Plutajuće"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Vodoravno zrcaljenje"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automatski Sakrij"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Okomito zrcaljenje"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Dok"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Spljošti"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Suradnici u ovoj verziji"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Povećaj"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Prijašnji suradnici"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Smanji"
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Povećaj do prozora"
+
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Povećaj označeno"
+
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Stvarna veličina"
+
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" nafterburner https://launchpad.net/~nafterburner\n"
-" zekopeko https://launchpad.net/~zekopeko"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Preveli:"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Rešetka piksela"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Bazirano na programu Paint.NET:"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Ravnala"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Koristi pojedine slikice iz:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pikseli"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "O Pinti"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Palci"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informacije o inačici"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimetri"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Naslov"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Preko čitavog zaslona"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Inačica"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Putanja"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Dodaj novi sloj"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licenca"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Obriši sloj"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Licencirano po MIT X11 licenci"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Dupliciraj sloj"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Autorska prava"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Stopi prema dolje"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "od Pinta suradnika"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Unesi iz datoteke..."
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "broj dretvi za iscrtavanje"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Rotiraj / Uvećaj"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Promijeni veličinu slike"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Pomakni sloj gore"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Prema postotku:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Pomakni sloj dolje"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Prema absolutnoj veličini:"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Širina:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Otvori sliku"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pikseli"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Unesi iz datoteke"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Visina:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Održi omjer slike"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Postavke slojeva"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta internet stranica"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Naziv:"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Prijavi pogrješku"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Vidljivo"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Prozirnost:"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "O aplikaciji..."
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Promjeni velčinu platna"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nova…"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Sidro:"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Nova slika"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Otvori…"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Nova veličina slike "
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Otvori nedavno"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Sačuvaj promijene na slici \"{0}\" prije kreiranja nove?"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Zatvori"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Ako ne sačuvate, sve promjene će biti trajno izgubljene."
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Spremi"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Nastavi bez spremanja"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Spremi kao…"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Prozirnost sloja"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Ispiši"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Preimenuj sloj"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Ugasi"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Sakri sloj"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Novi"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Prikaži slok"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Otvori"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "oznaka1"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Vrati"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "oznaka"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Ponovi"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Nasumična buka"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Izreži"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Ponovno zasij"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopiraj"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Birač boja"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Zalijepi"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Lijevi klik za postavljanje primarne boje. Desni klik za postavljanje "
-"sekundarne boje."
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Zalijepi u novi sloj"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Zalijepi u novu sliku"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Obriši izabrano"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Ispuni izabrano"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Obrni izabrano"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Označi sve"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Odznači"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Povećati"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Sve datoteke"
-#: Pinta.Tools/ZoomTool.cs:55
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Pogrješka"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Pozadina"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Nova slika"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Otvori sliku"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "Nije se mogla otvoriti datoteka: {0}"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr ""
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efekt iscrtavanja"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posteriziranje"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr ""
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Obrni boje"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Razine"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Crno-bijelo"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Automatsko poravnavanje razine"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Nijansa / Zasićenje"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Jačina osvijetljena / Kontrast"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr ""
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Krivulje"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Mapa prijenosa"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Osvjetljenje"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Crvena "
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Polumjer"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Zelena"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Plava "
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Vrati na zadano"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Prilagodba razina"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Unosni histogram"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Unos"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Ispis"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Izlazni histogram"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automatski"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Crvena"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Plava"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Povezano"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Skica olovkom"
+
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Umjetničko"
+
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Ukloni focus"
+
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Zamučenje"
+
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Ispupči"
+
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Deformiraj"
+
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrotov fraktal"
+
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Iscrtaj"
+
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Median"
+
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Šum"
+
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pikseliziraj"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Izoštri"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Fotografija"
+
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Uljana slika"
+
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gaussovo zamućivanje"
+
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Sjaj"
+
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Smekšaj portret"
+
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Odsjaj pločice"
+
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Uklanjanje efekta crvenih očiju"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Staklo sa mrazom"
+
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Detekcija rubova"
+
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Stiliziraj"
+
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julijin fraktal"
+
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Pomično Zamućenje"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Izboči"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Skica tintom"
+
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Uvećano zamućenje"
+
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Polarna inverzija"
+
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Oblaci"
+
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragment"
+
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Korekcija šuma"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Radijalan zamućenost"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Zakreni"
+
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Dodaj šum"
+
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Reljef"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Kontura"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Nasumična buka"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Ponovno zasij"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "oznaka1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "oznaka"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerancija"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
#: Pinta.Tools/TextTool.cs:37
@@ -550,42 +756,34 @@ msgid ""
"color."
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr ""
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr ""
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr ""
@@ -596,653 +794,600 @@ msgid ""
"shift to constrain to a square."
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pikseliziraj"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Deformiraj"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Uklanjanje efekta crvenih očiju"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Fotografija"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerancija"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Pomično Zamućenje"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Zamučenje"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Skica tintom"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Umjetničko"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Radijalan zamućenost"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Ukloni focus"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Detekcija rubova"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Stiliziraj"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Staklo sa mrazom"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Uljana slika"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Uvećano zamućenje"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr ""
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Polarna inverzija"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Oblaci"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Iscrtaj"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Sjaj"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Dodaj šum"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Šum"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragment"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Izoštri"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Skica olovkom"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Kontura"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gaussovo zamućivanje"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Odsjaj pločice"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Reljef"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Izboči"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrotov fraktal"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Ispupči"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Zakreni"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Smekšaj portret"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Korekcija šuma"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julijin fraktal"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Median"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Krivulje"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Razine"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Automatsko poravnavanje razine"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Obrni boje"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posteriziranje"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Crno-bijelo"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Nijansa / Zasićenje"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Jačina osvijetljena / Kontrast"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Povećati"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Prilagodba razina"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Unosni histogram"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Unos"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Ispis"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Polumjer"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Izlazni histogram"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automatski"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Vrati na zadano"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Birač boja"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Crvena"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Lijevi klik za postavljanje primarne boje. Desni klik za postavljanje "
+"sekundarne boje."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Zelena"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Plava"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Povezano"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Mapa prijenosa"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Osvjetljenje"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Crvena "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Plava "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Dodaj novi sloj"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Sakrij"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Obriši sloj"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Dok"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Dupliciraj sloj"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automatski Sakrij"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Stopi prema dolje"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Usidrivo"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Unesi iz datoteke..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Plutajuće"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Vodoravno zrcaljenje"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Okomito zrcaljenje"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Prema postotku:"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Rotiraj / Uvećaj"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Prema absolutnoj veličini:"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Pomakni sloj gore"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Širina:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Pomakni sloj dolje"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pikseli"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Otvori sliku"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Visina:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Unesi iz datoteke"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Održi omjer slike"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nova…"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Sidro:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Otvori…"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Nova veličina slike "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Otvori nedavno"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Postavke slojeva"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Zatvori"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Naziv:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Spremi"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Vidljivo"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Spremi kao…"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Prozirnost:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Ispiši"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Ugasi"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Datoteka"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Novi"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Uredi"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Otvori"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Prikaz"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Pozadina"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Slika"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Otvori sliku"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Slojevi"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Nije se mogla otvoriti datoteka: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Podešenja"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Pogrješka"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efek_ti"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Sačuvaj promjene na slici \"{0}\" prije otvaranja nove slike?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Prozor"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Slikovne datoteke"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Sve datoteke"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Pomoć"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Sačuvaj sliku"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Alati"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} slika ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenti"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Slojevi"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Stare stavke"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster slika (*.ora)"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Sačuvaj promjene na slici \"{0}\" prije zavaranja?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Ako ne sačuvate, sve promjene će biti trajno izgubljene."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Zatvori bez spremanja"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Odreži prema izabranome"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Promjeni veličinu..."
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Veličina podloge..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Okreni 90° u smjeru kazaljke na satu"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Okreni 90° suprotnu smjeru kazaljke na satu"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Okreni 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Spljošti"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Vrati"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Ponovi"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Izreži"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopiraj"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Zalijepi"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Zalijepi u novi sloj"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Zalijepi u novu sliku"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Obriši izabrano"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Prozirnost sloja"
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Ispuni izabrano"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Preimenuj sloj"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Obrni izabrano"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Sakri sloj"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Označi sve"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Prikaži slok"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Odznači"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Slikovne datoteke"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Povećaj"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Smanji"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Povećaj do prozora"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Sačuvaj sliku"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Povećaj označeno"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Stvarna veličina"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Rešetka piksela"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Ravnala"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "broj dretvi za iscrtavanje"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pikseli"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Inačica"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Palci"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licenca"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimetri"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Licencirano po MIT X11 licenci"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Preko čitavog zaslona"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Autorska prava"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Prozor"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "od Pinta suradnika"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta internet stranica"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Naslov"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Prijavi pogrješku"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Putanja"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Općenito"
-
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Alat"
-
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Tipka kratice"
-
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Izglađivanje rubova"
-
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Temeljno miješanje / Prebrisano miješanje"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Zrcali sliku vodoravno"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Suradnici u ovoj verziji"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Zrcali sliku okomito"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Prijašnji suradnici"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Zrcali sloj vodoravno"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" nafterburner https://launchpad.net/~nafterburner\n"
+" zekopeko https://launchpad.net/~zekopeko"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Zrcali sloj okomito"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Preveli:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Dovrši piksele"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Bazirano na programu Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Efekt iscrtavanja"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Koristi pojedine slikice iz:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopiraj"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "O Pinti"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Sloj"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informacije o inačici"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1423,14 +1568,58 @@ msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
"Savjet: Za najbolje rezultate izaberite oba oka pomoću alata za selekciju"
+#~ msgid "Help"
+#~ msgstr "Pomoć"
+
+#~ msgid "Adjustments"
+#~ msgstr "Podešavanja"
+
+#~ msgid "Effects"
+#~ msgstr "Efekti"
+
+#~ msgid "File"
+#~ msgstr "Datoteka"
+
+#~ msgid "Edit"
+#~ msgstr "Uredi"
+
+#~ msgid "View"
+#~ msgstr "Pogled"
+
+#~ msgid "Image"
+#~ msgstr "Slika"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Nastavi bez spremanja"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Sačuvaj promijene na slici \"{0}\" prije kreiranja nove?"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Savjet: Desni klik za uklanjanje kontrolnih točaka"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Sačuvaj promjene na slici \"{0}\" prije otvaranja nove slike?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster slika (*.ora)"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Temeljno miješanje / Prebrisano miješanje"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Izglađivanje rubova"
diff --git a/po/messages.pot b/po/messages-hy.po
similarity index 95%
copy from po/messages.pot
copy to po/messages-hy.po
index 8ea8d21..f10d90f 100644
--- a/po/messages.pot
+++ b/po/messages-hy.po
@@ -1,30 +1,31 @@
-# Pinta Translatable Strings
-# Copyright (C) 2010 Pinta Contributors
-# This file is distributed under the same license as the Pinta package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Armenian translation for pinta
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the pinta package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2010.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: pinta\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2010-10-31 12:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2010-12-16 09:48+0000\n"
+"Last-Translator: Vardan Gevorgyan <Unknown>\n"
+"Language-Team: Armenian <hy at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
#: Pinta.Core/Classes/DocumentWorkspace.cs:160
#: Pinta.Core/Classes/DocumentWorkspace.cs:181
#: Pinta.Core/Actions/ViewActions.cs:200
msgid "Window"
-msgstr ""
+msgstr "Պատուհան"
#: Pinta.Core/Classes/Document.cs:299
msgid "Layer"
-msgstr ""
+msgstr "Շերտ"
#: Pinta.Core/Classes/Document.cs:367
msgid "copy"
@@ -225,8 +226,7 @@ msgid "Move Layer Down"
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
+msgid "Layer Properties..."
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
@@ -403,6 +403,11 @@ msgstr ""
msgid "GIMP palette (*.gpl)"
msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
+
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
msgstr ""
@@ -721,12 +726,16 @@ msgstr ""
msgid "label"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr ""
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
#: Pinta.Tools/PanTool.cs:38
@@ -832,7 +841,8 @@ msgid "Line"
msgstr ""
#: Pinta.Tools/LineCurveTool.cs:44
-msgid "Left click to draw with primary color, right click for secondary color."
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
#: Pinta.Tools/MoveSelectionTool.cs:42
@@ -1148,6 +1158,10 @@ msgstr ""
msgid "New Image Size "
msgstr ""
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr ""
+
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
msgstr ""
@@ -1160,7 +1174,11 @@ msgstr ""
msgid "Opacity:"
msgstr ""
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
+
+#: Pinta/MainWindow.cs:450
msgid "_File"
msgstr ""
@@ -1344,6 +1362,10 @@ msgstr ""
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
+"This is a dummy translation so that the credits are counted as translated.\n"
+"\n"
+"Launchpad Contributions:\n"
+" Vardan Gevorgyan https://launchpad.net/~vgevorgyan"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
@@ -1531,7 +1553,9 @@ msgid "Warmth"
msgstr ""
#: RadialBlurEffect dialog
-msgid "Use low quality for previews, small images, and small angles. Use high quality for final quality, large images, and large angles."
+msgid ""
+"Use low quality for previews, small images, and small angles. Use high "
+"quality for final quality, large images, and large angles."
msgstr ""
#: RedEyeRemoveEffect dialog
diff --git a/po/messages-id.po b/po/messages-id.po
index 59457c4..d71642f 100644
--- a/po/messages-id.po
+++ b/po/messages-id.po
@@ -7,555 +7,746 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-26 07:57+0000\n"
-"Last-Translator: Permata Harahap <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-27 02:39+0000\n"
+"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Indonesian <permataharahap at gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
"X-Poedit-Country: INDONESIA\n"
"X-Poedit-Language: Indonesian\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Tentang"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Jendela"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Kuas Cat"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Lapisan"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "Be_rkas"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "salin"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Edit"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Ubah Ukuran Kanvas"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Tampakan"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Alat"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Citra"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Kunci pintasan"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Lapisan"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Penyesuaian"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efe_k"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Jendela"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Bantuan"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Ubah Ukuran Citra"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr "Jendela Alat"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Selesaikan Piksel"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Alat"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Putar 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palet"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Balikkan Citra Horizontal"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumen"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Balikkan Citra Vertikal"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Lapisan"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Putar 90° Perijam"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Riwayat"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Putar 90° Lawan-Perijam"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Sembunyikan"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Balikkan Lapisan Horizontal"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dapat dilabuhkan"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Balikkan Lapisan Vertikal"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Mengambang"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Umum"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Auto-Sembunyikan"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} citra ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Berlabuh"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Pangkas Pilihan"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Kontributor Rilis Ini"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Ubah Ukuran..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Kontributor Sebelumnya"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Ukuran Kanvas..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Permata Harahap https://launchpad.net/~permataharahap"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Balikkan Horizontal"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Diterjemahkan oleh:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Balikkan Vertikal"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Berdasarkan karya Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Sedatarkan"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Menggunakan ikon dari:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Zum Masuk"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Tentang Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Zum Keluar"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Info Versi"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Zum ke Jendela"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Judul"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Zum ke Pilihan"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versi"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Ukuran Sebenarnya"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Jalur"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Lisensi"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Kisi Piksel"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Dirilis di bawah Lisensi MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Mistar"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Hak Cipta"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Piksel"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "oleh kontributor Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Inci"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "jumlah ulir yang digunakan untuk melukis"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Sentimeter"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Ubah Ukuran Citra"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Layar Penuh"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Per persentasi:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Per ukuran absolut:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Tambah Lapisan Baru"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Lebar:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Hapus Lapisan"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "piksel"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Gandakan Lapisan"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Tinggi:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Gabungkan Ke Bawahnya"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Pertahankan rasio panjang-lebar"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Impor dari Berkas..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Putar / Zum"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Naikkan Lapisan"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Turunkan Lapisan"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Properti Lapisan"
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nama:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Buka Berkas Citra"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Terlihat"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Impor Dari Berkas"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Ketaktembusan:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Ubah Ukuran Kanvas"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Jangkar:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Laman Web Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Laporkan Masalah"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Terjemahkan Aplikasi Ini"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Tentang"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Baru..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr ""
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Buka..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Buka Terkini"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Tutup"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Simpan"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Simpan Sebagai..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Cetak"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Keluar"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Baru"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Buka"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Urungkan"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Ulangi"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Potong"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Salin"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Tempel"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Tempel Ke Lapisan Baru"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Tempel Ke Citra Baru"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Hapus Pilihan"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Arsir Pilihan"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Inversikan Pilihan"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Pilih Semua"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Awapilih"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palet"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Semua berkas"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Kesalahan"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr ""
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Latar Belakang"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Citra Baru"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Ukuran Citra Baru "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Buka Citra"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Simpan perubahan ke citra \"{0}\" sebelum membuat yang baru?"
+msgid "Could not open file: {0}"
+msgstr "Gagal membuka berkas: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Bila Anda tidak simpan, semua perubahan akan hilang."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efek Lukis"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Teruskan tanpa menyimpan"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterkan"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Ketaktembusan Lapisan"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Inversikan Warna"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Ubah Nama Lapisan"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Level"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Sembunyikan Lapisan"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Hitam dan Putih"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Tampilkan Lapisan"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Auto-Level"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "label1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Warna / Kepekatan"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "label"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Kecerahan / Kontras"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Derau Acak"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Umpankan-ulang"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Kurva"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Pemilih Warna"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Peta Transfer"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Klik kiri untuk mengeset warna primer. Klik kanan untuk warna sekunder."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Setelah memilih"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Kecemerlangan"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Jangan ganti alat"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Ganti ke alat sebelumnya"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Merah "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Ganti ke alat Pensil"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Hijau"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Pensil"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Biru "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Pemilih Laso"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Tata-ulang"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klik dan seret untuk menggambar garis tepi area pemilihan."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Tip: Klik-kanan untuk menghapus titik kendali."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zum"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Penyesuaian Level"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Klik kiri untuk zum masuk. Klik kanan untuk zum keluar. Klik dan seret untuk "
-"zum dalam pilihan."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Histogram Masukan"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Lebar kuas"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Masukan"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Kecilkan ukuran kuas"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Keluaran"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Besarkan ukuran kuas"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Histogram Keluaran"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Bentuk Bergaris Tepi"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Otomatis"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Bentuk Berisi"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Merah"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Bentuk Berisi dan Bergaris Tepi"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Biru"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Pindahkan Piksel Terpilih"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Terkait"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Seret pilihan untuk memindahkan isi terpilih."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Sketsa Pensil"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Geser"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artistik"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klik dan seret untuk menavigasi citra."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Awafokus"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Klik kiri untuk menggambar garis bentuk bebas selebar satu piksel dengan "
-"warna primer, klik kanan untuk warna sekunder."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Kaburkan"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Pemilih Elips"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Tonjolkan"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Klik dan seret untuk menggambar pemilih elips. Tahan shift untuk memaksakan "
-"bentuk lingkaran."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distorsi"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradasi"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fraktal Mandelbrot"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Klik dan seret untuk menggambar gradasi dari warna primer ke sekunder. Klik "
-"kanan untuk sebaliknya."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Lukis"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Gradasi Linear"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Median"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Gradasi Linear Tercerminkan"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Derau"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Gradasi Linear Wajik"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pikselkan"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Gradasi Melingkar"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Tajamkan"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Gradasi Mengerucut"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Foto"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Modus Warna"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Cat Minyak"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Modus Transparansi"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Pengaburan Gaussian"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Persegi Panjang Berlengkung"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Berpendar"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Klik dan seret untuk menggambar persegi panjang berlengkung (klik kanan "
-"untuk warna sekunder). Tahan shift untuk bentuk bujursangkar."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Haluskan Foto"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Jari-jari"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Refleksi Ubin"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Kecilkan jari-jari lengkungan sudut persegi panjang"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Hilangkan Mata Merah"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Besarkan jari-jari lengkungan sudut persegi panjang"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Kaca Buram"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Klik kiri untuk menggambar dengan warna primer, klik kanan untuk warna "
-"sekunder."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Deteksi Tepian"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Pemilih Persegi Panjang"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Gayakan"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klik dan seret untuk menggambar pemilih persegi panjang. Tahan shift untuk "
-"memaksakan bentuk bujursangkar."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fraktal Julia"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Ember Cat"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Pengaburan Gerak"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Klik kiri untuk mengisi area dengan warna primer, klik kanan untuk warna "
-"sekunder."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Pahatan"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Stempel Cangkok"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Sketsa Tinta"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Pindahkan Pemilih"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Pengaburan Zum"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Seret pemilih untuk memindahkan garis tepi pemilih."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Inversi Kutub"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Bentuk Bebas"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Awan"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Modus arsiran"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragmen"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Bersambungan"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Kurangi Derau"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Pengaburan Melingkar"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Toleransi"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Pelintir"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elips"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Tambah Derau"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relief"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Kerangka"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Derau Acak"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Umpankan-ulang"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "label1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "label"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-"Klik dan seret untuk menggambar elips (klik kanan untuk warna sekunder). "
-"Tahan shift untuk memaksakan bentuk lingkaran."
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr ""
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Geser"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Klik dan seret untuk menavigasi citra."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -569,42 +760,34 @@ msgstr ""
"Klik kanan untuk menempatkan kursor, lalu ketik teks yang diinginkan. Warna "
"teks adalah warna primer."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Font"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Tebal"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Miring"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Garis Bawah"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Rata Kiri"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Rata Tengah"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Rata Kanan"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Pemilih Tongkat Ajaib"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Pilih untuk memilih area yang warnanya mirip."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Persegi Panjang"
@@ -617,655 +800,618 @@ msgstr ""
"Klik dan seret untuk menggambar persegi panjang (klik kanan untuk warna "
"sekunder). Tahan shift untuk memaksakan bentuk bujursangkar."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Garis"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Bentuk Bebas"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
"Klik kiri untuk menggambar dengan warna primer, klik kanan untuk warna "
"sekunder."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Warnai-ulang"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Klik kiri untuk mengganti warna sekunder dengan warna primer."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Bentuk Bergaris Tepi"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Penghapus"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Bentuk Berisi"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klik dan seret untuk menghapus bagian dari citra."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Bentuk Berisi dan Bergaris Tepi"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pikselkan"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distorsi"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Bersambungan"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Hilangkan Mata Merah"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Foto"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Toleransi"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Pengaburan Gerak"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Garis"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Kaburkan"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Klik kiri untuk menggambar dengan warna primer, klik kanan untuk warna "
+"sekunder."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Sketsa Tinta"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Pindahkan Pemilih"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artistik"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Seret pemilih untuk memindahkan garis tepi pemilih."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Pengaburan Melingkar"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Pemilih Persegi Panjang"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Awafokus"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Klik dan seret untuk menggambar pemilih persegi panjang. Tahan shift untuk "
+"memaksakan bentuk bujursangkar."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Deteksi Tepian"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Pemilih Tongkat Ajaib"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Gayakan"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Pilih untuk memilih area yang warnanya mirip."
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Kaca Buram"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Pemilih Elips"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Cat Minyak"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Klik dan seret untuk menggambar pemilih elips. Tahan shift untuk memaksakan "
+"bentuk lingkaran."
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Pengaburan Zum"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Pemilih Laso"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Inversi Kutub"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Klik dan seret untuk menggambar garis tepi area pemilihan."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Awan"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Ember Cat"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Lukis"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Klik kiri untuk mengisi area dengan warna primer, klik kanan untuk warna "
+"sekunder."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Berpendar"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradasi"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Tambah Derau"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Klik dan seret untuk menggambar gradasi dari warna primer ke sekunder. Klik "
+"kanan untuk sebaliknya."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Derau"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Gradasi Linear"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragmen"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Gradasi Linear Tercerminkan"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Tajamkan"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Gradasi Linear Wajik"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Sketsa Pensil"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Gradasi Melingkar"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Kerangka"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Gradasi Mengerucut"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Pengaburan Gaussian"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Refleksi Ubin"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Modus Warna"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relief"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Modus Transparansi"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Pahatan"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Lebar kuas"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fraktal Mandelbrot"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Kecilkan ukuran kuas"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Tonjolkan"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Besarkan ukuran kuas"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Pelintir"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Kuas Cat"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Haluskan Foto"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Kurangi Derau"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Warnai-ulang"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fraktal Julia"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Klik kiri untuk mengganti warna sekunder dengan warna primer."
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Median"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Kurva"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Level"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Auto-Level"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Inversikan Warna"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterkan"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elips"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Hitam dan Putih"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Klik dan seret untuk menggambar elips (klik kanan untuk warna sekunder). "
+"Tahan shift untuk memaksakan bentuk lingkaran."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Warna / Kepekatan"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Stempel Cangkok"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Kecerahan / Kontras"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zum"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Penyesuaian Level"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Klik kiri untuk zum masuk. Klik kanan untuk zum keluar. Klik dan seret untuk "
+"zum dalam pilihan."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Histogram Masukan"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Persegi Panjang Berlengkung"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Masukan"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Klik dan seret untuk menggambar persegi panjang berlengkung (klik kanan "
+"untuk warna sekunder). Tahan shift untuk bentuk bujursangkar."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Keluaran"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Jari-jari"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Histogram Keluaran"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Kecilkan jari-jari lengkungan sudut persegi panjang"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Otomatis"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Besarkan jari-jari lengkungan sudut persegi panjang"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Tata-ulang"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Pemilih Warna"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Merah"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Klik kiri untuk mengeset warna primer. Klik kanan untuk warna sekunder."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Hijau"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Setelah memilih"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Biru"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Jangan ganti alat"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Terkait"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Ganti ke alat sebelumnya"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Peta Transfer"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Ganti ke alat Pensil"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Pensil"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Kecemerlangan"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Penghapus"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Klik dan seret untuk menghapus bagian dari citra."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Merah "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Klik kiri untuk menggambar garis bentuk bebas selebar satu piksel dengan "
+"warna primer, klik kanan untuk warna sekunder."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Biru "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Pindahkan Piksel Terpilih"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Tip: Klik-kanan untuk menghapus titik kendali."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Seret pilihan untuk memindahkan isi terpilih."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Tambah Lapisan Baru"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Sembunyikan"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Hapus Lapisan"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Berlabuh"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Gandakan Lapisan"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Auto-Sembunyikan"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Gabungkan Ke Bawahnya"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dapat dilabuhkan"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Impor dari Berkas..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Mengambang"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Balikkan Horizontal"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Balikkan Vertikal"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Per persentasi:"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Putar / Zum"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Per ukuran absolut:"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Naikkan Lapisan"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Lebar:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Turunkan Lapisan"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "piksel"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Buka Berkas Citra"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Tinggi:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Impor Dari Berkas"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Pertahankan rasio panjang-lebar"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Baru..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Jangkar:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Buka..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Ukuran Citra Baru "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Buka Terkini"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Properti Lapisan"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Tutup"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nama:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Simpan"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Terlihat"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Simpan Sebagai..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Ketaktembusan:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Cetak"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Keluar"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "Be_rkas"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Baru"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Edit"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Buka"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Tampakan"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Latar Belakang"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Citra"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Buka Citra"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Lapisan"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Gagal membuka berkas: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Penyesuaian"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Kesalahan"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efe_k"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Simpan perubahan ke citra \"{0}\" sebelum membuka citra baru?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Jendela"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Berkas citra"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Jendela Alat"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Semua berkas"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Bantuan"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Simpan Berkas Citra"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Alat"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} citra ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumen"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Lapisan"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Citra OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Riwayat"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Simpan perubahan ke citra \"{0}\" sebelum menutup?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Bila Anda tidak simpan, semua perubahan akan hilang."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Tutup tanpa menyimpan"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Pangkas Pilihan"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Ubah Ukuran..."
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Ukuran Kanvas..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Putar 90° Perijam"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Putar 90° Lawan-Perijam"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Putar 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Sedatarkan"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Urungkan"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Ulangi"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Potong"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Salin"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Tempel"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Tempel Ke Lapisan Baru"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Tempel Ke Citra Baru"
-
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Hapus Pilihan"
-
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Arsir Pilihan"
-
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Inversikan Pilihan"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Pilih Semua"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Awapilih"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Ketaktembusan Lapisan"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Zum Masuk"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Ubah Nama Lapisan"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Zum Keluar"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Sembunyikan Lapisan"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Zum ke Jendela"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Tampilkan Lapisan"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Zum ke Pilihan"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Berkas citra"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Ukuran Sebenarnya"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Kisi Piksel"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Mistar"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Simpan Berkas Citra"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Piksel"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Inci"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Sentimeter"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Layar Penuh"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "jumlah ulir yang digunakan untuk melukis"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Jendela"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versi"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Laman Web Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Lisensi"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Laporkan Masalah"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Dirilis di bawah Lisensi MIT X11."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Terjemahkan Aplikasi Ini"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Hak Cipta"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Umum"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "oleh kontributor Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Alat"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Judul"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Kunci pintasan"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Jalur"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Antialias"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Pencampuran normal / timpa"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Balikkan Citra Horizontal"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Kontributor Rilis Ini"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Balikkan Citra Vertikal"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Kontributor Sebelumnya"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Balikkan Lapisan Horizontal"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Permata Harahap https://launchpad.net/~permataharahap"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Balikkan Lapisan Vertikal"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Diterjemahkan oleh:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Selesaikan Piksel"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Berdasarkan karya Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Efek Lukis"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Menggunakan ikon dari:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "salin"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Tentang Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Lapisan"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Info Versi"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1445,3 +1591,26 @@ msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
"Saran: Demi hasil terbaik, terlebih dahulu gunakan alat pemilih untuk "
"memilih masing-masing mata."
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Simpan perubahan ke citra \"{0}\" sebelum membuat yang baru?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Teruskan tanpa menyimpan"
+
+#~ msgid "Fill mode"
+#~ msgstr "Modus arsiran"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Simpan perubahan ke citra \"{0}\" sebelum membuka citra baru?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Citra OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Antialias"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Pencampuran normal / timpa"
diff --git a/po/messages-it.po b/po/messages-it.po
index 9d68ab0..554ade4 100644
--- a/po/messages-it.po
+++ b/po/messages-it.po
@@ -7,566 +7,748 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-12 20:25+0000\n"
-"Last-Translator: simone.sandri <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-03 17:58+0000\n"
+"Last-Translator: giacomo margarito <giacomomargarito at gmail.com>\n"
"Language-Team: Italian <it at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Informazioni su Pinta"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Finestra"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pennello"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Livello"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_File"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "copia"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Modifica"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Ridimensiona Tela"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Visualizza"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Strumenti"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Immagine"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Scorciatoia"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Livelli"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Mescola normale"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Regolazioni"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Sovrascrivi"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Effetti"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Attiva Antialiasing"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Finestra"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Disattiva Antialiasing"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Aiuto"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Ridimensiona immagine"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Finisci pixel"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Strumenti"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Ruota di 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Tavolozza"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Ribalta immagine orizzontalmente"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documenti"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Ribalta immagine verticalmente"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Livelli"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Ruota di 90° in senso orario"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Cronologia"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Ruota di 90° in senso antiorario"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Nascondi"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Ribalta livello orizzontalmente"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Agganciabile"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Ribalta livello verticalmente"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Fluttuante"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Generali"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Nasconi automaticamente"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} immagine ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Aggancia"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Ritaglia la selezione"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Hanno contribuito a questa versione"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Ridimensiona..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Collaboratori precedenti"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Dimensioni immagine..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Daniele Napolitano https://launchpad.net/~dnax88\n"
-" Eagleman https://launchpad.net/~giacomomargarito\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Kabir94 https://launchpad.net/~kabirsala\n"
-" Luca Urbini https://launchpad.net/~luca-urbini\n"
-" Pullus In Fabula https://launchpad.net/~zatunga11\n"
-" flux https://launchpad.net/~luigimarco\n"
-" magic3 https://launchpad.net/~magic3\n"
-" nTia89 https://launchpad.net/~tia-tif-deactivatedaccount\n"
-" simone.sandri https://launchpad.net/~lexluxsox"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Ribalta orizzontalmente"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Tradotto da:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Ribalta verticalmente"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Basato sul lavoro di Paint.NET"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Appiattisci"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Utilizzando delle icone da:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Ingrandisci"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "A proposito di Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Riduci"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informazioni sulla versione"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Adatta alla finestra"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Titolo"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Ingrandisci alla selezione"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versione"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Dimensione reale"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Percorso"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Barra degli strumenti"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licenza"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Griglia dei pixel"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Rilasciato sotto la licenza MIT X11"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Righello"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pixel"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "dai collaboratori di Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Pollici"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "Numero di"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimetri"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Ridimensiona immagine"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Schermo intero"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "In percentuale:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Unità di misura"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "In dimensioni assolute:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Aggiungi nuovo livello"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Larghezza:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Elimina livello"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixel"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplica livello"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Altezza:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Unisci al livello sottostante"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Mantieni le proporzioni"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importa dal file..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Ruota / Zoom"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Sposta il livello in alto"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Sposta il livello in basso"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Proprietà del livello"
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nome:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Apri immagine"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Visibile"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importa da file"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Opacità:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Salva tutto"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Ridimensiona Tela"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Chiudi tutto"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Ancora:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Sito di Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Segnala un bug"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Traduci questo programma"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Informazioni su Pinta"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nuovo..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Cattura Schermata"
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Apri..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Aperti di recente"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Chiudi"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Salva"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Salva con nome..."
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Stampa"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Esci"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nuovo"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Apri"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Annulla"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Ripristina"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Taglia"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Copia"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Incolla"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Incolla in un nuovo livello"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Incolla in una nuova immagine"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Elimina la selezione"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Riempi selezione"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Inverti la selezione"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Seleziona tutto"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Deseleziona"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Ripristina originale"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Imposta numero di colori"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Tavolozza"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Apri Tavolozza"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "File Tavolozza (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Tutti i file"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Impossibile aprire la Tavolozza: {0}.\n"
+"Verifica che sia una tavolozza valida per GIMP o Paint.NET."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Errore"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Salva Tavolozza"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Tavolozza Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Tavolozza GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Immagine non salvata {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Sfondo"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nuova immagine"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Nuova dimensione immagine "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Apri immagine"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr ""
-"Salvare le modifiche all'immagine \"{0}\" prima di crearne una nuova?"
+msgid "Could not open file: {0}"
+msgstr "Impossibile aprire il file: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
-"Se non si salva ora, tutte le modifiche saranno definitivamente perse."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Effetti di rendering"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Continua senza salvare"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterizza"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Opacità del livello"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Inverti colori"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Rinomina livello"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Livelli"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Nascondi livello"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Bianco e nero"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Mostra livello"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Livella automaticamente"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etichetta1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Tonalità / Saturazione"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etichetta"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Luminosità / Contrasto"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Rumore casuale"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Seppia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Rigenera il seme"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Curve"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Acchiappa colore"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Mappa di trasferimento"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminosità"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Rosso "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Verde"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Blu "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Azzera"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-"Tasto sinistro del mouse per impostare il colore primario. Tasto destro del "
-"mouse per impostare il colore secondario."
+"Suggerimento: fai Click con il tasto destro per rimuovere i punti di "
+"controllo."
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Dopo la selezione"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Regolazione livelli"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Non cambiare strumento"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Istogramma di partenza"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Passa allo strumento precedente"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Input"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Passa alla matita"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Risultato"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Matita"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Mostra Istogramma"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Selezione libera"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Auto"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Clicca e trascina per disegnare il contorno dell'area da selezionare"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Rosso"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zoom"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Blu"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Tasto sinistro del mouse per aumentare lo zoom. Tasto destro del mouse per "
-"diminuire lo zoom. Clicca e trascina per zoomare alla selezione."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Collegato"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Dimensione pennello"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Schizzo a matita"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Diminuisci la dimensione del pennello"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artistici"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Aumenta la dimensione del pennello"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Sfoca"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Solo contorno"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Sfocature"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Forma piena"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Rigonfiamento"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Contorno e forma piena"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distorsione"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Muovi i pixel selezionati"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Frattale Mandelbrot"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Trascina la selezione per spostare i contenuti selezionati."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Renderizza"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr ""
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Mediana"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Clicca e trascina per muoverti nell'immagine."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Disturbo"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Tasto sinistro del muose per disegnare liberamente una linea di un pixel "
-"come spessore e con il colore primario. Tasto destro del mouse per usare il "
-"colore secondario."
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Mosaico"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Selezione ellittica"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Nitidezza"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Clicca e trascina per disegnare una selezione ellittica. Tieni premuto il "
-"tasto Shift per forzare una selezione circolare."
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Foto"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Sfumatura"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Pittura ad olio"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Clicca e trascina per disegnare il gradiente dal colore primario a quello "
-"secondario. Clicca con il destro per invertirli."
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Sfocatura Gaussiana"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Gradiente lineare"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Luminosità"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Gradiente lineare riflesso"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Ammorbidire il ritratto"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Sfumatura a diamante lineare"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Riflessione di piastrelle"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Gradiente radiale"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Rimozione occhi rossi"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Sfumatura conica"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Vetro ghiacciato"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Modalità colore"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Rileva bordi"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Modalità trasparente"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Stilizza"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Rettangolo smussato"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Frattale Julia"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Fare click per disegnare un rettangolo con angoli arrotondati (click destro "
-"per il colore secondario). Tenere premuto Maiusc per disegnare un quadrato."
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Sfocatura movimento"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Raggio"
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Rilievo"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Riduci il raggio dell'angolo del rettangolo"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Schizzo di inchiostro"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Aumenta il raggio dell'angolo del rettangolo"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Sfocatura zoom"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Fare click sinistro per disegnare col colore primario, click destro per "
-"disegnare col colore secondario."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Inversione polare"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Selezione rettangolare"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Nuvole"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Fare click e trascinare per effettuare una selezione rettangolare. Mantieni "
-"premuto shift per forzare a quadrato."
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Frammentazione"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Secchiello"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Riduci disturbo"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Fare click sinistro per riempire una regione col colore primario, click "
-"destro per riempire col colore secondario."
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Sfocatura radiale"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Clona"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Twist"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Muovi selezione"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Aggiungi disturbo"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Trascina la selezione per muovere il bordo della selezione."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Rilievo"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Forma a mano libera"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Contorno"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Modalità di riempimento"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Rumore casuale"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Contiguo"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Rigenera il seme"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Globale"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etichetta1"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolleranza"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etichetta"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Ellisse"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Scegli il Colore Primario"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Fare click e trascinare per disegnare un ellisse (click destro per il colore "
-"secondario). Mantenere premuto shift per forzare ad un cerchio."
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Scegli il Colore Secondario"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Scegli Tavolozza dei Colori"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Pan"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Clicca e trascina per muoverti nell'immagine."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -580,42 +762,34 @@ msgstr ""
"Fare click sinistro per posizionare il cursore, quindi scrivere il testo "
"desiderato. Il colore del testo è quello primario."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Carattere"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Grassetto"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Corsivo"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Sottolineato"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Allinea a sinistra"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Allinea al centro"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Allinea a destra"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Seleziona la bacchetta magica"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Fare click in una regione di colore simile."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Rettangolo"
@@ -629,6 +803,50 @@ msgstr ""
"destro per il colore secondario). Tenere premuto Maiusc per disegnare un "
"quadrato."
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Forma a mano libera"
+
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Fare click sinistro per disegnare col colore primario, click destro per "
+"disegnare col colore secondario."
+
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Stile di ripempimento"
+
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Solo contorno"
+
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Forma piena"
+
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Contorno e forma piena"
+
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Modo riempimento"
+
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Contiguo"
+
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Globale"
+
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolleranza"
+
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
msgstr "Linea"
@@ -640,646 +858,580 @@ msgstr ""
"Click sinistro per disegnare col colore primario, click destro per il colore "
"secondario."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Ricolola"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Muovi selezione"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
-"Fare click per sostituire il colore secondario con il colore primario."
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Trascina la selezione per muovere il bordo della selezione."
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Gomma"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Selezione rettangolare"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Fare clic e trascinare per cancellare una parte dell'immagine."
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Fare click e trascinare per effettuare una selezione rettangolare. Mantieni "
+"premuto shift per forzare a quadrato."
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Mosaico"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Seleziona la bacchetta magica"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distorci"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Fare click in una regione di colore simile."
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Rimozione occhi rossi"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Selezione ellittica"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Foto"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Clicca e Trascina per disegnare una selezione ellittica. Tieni premuto il "
+"tasto Maiusc per forzare una selezione circolare."
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Sfocatura movimento"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Selezione libera"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Sfocature"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Clicca e trascina per disegnare il contorno dell'area da selezionare"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Schizzo di inchiostro"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Secchiello"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artistici"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Fare click sinistro per riempire una regione col colore primario, click "
+"destro per riempire col colore secondario."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Sfocatura radiale"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Sfumatura"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Sfoca"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Clicca e trascina per disegnare la sfumatura dal colore primario a quello "
+"secondario. Clicca con il tasto destro per invertirli."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Rileva bordi"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Sfumatura lineare"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Stilizza"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Sfumatura lineare riflessa"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Vetro ghiacciato"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Sfumatura a diamante lineare"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Pittura ad olio"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Sfumatura radiale"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Sfocatura zoom"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Sfumatura conica"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Inversione polare"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Modalità"
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Nuvole"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Modalità colore"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Renderizza"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Modalità trasparenza"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Luminosità"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Dimensione pennello"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Aggiungi disturbo"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Diminuisci la dimensione del pennello"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Disturbo"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Aumenta la dimensione del pennello"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Frammentazione"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pennello"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Nitidezza"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Tipo"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Schizzo a matita"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Ricolora"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Contorno"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
+"Fare click per sostituire il colore secondario con il colore primario."
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Sfocatura Gaussiana"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normale"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Riflessione di piastrelle"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Circolare"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Rilievo"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Quadrati"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Rilievo"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Splatter"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Frattale Mandelbrot"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Griglia"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Rigonfiamento"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Ellisse"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
+"Fare click e trascinare per disegnare un ellisse (click destro per il colore "
+"secondario). Mantenere premuto shift per forzare ad un cerchio."
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Ammorbidire il ritratto"
-
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Riduci disturbo"
-
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Frattale Julia"
-
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Mediana"
-
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Curve"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Timbro clone"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Livelli"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Ctrl+tasto sinistro per impostare l'origine, click con il tasto sinistro per "
+"disegnare."
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Livella automaticamente"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Ingradimento"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Inverti colori"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Tasto destro del mouse per ingrandire. Tasto destro del mouse per "
+"rimpicciolire. Cliccare e trascinare per ingrandire la selezione."
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterizza"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Rettangolo arrotondato"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Bianco e nero"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Fare click per disegnare un rettangolo con angoli arrotondati (click destro "
+"per il colore secondario). Tenere premuto Maiusc per disegnare un quadrato."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Tonalità / Saturazione"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Raggio"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Seppia"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Riduci il raggio dell'angolo del rettangolo"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Luminosità / Contrasto"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Aumenta il raggio dell'angolo del rettangolo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Regolazione livelli"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Selettore colore"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Istogramma di partenza"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Tasto sinistro del mouse per impostare il colore primario. Tasto destro del "
+"mouse per impostare il colore secondario."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Input"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Dopo la selezione"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Risultato"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Non cambiare strumento"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Mostra Istogramma"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Passa allo strumento precedente"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Auto"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Passa alla matita"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Reset"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Matita"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Rosso"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Gomma"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Verde"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Fare clic e trascinare per cancellare una parte dell'immagine."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Blu"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Tasto sinistro del muose per disegnare liberamente una linea di un pixel "
+"come spessore e con il colore primario. Tasto destro del mouse per usare il "
+"colore secondario."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Collegato"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Sposta i pixel selezionati"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Mappa di trasferimento"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Trascina la selezione per spostare i contenuti selezionati."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Nascondi"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminosità"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Aggancia"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Nascondi automaticamente"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Rosso "
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Agganciabile"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Blu "
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Fluttuante"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Aggiungi nuovo livello"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Elimina livello"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplica livello"
-
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Unisci al livello sottostante"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "In percentuale:"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importa dal file..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "In dimensioni assolute:"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Ribalta orizzontalmente"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Larghezza:"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Ribalta verticalmente"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixel"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Ruota / Zoom"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Altezza:"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Sposta il livello in alto"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Mantieni le proporzioni"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Sposta il livello in basso"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Ancora:"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Apri immagine"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Nuova dimensione immagine "
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importa da file"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Proprietà del livello"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nuovo..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nome:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Apri..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Visibile"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Aperti di recente"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacità:"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Chiudi"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Salva"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_File"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Salva con nome..."
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Modifica"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Stampa"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Visualizza"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Esci"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Immagine"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nuovo"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Livelli"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Apri"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Regolazioni"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Sfondo"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Effetti"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Apri immagine"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Finestra"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Impossibile aprire il file: {0}"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Finestre Strumenti"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Errore"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Guida utente"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr ""
-"Salvare i cambiamenti dell'immagine \"{0}\" prima di aprirne una nuova?"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Strumenti"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "File di immagini"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documenti"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Tutti i file"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Livelli"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Salva immagine"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Cronologia"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} immagine ({1})"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Cattura Schermata"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Immagine OpenRaster (*.ora)"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Ritardo prima di catturare lo schermo (secondi):"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Salvare i cambiamenti all'immagine \"{0}\" prima di chiudere?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr ""
+"Se non si salva ora, tutte le modifiche saranno definitivamente perse."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Chiudi senza salvare"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Ritaglia la selezione"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Ridimensiona..."
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Ridimensiona Tavolozza"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Dimensioni immagine..."
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nuova dimensione Tavolozza:"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Ruota di 90° in senso orario"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Ruota di 90° in senso anti-orario"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Ruota di 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Appiattisci"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Annulla"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Ripeti"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Taglia"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Copia"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Incolla"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Incolla in un nuovo livello"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Incolla in una nuova immagine"
-
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Cancella selezione"
-
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Riempi selezione"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Opacità del livello"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Inverti la selezione"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Rinomina livello"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Seleziona tutto"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Nascondi livello"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Deseleziona"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Mostra livello"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Zoom avanti"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "File di immagini"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Zoom indietro"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Incolla cancellato"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Adatta alla finestra"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Gli appunti non contengono un'immagine"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Zoom alla selezione"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Salva immagine"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Dimensione reale"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta non supporta il salvataggio in questo formato di file."
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Griglia dei pixel"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Un file chiamato \"{0}\" esiste già. Vuoi sostituirlo?"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Righello"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"Il file esiste già in \"{1}\". Sostituendolo verrà sovrascritto il suo "
+"contenuto."
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pixel"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "numero di processi usati per la renderizzazione"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Pollici"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versione"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimetri"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licenza"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Schermo intero"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Rilasciato sotto la licenza MIT X11"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Finestra"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Sito di Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "dai collaboratori di Pinta"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Riporta un bug"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Titolo"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Traduci questa applicazione"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Percorso"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Generali"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Qualità JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Strumenti"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Qualità: "
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Scorciatoia"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Hanno contribuito a questa versione"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Antialiasing"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Collaboratori precedenti"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Daniele Napolitano https://launchpad.net/~dnax88\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Kabir94 https://launchpad.net/~kabirsala\n"
+" Luca Urbini https://launchpad.net/~luca-urbini\n"
+" Pullus In Fabula https://launchpad.net/~zatunga11\n"
+" flux https://launchpad.net/~luigimarco\n"
+" giacomo margarito https://launchpad.net/~eagleman\n"
+" joshg https://launchpad.net/~joshg\n"
+" magic3 https://launchpad.net/~magic3\n"
+" nTia89 https://launchpad.net/~tia-tif-deactivatedaccount\n"
+" simone.sandri https://launchpad.net/~lexluxsox"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Ribalta immagine orizzontalmente"
-
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Ribalta immagine verticalmente"
-
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Ribalta livello orizzontalmente"
-
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Ribalta livello verticalmente"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Tradotto da:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Finisci pixel"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Basato sul lavoro di Paint.NET"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Effetti di rendering"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Utilizzando delle icone da:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "copia"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "A proposito di Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Livello"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informazioni sulla versione"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1306,7 +1458,7 @@ msgstr "Anti-Aliasing"
#: GlowEffect dialog
msgid "Blend Mode"
-msgstr "Modalità trasparente"
+msgstr "Modalità fusione"
#: OilPaintingEffect dialog
msgid "Brightness"
@@ -1372,7 +1524,7 @@ msgstr "Frammenti"
#: TileEffect dialog
msgid "Ink Outline"
-msgstr ""
+msgstr "Bordo ad inchiostro."
#: AddNoiseEffect dialog
#: OutlineEffect dialog
@@ -1396,7 +1548,7 @@ msgstr "Dimensioni della punta della matita"
#: CloudsEffect dialog
msgid "Percentile"
-msgstr ""
+msgstr "Percentile"
#: RadialBlurEffect dialog
msgid "Power"
@@ -1461,18 +1613,70 @@ msgstr ""
"Suggerimento: Per ottenere i migliori risultati, usa prima gli strumenti di "
"selezione per selezionare ciascun occhio."
+#~ msgid "Help"
+#~ msgstr "Aiuto"
+
+#~ msgid "Adjustments"
+#~ msgstr "Regolazioni"
+
+#~ msgid "Effects"
+#~ msgstr "Effetti"
+
+#~ msgid "File"
+#~ msgstr "File"
+
+#~ msgid "View"
+#~ msgstr "Visualizza"
+
+#~ msgid "Edit"
+#~ msgstr "Modifica"
+
+#~ msgid "Image"
+#~ msgstr "Immagine"
+
#~ msgid "%"
#~ msgstr "%"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr ""
+#~ "Salvare le modifiche all'immagine \"{0}\" prima di crearne una nuova?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Continua senza salvare"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr ""
#~ "Suggerimento: Tasto destro del mouse per rimuovere i punti di controllo."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr ""
+#~ "Salvare i cambiamenti dell'immagine \"{0}\" prima di aprirne una nuova?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Immagine OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Antialiasing"
+
+#~ msgid "Fill mode"
+#~ msgstr "Modalità di riempimento"
+
#~ msgid "Show Pad"
#~ msgstr "Mostra pannello"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-ja.po b/po/messages-ja.po
index 427025b..23fa7c5 100644
--- a/po/messages-ja.po
+++ b/po/messages-ja.po
@@ -7,694 +7,666 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 10:58+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-15 13:56+0000\n"
+"Last-Translator: ytetsu <Unknown>\n"
"Language-Team: Japanese <ja at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "このソフトウェアについて"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "ブラシで描画"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "ファイル(_F)"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "編集(_E)"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "ウィンドウ"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "表示(_V)"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "レイヤー"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "画像(_I)"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "コピー"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "レイヤ(_L)"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "キャンバスサイズの変更"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "調整(_A)"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "ツール"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "エフェクト(_C)"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "ショートカットキー"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "ウィンドウ(_W)"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "ノーマルブレンド"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "ヘルプ(_H)"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "上書き"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "アンチエイリアスの有効"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "ツール"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "アンチエイリアスの無効"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "パレット"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "画像サイズの変更"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "ドキュメント"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "ピクセル完了"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "レイヤー"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "180度回転"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "履歴"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "イメージを水平方向に反転"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "非表示"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "イメージを垂直方向に反転"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "ドックに格納可能"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "90度回転 (時計回り)"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "フローティング"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "90度回転 (反時計回り)"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "自動的に隠す"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "レイヤーを水平方向に反転"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "ドッキング"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "レイヤーを垂直方向に反転"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "このバージョンの貢献者"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "一般"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "過去の貢献者"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} イメージ ({1})"
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Kiyotaka NISHIBORI https://launchpad.net/~ml-nishibori-kiyotaka\n"
-" YannUbuntu https://launchpad.net/~yannubuntu\n"
-" Yuki Kodama https://launchpad.net/~kuy"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "選択範囲を切り取る"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "翻訳:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "リサイズ..."
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Paint.NET プロジェクト:"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "キャンバスのサイズ..."
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "一部のアイコン:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "水平方向に反転"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Pinta について"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "垂直方向に反転"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "バージョン情報"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "フラット化"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "タイトル"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "拡大"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "バージョン"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "縮小"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "パス名"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "ウィンドウに合わせる"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "ライセンス"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "選択範囲に合わせる"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "MIT X11 ライセンスの元で公開されました。"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "実際のサイズ"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "著作権"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "ツールバー"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "Pinta 貢献者"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "網目"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "レンダリングに使用するスレッド数"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "ルーラー"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "画像サイズの変更"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "ピクセル"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "パーセント指定:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "インチ"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "絶対サイズ指定:"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "センチメートル"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "幅:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "全画面表示"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "ピクセル"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "ルーラーの単位"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "高さ:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "新規レイヤーを追加"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "アスペクト比を保持する"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "レイヤーを削除"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "レイヤーのプロパティ"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "レイヤーを複製"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "名前:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "レイヤーを統合"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "表示"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "ファイルからインポート..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "不透明度:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "回転 / ズーム"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "キャンバスサイズの変更"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "レイヤーを上に移動"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "アンカー:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "レイヤーを下に移動"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "新規イメージ"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "新規イメージのサイズ "
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "イメージファイルを開く"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "新規作成の前に変更を \"{0}\" に保存しますか?"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "ファイルからインポート"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "保存しない場合、すべての変更が失われます。"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "すべて保存"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "保存しないで続行"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "すべて閉じる"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "レイヤーの不透明度"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta 公式サイト"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "レイヤー名を変更"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "バグの報告"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "レイヤーを非表示"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "このアプリケーションを翻訳"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "レイヤーを表示"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "このソフトウェアについて"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "ラベル1"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "新規..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "ラベル"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "新規スクリーンショット..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "ランダムノイズ"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "開く..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "シード再生成"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "最近使用したファイルを開く"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "スポイト"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "閉じる"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr "左クリックで前景色、右クリックで背景色を選択。"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "保存"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "名前を付けて保存..."
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "印刷"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "以前のツールに切り替える"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "終了"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "鉛筆ツールに切り替える"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "新規"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "鉛筆"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "開く"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "元に戻す"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "クリック - ドラッグで境界線を描いて選択範囲を作成します。"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "やり直し"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "ズーム"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "切り取り"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr "左クリックのときはズームイン、右クリックのときはズームアウトします。クリック - ドラッグで選択した範囲にズームインします。"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "コピー"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "ブラシサイズ"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "貼り付け"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "ブラシサイズを小さくします"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "新規レイヤーに貼り付け"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "ブラシサイズを大きくします"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "新規イメージに貼り付け"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "輪郭を描く"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "選択範囲を消去"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "塗りつぶす"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "選択範囲を塗りつぶす"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "塗りつぶして輪郭を描く"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "選択範囲を反転"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "すべて選択"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "ドラッグで選択範囲のピクセルを移動します。"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "選択解除"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "標準設定に戻す"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "パレット"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "パレットファイルを開く"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr "クリック - ドラッグで楕円の選択範囲を作成します。Shift を押しながらドラッグすると正円になります。"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "パレットファイル(*.txt, *.gpl)"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "グラデーション"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "すべてのファイル"
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "線形グラデーション"
-
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "反射形グラデーション"
-
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "菱形グラデーション"
-
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "放射状グラデーション"
-
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "円錐形グラデーション"
-
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "色モード"
-
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "透過モード"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "エラー"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-"クリック - ドラッグで面取り四角形を描きます。左クリックのときは前景色で、右クリックのときは背景色で描きます。Shift "
-"を押しながらドラッグすると面取り正方形になります。"
-
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "半径"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "背景色"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "新規イメージ"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "イメージを開く"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "ファイルを開けません: {0}"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "効果のレンダリング"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr ""
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "ポスタリゼーション"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr ""
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "色を反転"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr ""
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "レベル"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr ""
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "モノクロ"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr ""
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "自動レベル補正"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr ""
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "色彩 / 彩度"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr ""
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "明度 / コントラスト"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "許容値"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "セピア"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr ""
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "カーブ"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "転送マップ"
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "明度"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "赤 "
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "緑"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "青 "
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "リセット"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "レベル補正"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "入力ヒストグラム"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "入力"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "出力"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "出力ヒストグラム"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "自動"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "赤"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "青"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "リンク済み"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr ""
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "鉛筆"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr ""
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "アーティスティック"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "ピクセレート"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "アンフォーカス"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "ぼかし"
+
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "ふくらみ"
+
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
#: Pinta.Effects/Effects/TwistEffect.cs:34
msgid "Distort"
msgstr "変形"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "赤目除去"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "フラクタル"
+
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "レンダリング"
+
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "中央値"
+
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "ノイズ"
+
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "ピクセレート"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "シャープ"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "写真"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "ぼかし (詳細)"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "油絵"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "ぼかし"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "ぼかし (ガウス)"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "スケッチ"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "発光"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "アーティスティック"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "描写"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "ぼかし (放射状)"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "タイルの反射"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "アンフォーカス"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "赤目除去"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "すりガラス"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "エッジの強調"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr "スタイライズ"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "すりガラス"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "フラクタル (Julia)"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "油絵"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "ぼかし (詳細)"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "エンボス"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "スケッチ"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
@@ -708,543 +680,718 @@ msgstr "極の反転"
msgid "Clouds"
msgstr "雲"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "レンダリング"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "フラグメント"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "発光"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "ノイズの低減"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "ぼかし (放射状)"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "ねじれ"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "ノイズの追加"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "ノイズ"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "フラグメント"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "シャープ"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "鉛筆"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "浮き彫り"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "アウトライン"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "ぼかし (ガウス)"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "ランダムノイズ"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "タイルの反射"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "シード再生成"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "浮き彫り"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "ラベル1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "エンボス"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "ラベル"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "フラクタル"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "ふくらみ"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "ねじれ"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "描写"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "ノイズの低減"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "フラクタル (Julia)"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "テキスト"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "中央値"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "カーブ"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "フォント"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "レベル"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "太文字"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "自動レベル補正"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "斜体"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "色を反転"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "下線"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "ポスタリゼーション"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "モノクロ"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "色彩 / 彩度"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "セピア"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "明度 / コントラスト"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "レベル補正"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "入力ヒストグラム"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "入力"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "出力"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "輪郭を描く"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "出力ヒストグラム"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "塗りつぶす"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "自動"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "塗りつぶして輪郭を描く"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "リセット"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "赤"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "緑"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "青"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "許容値"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "リンク済み"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "転送マップ"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "明度"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "赤 "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "青 "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "新規レイヤーを追加"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "レイヤーを削除"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr "クリック - ドラッグで楕円の選択範囲を作成します。Shift を押しながらドラッグすると正円になります。"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "レイヤーを複製"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "レイヤーを統合"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "クリック - ドラッグで境界線を描いて選択範囲を作成します。"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "ファイルからインポート..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "水平方向に反転"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "垂直方向に反転"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "グラデーション"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "回転 / ズーム"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "レイヤーを上に移動"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "線形グラデーション"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "レイヤーを下に移動"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "反射形グラデーション"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "イメージファイルを開く"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "菱形グラデーション"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "ファイルからインポート"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "放射状グラデーション"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "新規..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "円錐形グラデーション"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "開く..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "最近使用したファイルを開く"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "色モード"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "閉じる"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "透過モード"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "保存"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "ブラシサイズ"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "名前を付けて保存..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "ブラシサイズを小さくします"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "印刷"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "ブラシサイズを大きくします"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "終了"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "ブラシで描画"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "新規"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "開く"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "背景色"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "イメージを開く"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "ファイルを開けません: {0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "エラー"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "新規イメージを開く前に、変更を \"{0}\" に保存しますか?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "イメージファイル"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "すべてのファイル"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "イメージファイルの保存"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} イメージ ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster イメージ (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "閉じる前に変更を \"{0}\" に保存しますか?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "ズーム"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "保存せずに閉じる"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr "左クリックのときはズームイン、右クリックのときはズームアウトします。クリック - ドラッグで選択した範囲にズームインします。"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "選択範囲を切り取る"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "リサイズ..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"クリック - ドラッグで面取り四角形を描きます。左クリックのときは前景色で、右クリックのときは背景色で描きます。Shift "
+"を押しながらドラッグすると面取り正方形になります。"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "キャンバスのサイズ..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "半径"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "90度回転 (時計回り)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "90度回転 (反時計回り)"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "180度回転"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "スポイト"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "フラット化"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr "左クリックで前景色、右クリックで背景色を選択。"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "元に戻す"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "やり直し"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "切り取り"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "以前のツールに切り替える"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "コピー"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "鉛筆ツールに切り替える"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "貼り付け"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "鉛筆"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "新規レイヤーに貼り付け"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "新規イメージに貼り付け"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "選択範囲を消去"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "選択範囲を塗りつぶす"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "選択範囲を反転"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "ドラッグで選択範囲のピクセルを移動します。"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "すべて選択"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "非表示"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "選択解除"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "ドッキング"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "拡大"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "自動的に隠す"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "縮小"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "ドックに格納可能"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "ウィンドウに合わせる"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "フローティング"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "選択範囲に合わせる"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "実際のサイズ"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "パーセント指定:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "網目"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "絶対サイズ指定:"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "ルーラー"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "幅:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
msgstr "ピクセル"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "インチ"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "高さ:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "センチメートル"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "アスペクト比を保持する"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "全画面表示"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "アンカー:"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "ウィンドウ"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "新規イメージのサイズ "
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta 公式サイト"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "レイヤーのプロパティ"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "バグの報告"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "名前:"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "表示"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "不透明度:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "一般"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "ファイル(_F)"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "ツール"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "編集(_E)"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "ショートカットキー"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "表示(_V)"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "アンチエイリアス"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "画像(_I)"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "通常ブレンド / 上書きブレンド"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "レイヤ(_L)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "イメージを水平方向に反転"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "調整(_A)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "イメージを垂直方向に反転"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "エフェクト(_C)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "レイヤーを水平方向に反転"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "ウィンドウ(_W)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "レイヤーを垂直方向に反転"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "ピクセル完了"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "ヘルプ(_H)"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "効果のレンダリング"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "ツール"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "コピー"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "ドキュメント"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
msgstr "レイヤー"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "履歴"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "スクリーンショットを撮るまでの遅延時間(秒):"
+
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "閉じる前に変更を \"{0}\" に保存しますか?"
+
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "保存しない場合、すべての変更が失われます。"
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "保存せずに閉じる"
+
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "レイヤーの不透明度"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "レイヤー名を変更"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "レイヤーを非表示"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "レイヤーを表示"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "イメージファイル"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "貼り付けはキャンセルされました"
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "クリップボードに画像はありません"
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "イメージファイルの保存"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pintaはこの画像形式での保存をサポートしていません"
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "同名のファイル \"{0}\" があります。置き換えますか?"
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "レンダリングに使用するスレッド数"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "バージョン"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "ライセンス"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "MIT X11 ライセンスの元で公開されました。"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "著作権"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "Pinta 貢献者"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "タイトル"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "パス名"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG 画質"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "画質 "
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "このバージョンの貢献者"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "過去の貢献者"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Kiyotaka NISHIBORI https://launchpad.net/~ml-nishibori-kiyotaka\n"
+" OTHUBO Jumpei https://launchpad.net/~otsubo-jumpei\n"
+" YannUbuntu https://launchpad.net/~yannubuntu\n"
+" Yuki Kodama https://launchpad.net/~kuy\n"
+" ytetsu https://launchpad.net/~ytetsu"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "翻訳:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Paint.NET プロジェクト:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "一部のアイコン:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Pinta について"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "バージョン情報"
+
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
#: PolarInversionEffect dialog
@@ -1420,17 +1567,61 @@ msgstr "プレビューは低品質(小さいイメージ、小さい角度)を
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr "ヒント: まず目の部分を選択ツールで選択するとうまくいきます。"
+#~ msgid "Help"
+#~ msgstr "ヘルプ"
+
+#~ msgid "Adjustments"
+#~ msgstr "調整"
+
+#~ msgid "Effects"
+#~ msgstr "効果"
+
+#~ msgid "File"
+#~ msgstr "ファイル"
+
+#~ msgid "Edit"
+#~ msgstr "編集"
+
+#~ msgid "View"
+#~ msgstr "表示"
+
+#~ msgid "Image"
+#~ msgstr "イメージ"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "保存しないで続行"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "ヒント : 右クリックでコントロールポイントを削除できます。"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "新規イメージを開く前に、変更を \"{0}\" に保存しますか?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster イメージ (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "アンチエイリアス"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "通常ブレンド / 上書きブレンド"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "新規作成の前に変更を \"{0}\" に保存しますか?"
+
#~ msgid "Show Pad"
#~ msgstr "パッドを表示"
diff --git a/po/messages-ko.po b/po/messages-ko.po
index c033b17..f823b83 100644
--- a/po/messages-ko.po
+++ b/po/messages-ko.po
@@ -7,669 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
"PO-Revision-Date: 2010-06-22 09:17+0000\n"
"Last-Translator: Jeongkyu Kim <jeongkyu.kim at gmail.com>\n"
"Language-Team: Korean <ko at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "프로그램 정보"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "창"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
msgstr ""
-#: Pinta/MainWindow.cs:259
-msgid "_File"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
msgstr ""
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr ""
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "캔버스 크기 변경"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
msgstr ""
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
msgstr ""
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr ""
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "이미지 크기 변경"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "도구"
-
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "팔레트"
-
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "문서"
-
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "레이어"
-
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "사용 기록"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "숨기기"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "자동 숨기기"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-"Launchpad Contributions:\n"
-" Jeongkyu Kim https://launchpad.net/~jeongkyu-kim"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "번역 :"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "버전 정보"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "제목"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "버전"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "경로"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "라이선스"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "저작권"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "이미지 크기 변경"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "너비:"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "픽셀"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "높이:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "비율 유지"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "레이어 속성"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "이름:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "투명도:"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "캔버스 크기 변경"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "저자:"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "새 이미지"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "새 이미지 크기 "
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "새 이미지를 만들기 전에 \"{0}\"에 대한 변경 사항을 저장하시겠습니까?"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "저장하지 않으면 모든 변경 사항을 잃어버리게 됩니다."
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "저장하지 않고 계속하기"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "레이어 투명도"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "레이어 이름 바꾸기"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "레이어 숨김"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "레이어 표시"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "레이블1"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "프로그램 정보"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "레이블"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "팔레트"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "새 이미지"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr ""
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -677,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -703,543 +680,711 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr ""
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "레이블1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "레이블"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "숨기기"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "자동 숨기기"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "너비:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "픽셀"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "높이:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "비율 유지"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "저자:"
+
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "새 이미지 크기 "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "레이어 속성"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "이름:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "투명도:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "창"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "도구"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "문서"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "레이어"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "사용 기록"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "저장하지 않으면 모든 변경 사항을 잃어버리게 됩니다."
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "레이어 투명도"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "레이어 이름 바꾸기"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "레이어 숨김"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "레이어 표시"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "버전"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "라이선스"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "저작권"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr ""
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "제목"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "경로"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jeongkyu Kim https://launchpad.net/~jeongkyu-kim"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "번역 :"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "버전 정보"
+
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
#: PolarInversionEffect dialog
@@ -1415,9 +1560,37 @@ msgstr ""
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+#~ msgid "Adjustments"
+#~ msgstr "조정"
+
+#~ msgid "Help"
+#~ msgstr "도움말"
+
+#~ msgid "Effects"
+#~ msgstr "효과"
+
+#~ msgid "File"
+#~ msgstr "파일"
+
+#~ msgid "Edit"
+#~ msgstr "편집"
+
+#~ msgid "View"
+#~ msgstr "보기"
+
+#~ msgid "Image"
+#~ msgstr "이미지"
+
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "저장하지 않고 계속하기"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "새 이미지를 만들기 전에 \"{0}\"에 대한 변경 사항을 저장하시겠습니까?"
+
#~ msgid "X :"
#~ msgstr "X :"
diff --git a/po/messages-lt.po b/po/messages-lt.po
index b5f1e01..e2241ec 100644
--- a/po/messages-lt.po
+++ b/po/messages-lt.po
@@ -7,670 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
"PO-Revision-Date: 2010-09-07 11:02+0000\n"
"Last-Translator: Rytis Slatkevičius <rytis.s at gmail.com>\n"
"Language-Team: Lithuanian <lt at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Apie"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Teptukas"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Failas"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Keisti"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr ""
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Rodymas"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr ""
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Paveikslėlis"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr ""
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Sluoksniai"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Efektai"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Langas"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Pagalba"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Įrankiai"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paletė"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Keisti paveikslėlio dydį"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumentai"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Sluoksniai"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Istorija"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Slėpti"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Plaukiojantis"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automatinis slėpimas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
msgstr ""
-"Launchpad Contributions:\n"
-" Mantas Kriaučiūnas https://launchpad.net/~mantas\n"
-" Rytis Slatkevičius https://launchpad.net/~rytis-s"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Vertėjai:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Dalis ikonų naudojama iš:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Apie Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Laidos informacija"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Pavadinimas"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versija"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Kelias"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licencija"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Autorinės teisės"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Keisti paveikslėlio dydį"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Plotis:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "tašk."
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Aukštis:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Sluoksnio savybės"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Pavadinimas:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Matomas"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Permatomumas:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Naujas paveikslėlis"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Išsaugoti pakeitimus paveikslėlyje \"{0}\" prieš sukuriant naują?"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Neišsaugojus, visi pakeitimai bus negrįžtamai prarasti."
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Tęsti neišsaugant"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Sluoksnio permatomumas"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Pervadinti sluoksnį"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Paslėpti sluoksnį"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Rodyti sluoksnį"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Apie"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Atsitiktinis triukšmas"
-
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Po pasirinkimo"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Neperjungti įrankio"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Perjungti į ankstenį įrankį"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Pieštukas"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Elipsinis pažymėjimas"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paletė"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Naujas paveikslėlis"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Stačiakampis apvaliais kampais"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr ""
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -678,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -704,543 +680,712 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr ""
-
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Atsitiktinis triukšmas"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr ""
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Elipsinis pažymėjimas"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr ""
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Teptukas"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr ""
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Stačiakampis apvaliais kampais"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Po pasirinkimo"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Neperjungti įrankio"
+
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Perjungti į ankstenį įrankį"
+
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Pieštukas"
+
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Slėpti"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automatinis slėpimas"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Plaukiojantis"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Plotis:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "tašk."
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Aukštis:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Sluoksnio savybės"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Pavadinimas:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Matomas"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Permatomumas:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Failas"
+
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Keisti"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Rodymas"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Paveikslėlis"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Sluoksniai"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Efektai"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Langas"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Pagalba"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Įrankiai"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumentai"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Sluoksniai"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Istorija"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Neišsaugojus, visi pakeitimai bus negrįžtamai prarasti."
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Sluoksnio permatomumas"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Pervadinti sluoksnį"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Paslėpti sluoksnį"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Rodyti sluoksnį"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versija"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licencija"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Autorinės teisės"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Pavadinimas"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Kelias"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Mantas Kriaučiūnas https://launchpad.net/~mantas\n"
+" Rytis Slatkevičius https://launchpad.net/~rytis-s"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Vertėjai:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Dalis ikonų naudojama iš:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Apie Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Laidos informacija"
+
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
#: PolarInversionEffect dialog
@@ -1419,6 +1564,13 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Tęsti neišsaugant"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Išsaugoti pakeitimus paveikslėlyje \"{0}\" prieš sukuriant naują?"
+
#~ msgid "X :"
#~ msgstr "X :"
diff --git a/po/messages-nb.po b/po/messages-nb.po
index 029e0c9..b251ce6 100644
--- a/po/messages-nb.po
+++ b/po/messages-nb.po
@@ -7,669 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
"PO-Revision-Date: 2010-09-07 11:03+0000\n"
"Last-Translator: Hender <simsalabimladen at gmail.com>\n"
"Language-Team: Norwegian Bokmal <nb at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Om"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Malerpensel"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Fil"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "R_ediger"
-
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Vis"
-
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Bilde"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr ""
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Lag"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "Justeringer"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Effekter"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Vindu"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Hjelp"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Verktøy"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palett"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenter"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Lag"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Endre størrelse på bilde"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Logg"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Skjul"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Kan festes til hovedvinduet"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flytende"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Skjul automatisk"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Feste/løsne"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-"Launchpad Contributions:\n"
-" Hender https://launchpad.net/~simsalabimladen"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Oversatt av:"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Basert på Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Bruker noen av ikonene fra:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Om Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Versjonsinformasjon"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Tittel"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versjon"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Sti"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Lisensavtale"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Utgitt under MIT X11-lisensen."
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Opphavsrett"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Endre størrelse på bilde"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Prosentvis:"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Etter absolutt størrelse:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Bredde:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "piksler"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Høyde:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Behold høyde/bredde-forhold"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Laginnstillinger"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Navn:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Synlig"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Tetthet:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Om"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palett"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -677,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -703,542 +680,710 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr ""
-
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr ""
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Malerpensel"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Skjul"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Feste/løsne"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Skjul automatisk"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Kan festes til hovedvinduet"
+
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flytende"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Prosentvis:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Etter absolutt størrelse:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Bredde:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "piksler"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Høyde:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Behold høyde/bredde-forhold"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Laginnstillinger"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Navn:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Synlig"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Tetthet:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Fil"
+
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "R_ediger"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Vis"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Bilde"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Lag"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "Justeringer"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Effekter"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Vindu"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Verktøy"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenter"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Lag"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Logg"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versjon"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Lisensavtale"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Utgitt under MIT X11-lisensen."
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Opphavsrett"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Tittel"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Sti"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Hender https://launchpad.net/~simsalabimladen"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Oversatt av:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Basert på Paint.NET:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Bruker noen av ikonene fra:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Om Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Versjonsinformasjon"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
diff --git a/po/messages.pot b/po/messages-nl.po
similarity index 70%
copy from po/messages.pot
copy to po/messages-nl.po
index 8ea8d21..01e46f6 100644
--- a/po/messages.pot
+++ b/po/messages-nl.po
@@ -1,383 +1,383 @@
-# Pinta Translatable Strings
-# Copyright (C) 2010 Pinta Contributors
-# This file is distributed under the same license as the Pinta package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Dutch translation for pinta
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the pinta package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2010.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: pinta\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
"POT-Creation-Date: 2010-10-31 12:19-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2010-12-20 17:48+0000\n"
+"Last-Translator: Tijmen Rekmans <Unknown>\n"
+"Language-Team: Dutch <nl at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
#: Pinta.Core/Classes/DocumentWorkspace.cs:160
#: Pinta.Core/Classes/DocumentWorkspace.cs:181
#: Pinta.Core/Actions/ViewActions.cs:200
msgid "Window"
-msgstr ""
+msgstr "Venster"
#: Pinta.Core/Classes/Document.cs:299
msgid "Layer"
-msgstr ""
+msgstr "Laag"
#: Pinta.Core/Classes/Document.cs:367
msgid "copy"
-msgstr ""
+msgstr "kopiëren"
#: Pinta.Core/Classes/Document.cs:589
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
msgid "Resize Canvas"
-msgstr ""
+msgstr "Canvasgrootte Aanpassen"
#: Pinta.Core/Classes/BaseTool.cs:146
msgid "Tool"
-msgstr ""
+msgstr "Gereedschap"
#: Pinta.Core/Classes/BaseTool.cs:204
msgid "Shortcut key"
-msgstr ""
+msgstr "Sneltoets"
#: Pinta.Core/Classes/BaseTool.cs:227
msgid "Normal Blending"
-msgstr ""
+msgstr "Standaard Menging"
#: Pinta.Core/Classes/BaseTool.cs:228
msgid "Overwrite"
-msgstr ""
+msgstr "Overschrijven"
#: Pinta.Core/Classes/BaseTool.cs:242
msgid "Antialiasing On"
-msgstr ""
+msgstr "Antialias Aan"
#: Pinta.Core/Classes/BaseTool.cs:243
msgid "Antialiasing Off"
-msgstr ""
+msgstr "Antialias Uit"
#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
msgid "Resize Image"
-msgstr ""
+msgstr "Formaat Wijzigen"
#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
msgid "Finish Pixels"
-msgstr ""
+msgstr "Pixels Beëindigen"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
#: Pinta.Core/Actions/ImageActions.cs:65
msgid "Rotate 180°"
-msgstr ""
+msgstr "Roteer 180°"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
msgid "Flip Image Horizontal"
-msgstr ""
+msgstr "Spiegel Afbeelding Horizontaal"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
msgid "Flip Image Vertical"
-msgstr ""
+msgstr "Spiegel Afbeelding Verticaal"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
#: Pinta.Core/Actions/ImageActions.cs:63
msgid "Rotate 90° Clockwise"
-msgstr ""
+msgstr "Roteer 90° Rechtsom"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
#: Pinta.Core/Actions/ImageActions.cs:64
msgid "Rotate 90° Counter-Clockwise"
-msgstr ""
+msgstr "Roteer 90° Linksom"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
msgid "Flip Layer Horizontal"
-msgstr ""
+msgstr "Spiegel Laag Horizontaal"
#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
msgid "Flip Layer Vertical"
-msgstr ""
+msgstr "Spiegel Laag Verticaal"
#: Pinta.Core/Effects/BaseEffect.cs:42
msgid "General"
-msgstr ""
+msgstr "Algemeen"
#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
#, csharp-format
msgid "{0} image ({1})"
-msgstr ""
+msgstr "{0} afbeelding ({1})"
#: Pinta.Core/Actions/ImageActions.cs:58
#: Pinta.Core/Actions/ImageActions.cs:181
msgid "Crop to Selection"
-msgstr ""
+msgstr "Bijsnijden tot Selectie"
#: Pinta.Core/Actions/ImageActions.cs:59
msgid "Resize..."
-msgstr ""
+msgstr "Formaat Wijzigen"
#: Pinta.Core/Actions/ImageActions.cs:60
msgid "Canvas Size..."
-msgstr ""
+msgstr "Canvasgrootte..."
#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
msgid "Flip Horizontal"
-msgstr ""
+msgstr "Spiegel Horizontaal"
#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
msgid "Flip Vertical"
-msgstr ""
+msgstr "Spiegel Verticaal"
#: Pinta.Core/Actions/ImageActions.cs:66
#: Pinta.Core/Actions/ImageActions.cs:127
msgid "Flatten"
-msgstr ""
+msgstr "Plat Maken"
#: Pinta.Core/Actions/ViewActions.cs:62
msgid "Zoom In"
-msgstr ""
+msgstr "Inzoomen"
#: Pinta.Core/Actions/ViewActions.cs:63
msgid "Zoom Out"
-msgstr ""
+msgstr "Uitzoomen"
#: Pinta.Core/Actions/ViewActions.cs:64
msgid "Zoom to Window"
-msgstr ""
+msgstr "Zoom naar Scherm"
#: Pinta.Core/Actions/ViewActions.cs:65
msgid "Zoom to Selection"
-msgstr ""
+msgstr "Zoom naar Selectie"
#: Pinta.Core/Actions/ViewActions.cs:66
msgid "Actual Size"
-msgstr ""
+msgstr "Werkelijke Grootte"
#: Pinta.Core/Actions/ViewActions.cs:67
msgid "Toolbar"
-msgstr ""
+msgstr "Werkbalk"
#: Pinta.Core/Actions/ViewActions.cs:68
msgid "Pixel Grid"
-msgstr ""
+msgstr "Pixelraster"
#: Pinta.Core/Actions/ViewActions.cs:69
msgid "Rulers"
-msgstr ""
+msgstr "Linialen"
#: Pinta.Core/Actions/ViewActions.cs:70
msgid "Pixels"
-msgstr ""
+msgstr "Pixels"
#: Pinta.Core/Actions/ViewActions.cs:71
msgid "Inches"
-msgstr ""
+msgstr "Inches"
#: Pinta.Core/Actions/ViewActions.cs:72
msgid "Centimeters"
-msgstr ""
+msgstr "Centimeters"
#: Pinta.Core/Actions/ViewActions.cs:73
msgid "Fullscreen"
-msgstr ""
+msgstr "Volledig Scherm"
#: Pinta.Core/Actions/ViewActions.cs:111
msgid "Ruler Units"
-msgstr ""
+msgstr "Eenheden"
#: Pinta.Core/Actions/LayerActions.cs:64
#: Pinta.Core/Actions/LayerActions.cs:283
msgid "Add New Layer"
-msgstr ""
+msgstr "Voeg Nieuwe Laag Toe"
#: Pinta.Core/Actions/LayerActions.cs:65
#: Pinta.Core/Actions/LayerActions.cs:266
msgid "Delete Layer"
-msgstr ""
+msgstr "Laag Verwijderen"
#: Pinta.Core/Actions/LayerActions.cs:66
#: Pinta.Core/Actions/LayerActions.cs:257
msgid "Duplicate Layer"
-msgstr ""
+msgstr "Laag Dupliceren"
#: Pinta.Core/Actions/LayerActions.cs:67
#: Pinta.Core/Actions/LayerActions.cs:235
msgid "Merge Layer Down"
-msgstr ""
+msgstr "Laag Omlaag Samenvoegen"
#: Pinta.Core/Actions/LayerActions.cs:68
msgid "Import from File..."
-msgstr ""
+msgstr "Importeren Uit Bestand..."
#: Pinta.Core/Actions/LayerActions.cs:71
msgid "Rotate / Zoom"
-msgstr ""
+msgstr "Roteer / Zoom"
#: Pinta.Core/Actions/LayerActions.cs:72
#: Pinta.Core/Actions/LayerActions.cs:213
msgid "Move Layer Up"
-msgstr ""
+msgstr "Laag Omhoog Verplaatsen"
#: Pinta.Core/Actions/LayerActions.cs:73
#: Pinta.Core/Actions/LayerActions.cs:224
msgid "Move Layer Down"
-msgstr ""
+msgstr "Laag Omlaag Verplaatsen"
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
-msgstr ""
+msgid "Layer Properties..."
+msgstr "Laag Eigenschappen..."
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
msgid "Open Image File"
-msgstr ""
+msgstr "Open Afbeeldingsbestand"
#: Pinta.Core/Actions/LayerActions.cs:179
msgid "Import From File"
-msgstr ""
+msgstr "Importeren Uit Bestand"
#: Pinta.Core/Actions/WindowActions.cs:45
msgid "Save All"
-msgstr ""
+msgstr "Alles Opslaan"
#: Pinta.Core/Actions/WindowActions.cs:46
msgid "Close All"
-msgstr ""
+msgstr "Alles Sluiten"
#: Pinta.Core/Actions/HelpActions.cs:50
msgid "Pinta Website"
-msgstr ""
+msgstr "Pinta Website"
#: Pinta.Core/Actions/HelpActions.cs:51
msgid "File a Bug"
-msgstr ""
+msgstr "Rapporteer een Bug"
#: Pinta.Core/Actions/HelpActions.cs:52
msgid "Translate This Application"
-msgstr ""
+msgstr "Vertaal Deze Applicatie"
#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
msgid "About"
-msgstr ""
+msgstr "Over"
#: Pinta.Core/Actions/FileActions.cs:54
msgid "New..."
-msgstr ""
+msgstr "Nieuw..."
#: Pinta.Core/Actions/FileActions.cs:55
msgid "New Screenshot..."
-msgstr ""
+msgstr "Nieuwe Schermafdruk..."
#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
msgid "Open..."
-msgstr ""
+msgstr "Openen..."
#: Pinta.Core/Actions/FileActions.cs:57
msgid "Open Recent"
-msgstr ""
+msgstr "Open Recent"
#: Pinta.Core/Actions/FileActions.cs:64
msgid "Close"
-msgstr ""
+msgstr "Sluiten"
#: Pinta.Core/Actions/FileActions.cs:65
msgid "Save"
-msgstr ""
+msgstr "Opslaan"
#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
msgid "Save As..."
-msgstr ""
+msgstr "Opslaan Als..."
#: Pinta.Core/Actions/FileActions.cs:67
msgid "Print"
-msgstr ""
+msgstr "Afdrukken"
#: Pinta.Core/Actions/FileActions.cs:68
msgid "Quit"
-msgstr ""
+msgstr "Afsluiten"
#: Pinta.Core/Actions/FileActions.cs:70
msgid "New"
-msgstr ""
+msgstr "Nieuw"
#: Pinta.Core/Actions/FileActions.cs:71
msgid "Open"
-msgstr ""
+msgstr "Openen"
#: Pinta.Core/Actions/EditActions.cs:65
msgid "Undo"
-msgstr ""
+msgstr "Ongedaan Maken"
#: Pinta.Core/Actions/EditActions.cs:66
msgid "Redo"
-msgstr ""
+msgstr "Opnieuw"
#: Pinta.Core/Actions/EditActions.cs:67
msgid "Cut"
-msgstr ""
+msgstr "Knippen"
#: Pinta.Core/Actions/EditActions.cs:68
msgid "Copy"
-msgstr ""
+msgstr "Kopiëren"
#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
msgid "Paste"
-msgstr ""
+msgstr "Plakken"
#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
msgid "Paste Into New Layer"
-msgstr ""
+msgstr "Plak In Nieuwe Laag"
#: Pinta.Core/Actions/EditActions.cs:71
msgid "Paste Into New Image"
-msgstr ""
+msgstr "Plak Als Nieuwe Afbeelding"
#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
#: Pinta.Core/Actions/EditActions.cs:296
msgid "Erase Selection"
-msgstr ""
+msgstr "Wis Selectie"
#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
msgid "Fill Selection"
-msgstr ""
+msgstr "Selectie Vullen"
#: Pinta.Core/Actions/EditActions.cs:74
msgid "Invert Selection"
-msgstr ""
+msgstr "Selectie Omkeren"
#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
msgid "Select All"
-msgstr ""
+msgstr "Alles Selecteren"
#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
msgid "Deselect"
-msgstr ""
+msgstr "Deselecteren"
#: Pinta.Core/Actions/EditActions.cs:80
msgid "Reset to Default"
-msgstr ""
+msgstr "Naar Standaard Terugzetten"
#: Pinta.Core/Actions/EditActions.cs:81
msgid "Set Number of Colors"
-msgstr ""
+msgstr "Aantal Kleuren Instellen"
#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
#: Pinta/MainWindow.cs:569
msgid "Palette"
-msgstr ""
+msgstr "Palet"
#: Pinta.Core/Actions/EditActions.cs:313
msgid "Open Palette File"
-msgstr ""
+msgstr "Paletbestand Openen"
#: Pinta.Core/Actions/EditActions.cs:320
msgid "Palette files (*.txt, *.gpl)"
-msgstr ""
+msgstr "Paletbestanden (*.txt, *.gpl)"
#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
msgid "All files"
-msgstr ""
+msgstr "Alle Bestanden"
#: Pinta.Core/Actions/EditActions.cs:340
#, csharp-format
@@ -385,171 +385,178 @@ msgid ""
"Could not open palette file: {0}.\n"
"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
+"Kan Paletbestand niet openen:{0}.\n"
+"Verifieer dat dit een valide GIMP of Paint.NET palet is."
#: Pinta.Core/Actions/EditActions.cs:341
#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
msgid "Error"
-msgstr ""
+msgstr "Fout"
#: Pinta.Core/Actions/EditActions.cs:353
msgid "Save Palette File"
-msgstr ""
+msgstr "Paletbestand Opslaan"
#: Pinta.Core/Actions/EditActions.cs:359
msgid "Paint.NET palette (*.txt)"
-msgstr ""
+msgstr "Paint.NET palet (*.txt)"
#: Pinta.Core/Actions/EditActions.cs:364
msgid "GIMP palette (*.gpl)"
-msgstr ""
+msgstr "GIMP palet (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Niet Opgeslagen Bestand {0}"
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
-msgstr ""
+msgstr "Achtergrond"
#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
msgid "New Image"
-msgstr ""
+msgstr "Nieuwe Afbeelding"
#: Pinta.Core/Managers/WorkspaceManager.cs:176
msgid "Open Image"
-msgstr ""
+msgstr "Afbeelding Openen"
#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
msgid "Could not open file: {0}"
-msgstr ""
+msgstr "Kan bestand niet openen: {0}"
#: Pinta.Core/Managers/LivePreviewManager.cs:220
msgid "Rendering Effect"
-msgstr ""
+msgstr "Render Effect"
#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
msgid "Posterize"
-msgstr ""
+msgstr "Posterize"
#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
msgid "Invert Colors"
-msgstr ""
+msgstr "Kleuren Omkeren"
#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
msgid "Levels"
-msgstr ""
+msgstr "Niveaus"
#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
msgid "Black and White"
-msgstr ""
+msgstr "Zwart / Wit"
#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
msgid "Auto Level"
-msgstr ""
+msgstr "Automatisch Niveaus Bepalen"
#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
msgid "Hue / Saturation"
-msgstr ""
+msgstr "Tint / Verzadiging"
#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
msgid "Brightness / Contrast"
-msgstr ""
+msgstr "Helderheid / Contrast"
#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
msgid "Sepia"
-msgstr ""
+msgstr "Sepia"
#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
msgid "Curves"
-msgstr ""
+msgstr "Curven"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
msgid "Transfer Map"
-msgstr ""
+msgstr "Transferkaart"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
msgid "RGB"
-msgstr ""
+msgstr "RGB"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
msgid "Luminosity"
-msgstr ""
+msgstr "Luminantie"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
msgid "(256, 256)"
-msgstr ""
+msgstr "(256, 256)"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
msgid "Red "
-msgstr ""
+msgstr "Rood "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
msgid "Green"
-msgstr ""
+msgstr "Groen"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
msgid "Blue "
-msgstr ""
+msgstr "Blauw "
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
msgid "Reset"
-msgstr ""
+msgstr "Herstellen"
#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
msgid "Tip: Right-click to remove control points."
-msgstr ""
+msgstr "Tip: Rechtermuisklik om controlepunten te verwijderen"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
msgid "Levels Adjustment"
-msgstr ""
+msgstr "Niveaus Aanpassen"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
msgid "Input Histogram"
-msgstr ""
+msgstr "Invoer Histogram"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
msgid "Input"
-msgstr ""
+msgstr "Invoer"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
msgid "Output"
-msgstr ""
+msgstr "Uitvoer"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
msgid "Output Histogram"
-msgstr ""
+msgstr "Uitvoer Histogram"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
msgid "Auto"
-msgstr ""
+msgstr "Automatisch"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
msgid "Red"
-msgstr ""
+msgstr "Rood"
#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
msgid "Blue"
-msgstr ""
+msgstr "Blauw"
#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
msgid "Linked"
-msgstr ""
+msgstr "Gekoppeld"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
msgid "Pencil Sketch"
-msgstr ""
+msgstr "Potloodtekening"
#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
#: Pinta.Effects/Effects/InkSketchEffect.cs:42
msgid "Artistic"
-msgstr ""
+msgstr "Artistiek"
#: Pinta.Effects/Effects/UnfocusEffect.cs:28
msgid "Unfocus"
-msgstr ""
+msgstr "Ontfocussen"
#: Pinta.Effects/Effects/UnfocusEffect.cs:36
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
@@ -558,11 +565,11 @@ msgstr ""
#: Pinta.Effects/Effects/FragmentEffect.cs:34
#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
msgid "Blurs"
-msgstr ""
+msgstr "Vervagen"
#: Pinta.Effects/Effects/BulgeEffect.cs:26
msgid "Bulge"
-msgstr ""
+msgstr "Bolvorm"
#: Pinta.Effects/Effects/BulgeEffect.cs:34
#: Pinta.Effects/Effects/PixelateEffect.cs:38
@@ -571,554 +578,581 @@ msgstr ""
#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
#: Pinta.Effects/Effects/TwistEffect.cs:34
msgid "Distort"
-msgstr ""
+msgstr "Vervormen"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
msgid "Mandelbrot Fractal"
-msgstr ""
+msgstr "Mandelbrot Fractal"
#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
#: Pinta.Effects/Effects/CloudsEffect.cs:38
msgid "Render"
-msgstr ""
+msgstr "Renderen"
#: Pinta.Effects/Effects/MedianEffect.cs:29
msgid "Median"
-msgstr ""
+msgstr "Mediaan"
#: Pinta.Effects/Effects/MedianEffect.cs:37
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
msgid "Noise"
-msgstr ""
+msgstr "Ruis"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
-msgstr ""
+msgstr "Pixelvorming"
#: Pinta.Effects/Effects/SharpenEffect.cs:26
msgid "Sharpen"
-msgstr ""
+msgstr "Verscherpen"
#: Pinta.Effects/Effects/SharpenEffect.cs:34
#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
-msgstr ""
+msgstr "Foto"
#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
msgid "Oil Painting"
-msgstr ""
+msgstr "Olieverf"
#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
msgid "Gaussian Blur"
-msgstr ""
+msgstr "Gaussians Vervagen"
#: Pinta.Effects/Effects/GlowEffect.cs:31
msgid "Glow"
-msgstr ""
+msgstr "Gloed"
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
msgid "Soften Portrait"
-msgstr ""
+msgstr "Portret Verzachten"
#: Pinta.Effects/Effects/TileEffect.cs:26
msgid "Tile Reflection"
-msgstr ""
+msgstr "Tegelreflectie"
#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
msgid "Red Eye Removal"
-msgstr ""
+msgstr "Rode Ogen Verwijderen"
#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
msgid "Frosted Glass"
-msgstr ""
+msgstr "Matglas"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
-msgstr ""
+msgstr "Randen Detecteren"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
#: Pinta.Effects/Effects/EmbossEffect.cs:34
#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
-msgstr ""
+msgstr "Stileren"
#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
msgid "Julia Fractal"
-msgstr ""
+msgstr "Julia Fractal"
#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
msgid "Motion Blur"
-msgstr ""
+msgstr "Bewegingsvervaging"
#: Pinta.Effects/Effects/EmbossEffect.cs:26
msgid "Emboss"
-msgstr ""
+msgstr "Emboss"
#: Pinta.Effects/Effects/InkSketchEffect.cs:34
msgid "Ink Sketch"
-msgstr ""
+msgstr "Inkttekening"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
-msgstr ""
+msgstr "Zoomvervaging"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
-msgstr ""
+msgstr "Polaire Inversie"
#: Pinta.Effects/Effects/CloudsEffect.cs:30
msgid "Clouds"
-msgstr ""
+msgstr "Wolken"
#: Pinta.Effects/Effects/FragmentEffect.cs:26
msgid "Fragment"
-msgstr ""
+msgstr "Fragmenteren"
#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
msgid "Reduce Noise"
-msgstr ""
+msgstr "Ruis Verminderen"
#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
msgid "Radial Blur"
-msgstr ""
+msgstr "Radiale Vervaging"
#: Pinta.Effects/Effects/TwistEffect.cs:26
msgid "Twist"
-msgstr ""
+msgstr "Spiraal"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
-msgstr ""
+msgstr "Ruis Toevoegen"
#: Pinta.Effects/Effects/ReliefEffect.cs:45
msgid "Relief"
-msgstr ""
+msgstr "Reliëf"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
-msgstr ""
+msgstr "Omlijnen"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
msgid "Random Noise"
-msgstr ""
+msgstr "Willekeurige Ruis"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
msgid "Reseed"
-msgstr ""
+msgstr "Hergenereren"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
msgid "label1"
-msgstr ""
+msgstr "label1"
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
msgid "label"
-msgstr ""
+msgstr "label"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Primaire Kleur Kiezen"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
-msgstr ""
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Secundaire Kleur Kiezen"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Paletkleur Kiezen"
#: Pinta.Tools/PanTool.cs:38
msgid "Pan"
-msgstr ""
+msgstr "Verschuiven"
#: Pinta.Tools/PanTool.cs:44
msgid "Click and drag to navigate image."
-msgstr ""
+msgstr "Klik en sleep om door afbeelding te navigeren."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
-msgstr ""
+msgstr "Tekst"
#: Pinta.Tools/TextTool.cs:44
msgid ""
"Left click to place cursor, then type desired text. Text color is primary "
"color."
msgstr ""
+"Klik om cursor te plaatsen en tekst te typen. Tekstkleur is primaire kleur."
#: Pinta.Tools/TextTool.cs:144
msgid "Font"
-msgstr ""
+msgstr "Lettertype"
#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
-msgstr ""
+msgstr "Vetgedrukt"
#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
-msgstr ""
+msgstr "Cursief"
#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
-msgstr ""
+msgstr "Onderstreept"
#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
-msgstr ""
+msgstr "Links Uitlijnen"
#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
-msgstr ""
+msgstr "Centreren"
#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
-msgstr ""
+msgstr "Rechts Uitlijnen"
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
-msgstr ""
+msgstr "Rechthoek"
#: Pinta.Tools/RectangleTool.cs:44
msgid ""
"Click and drag to draw a rectangle (right click for secondary color). Hold "
"shift to constrain to a square."
msgstr ""
+"Klik en sleep om rechthoek te tekenen (rechtermuis voor secundaire kleur). "
+"Houd shift ingedrukt voor een vierkant."
#: Pinta.Tools/FreeformShapeTool.cs:53
msgid "Freeform Shape"
-msgstr ""
+msgstr "Vrije Vorm"
#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
"Left click to draw with primary color, right click to draw with secondary "
"color."
msgstr ""
+"Linkermuisklik voor primaire kleur, rechtermuisklik voor secundaire kleur."
#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
msgid "Fill Style"
-msgstr ""
+msgstr "Vulling Stijl"
#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
msgid "Outline Shape"
-msgstr ""
+msgstr "Omlijnen"
#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
msgid "Fill Shape"
-msgstr ""
+msgstr "Opvullen"
#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
msgid "Fill and Outline Shape"
-msgstr ""
+msgstr "Opvullen en Omlijnen"
#: Pinta.Tools/FloodTool.cs:72
msgid "Flood Mode"
-msgstr ""
+msgstr "Vulmodus"
#: Pinta.Tools/FloodTool.cs:79
msgid "Contiguous"
-msgstr ""
+msgstr "Aangrenzend"
#: Pinta.Tools/FloodTool.cs:80
msgid "Global"
-msgstr ""
+msgstr "Globaal"
#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
msgid "Tolerance"
-msgstr ""
+msgstr "Tolerantie"
#: Pinta.Tools/LineCurveTool.cs:38
msgid "Line"
-msgstr ""
+msgstr "Lijn"
#: Pinta.Tools/LineCurveTool.cs:44
-msgid "Left click to draw with primary color, right click for secondary color."
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
+"Linkermuisklik voor primaire kleur, rechtermuisklik voor secundaire kleur."
#: Pinta.Tools/MoveSelectionTool.cs:42
msgid "Move Selection"
-msgstr ""
+msgstr "Selectie Verplaatsen"
#: Pinta.Tools/MoveSelectionTool.cs:48
msgid "Drag the selection to move selection outline."
-msgstr ""
+msgstr "Sleep de selectie om selectieomlijning te verplaatsen."
#: Pinta.Tools/RectangleSelectTool.cs:38
msgid "Rectangle Select"
-msgstr ""
+msgstr "Rechthoekselectie"
#: Pinta.Tools/RectangleSelectTool.cs:44
msgid ""
"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
"square."
msgstr ""
+"Klik en sleep om rechthoek te tekenen. Houd shift ingedrukt voor een "
+"vierkant."
#: Pinta.Tools/MagicWandTool.cs:46
msgid "Magic Wand Select"
-msgstr ""
+msgstr "Toverstafselectie"
#: Pinta.Tools/MagicWandTool.cs:54
msgid "Click to select region of similar color."
-msgstr ""
+msgstr "Klik om regio met gelijkwaardige kleur te selecteren."
#: Pinta.Tools/EllipseSelectTool.cs:38
msgid "Ellipse Select"
-msgstr ""
+msgstr "Ellips-selectie"
#: Pinta.Tools/EllipseSelectTool.cs:44
msgid ""
"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
"circle."
msgstr ""
+"Klik en sleep voor een elliptische selectie. Houd shift ingedrukt voor een "
+"cirkel."
#: Pinta.Tools/LassoSelectTool.cs:45
msgid "Lasso Select"
-msgstr ""
+msgstr "Lassoselectie"
#: Pinta.Tools/LassoSelectTool.cs:47
msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+msgstr "Klik en sleep om een selectie te tekenen."
#: Pinta.Tools/PaintBucketTool.cs:40
msgid "Paint Bucket"
-msgstr ""
+msgstr "Vullen"
#: Pinta.Tools/PaintBucketTool.cs:46
msgid ""
"Left click to fill a region with the primary color, right click to fill with "
"the secondary color."
msgstr ""
+"Linkermuisklik om te vullen met primaire kleur, rechtermuisklik om te vullen "
+"met secundaire kleur."
#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
msgid "Gradient"
-msgstr ""
+msgstr "Gradiënt"
#: Pinta.Tools/GradientTool.cs:73
msgid ""
"Click and drag to draw gradient from primary to secondary color. Right "
"click to reverse."
msgstr ""
+"Klik en sleep om gradiënt van primaire naar secunaire kleur te tekenen. "
+"Rechtermuisklik om kleuren om te draaien."
#: Pinta.Tools/GradientTool.cs:183
msgid "Linear Gradient"
-msgstr ""
+msgstr "Lineaire Gradiënt"
#: Pinta.Tools/GradientTool.cs:184
msgid "Linear Reflected Gradient"
-msgstr ""
+msgstr "Lineair Gereflecteerde Gradiënt"
#: Pinta.Tools/GradientTool.cs:185
msgid "Linear Diamond Gradient"
-msgstr ""
+msgstr "Lineaire Diamant Gradiënt"
#: Pinta.Tools/GradientTool.cs:186
msgid "Radial Gradient"
-msgstr ""
+msgstr "Radiale Gradiënt"
#: Pinta.Tools/GradientTool.cs:187
msgid "Conical Gradient"
-msgstr ""
+msgstr "Conische Gradiënt"
#: Pinta.Tools/GradientTool.cs:195
msgid "Mode"
-msgstr ""
+msgstr "Modus"
#: Pinta.Tools/GradientTool.cs:202
msgid "Color Mode"
-msgstr ""
+msgstr "Kleurmodus"
#: Pinta.Tools/GradientTool.cs:203
msgid "Transparency Mode"
-msgstr ""
+msgstr "Transparantiemodus"
#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
msgid "Brush width"
-msgstr ""
+msgstr "Penceeldikte"
#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
msgid "Decrease brush size"
-msgstr ""
+msgstr "Penceeldikte Verkleinen"
#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
msgid "Increase brush size"
-msgstr ""
+msgstr "Penceeldikte Vergroten"
#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
msgid "Paintbrush"
-msgstr ""
+msgstr "Penceel"
#: Pinta.Tools/PaintBrushTool.cs:63
msgid "Type"
-msgstr ""
+msgstr "Soort"
#: Pinta.Tools/RecolorTool.cs:59
msgid "Recolor"
-msgstr ""
+msgstr "Verkleuren"
#: Pinta.Tools/RecolorTool.cs:61
msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
+msgstr "Linkermuisklik om secundaire kleur door primaire kleur te vervangen"
#: Pinta.Tools/Brushes/PlainBrush.cs:38
msgid "Normal"
-msgstr ""
+msgstr "Normaal"
#: Pinta.Tools/Brushes/CircleBrush.cs:38
msgid "Circles"
-msgstr ""
+msgstr "Cirkels"
#: Pinta.Tools/Brushes/SquaresBrush.cs:40
msgid "Squares"
-msgstr ""
+msgstr "Vierkanten"
#: Pinta.Tools/Brushes/SplatterBrush.cs:38
msgid "Splatter"
-msgstr ""
+msgstr "Spatten"
#: Pinta.Tools/Brushes/GridBrush.cs:38
msgid "Grid"
-msgstr ""
+msgstr "Raster"
#: Pinta.Tools/EllipseTool.cs:38
msgid "Ellipse"
-msgstr ""
+msgstr "Ellips"
#: Pinta.Tools/EllipseTool.cs:44
msgid ""
"Click and drag to draw an ellipse (right click for secondary color). Hold "
"shift to constrain to a circle."
msgstr ""
+"Klik en sleep om ellips te tekenen. Houd shift ingedrukt voor een cirkel."
#: Pinta.Tools/CloneStampTool.cs:43
msgid "Clone Stamp"
-msgstr ""
+msgstr "Kloonstempel"
#: Pinta.Tools/CloneStampTool.cs:48
msgid "Ctrl-left click to set origin, left click to paint."
-msgstr ""
+msgstr "Ctrl-klik voor bronselectie, klik om te tekenen."
#: Pinta.Tools/ZoomTool.cs:49
msgid "Zoom"
-msgstr ""
+msgstr "Zoomen"
#: Pinta.Tools/ZoomTool.cs:55
msgid ""
"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
"selection."
msgstr ""
+"Linkermuisklik voor inzoomen. Rechtermuisklik voor uitzoomen. Klik en sleep "
+"om in te zoomen op selectie."
#: Pinta.Tools/RoundedRectangleTool.cs:44
msgid "Rounded Rectangle"
-msgstr ""
+msgstr "Afgerond rechthoek"
#: Pinta.Tools/RoundedRectangleTool.cs:50
msgid ""
"Click and drag to draw a rounded rectangle (right click for secondary "
"color). Hold shift to constrain."
msgstr ""
+"Klik en sleep om afgerond rechthoek te tekenen (rechtermuis voor secundaire "
+"kleur). Houd shift ingedrukt voor een vierkant."
#: Pinta.Tools/RoundedRectangleTool.cs:83
msgid "Radius"
-msgstr ""
+msgstr "Radius"
#: Pinta.Tools/RoundedRectangleTool.cs:88
msgid "Decrease rectangle's corner radius"
-msgstr ""
+msgstr "Hoekradius van rechthoek verkleinen"
#: Pinta.Tools/RoundedRectangleTool.cs:102
msgid "Increase rectangle's corner radius"
-msgstr ""
+msgstr "Hoekradius van rechthoek vergroten"
#: Pinta.Tools/ColorPickerTool.cs:44
msgid "Color Picker"
-msgstr ""
+msgstr "Pipet"
#: Pinta.Tools/ColorPickerTool.cs:50
msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Linkermuisklik voor kiezen primaire kleur. Rechtermuisklik voor kiezen "
+"secundaire kleur"
#: Pinta.Tools/ColorPickerTool.cs:62
msgid "After select"
-msgstr ""
+msgstr "Na selecteren"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Do not switch tool"
-msgstr ""
+msgstr "Gereedschap behouden"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to previous tool"
-msgstr ""
+msgstr "Ga naar vorig gereedschap"
#: Pinta.Tools/ColorPickerTool.cs:68
msgid "Switch to Pencil tool"
-msgstr ""
+msgstr "Potloodgereedschap"
#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
msgid "Pencil"
-msgstr ""
+msgstr "Potlood"
#: Pinta.Tools/EraserTool.cs:45
msgid "Eraser"
-msgstr ""
+msgstr "Gum"
#: Pinta.Tools/EraserTool.cs:47
msgid "Click and drag to erase a portion of the image."
-msgstr ""
+msgstr "Klik en sleep om deel van afbeelding te wissen."
#: Pinta.Tools/PencilTool.cs:50
msgid ""
"Left click to draw freeform, one-pixel wide lines with the primary color, "
"right click to use the secondary color."
msgstr ""
+"Klik om vrije vorm, één pixel brede lijnen in primaire kleur te tekenen. "
+"Rechtermuisklik voor secundaire kleur."
#: Pinta.Tools/MoveSelectedTool.cs:42
msgid "Move Selected Pixels"
-msgstr ""
+msgstr "Geselecteerde Pixels Verplaatsen"
#: Pinta.Tools/MoveSelectedTool.cs:48
msgid "Drag the selection to move selected content."
-msgstr ""
+msgstr "Sleep de selectie om de inhoud te verplaatsen."
#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
msgid "Hide"
-msgstr ""
+msgstr "Verbergen"
#: Pinta/DockLibrary/DockItemContainer.cs:190
msgid "Dock"
-msgstr ""
+msgstr "Dock"
#: Pinta/DockLibrary/DockItemContainer.cs:194
#: Pinta/DockLibrary/DockItem.cs:502
msgid "Auto Hide"
-msgstr ""
+msgstr "Automatisch Verbergen"
#: Pinta/DockLibrary/DockItem.cs:485
msgid "Dockable"
-msgstr ""
+msgstr "Dockable"
#: Pinta/DockLibrary/DockItem.cs:493
msgid "Floating"
-msgstr ""
+msgstr "Zwevend"
#: Pinta/Options.cs:486
msgid "OptionName"
-msgstr ""
+msgstr "OptieNaam"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
msgid "By percentage:"
-msgstr ""
+msgstr "Met Percentage:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
msgid "By absolute size:"
-msgstr ""
+msgstr "Met Absolute Grootte"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
msgid "Width:"
-msgstr ""
+msgstr "Breedte:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
@@ -1127,243 +1161,256 @@ msgstr ""
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
msgid "pixels"
-msgstr ""
+msgstr "pixels"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
msgid "Height:"
-msgstr ""
+msgstr "Hoogte:"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
msgid "Maintain aspect ratio"
-msgstr ""
+msgstr "Verhoudingen behouden"
#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
msgid "Anchor:"
-msgstr ""
+msgstr "Vastzetten:"
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
msgid "New Image Size "
-msgstr ""
+msgstr "Nieuwe Afbeeldingsgrootte "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Laageigenschappen"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
-msgstr ""
+msgstr "Naam:"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
msgid "Visible"
-msgstr ""
+msgstr "Zichtbaar"
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
msgid "Opacity:"
-msgstr ""
+msgstr "Dekking:"
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "…"
+
+#: Pinta/MainWindow.cs:450
msgid "_File"
-msgstr ""
+msgstr "_Bestand"
#: Pinta/MainWindow.cs:449
msgid "_Edit"
-msgstr ""
+msgstr "B_ewerken"
#: Pinta/MainWindow.cs:451
msgid "_View"
-msgstr ""
+msgstr "Weerga_ve"
#: Pinta/MainWindow.cs:454
msgid "_Image"
-msgstr ""
+msgstr "Afbeeld_ing"
#: Pinta/MainWindow.cs:455
msgid "_Layers"
-msgstr ""
+msgstr "_Laag"
#: Pinta/MainWindow.cs:456
msgid "_Adjustments"
-msgstr ""
+msgstr "_Aanpassingen"
#: Pinta/MainWindow.cs:457
msgid "Effe_cts"
-msgstr ""
+msgstr "Effe_cten"
#: Pinta/MainWindow.cs:459
msgid "_Window"
-msgstr ""
+msgstr "_Venster"
#: Pinta/MainWindow.cs:463
msgid "Tool Windows"
-msgstr ""
+msgstr "Gereedschapvensters"
#: Pinta/MainWindow.cs:467
msgid "_Help"
-msgstr ""
+msgstr "_Help"
#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
msgid "Tools"
-msgstr ""
+msgstr "Gereedschappen"
#: Pinta/MainWindow.cs:578
msgid "Documents"
-msgstr ""
+msgstr "Documenten"
#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
msgid "Layers"
-msgstr ""
+msgstr "Lagen"
#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
msgid "History"
-msgstr ""
+msgstr "Geschiedenis"
#: Pinta/DialogHandlers.cs:99
msgid "Take Screenshot"
-msgstr ""
+msgstr "Schermafdruk Maken"
#: Pinta/DialogHandlers.cs:100
msgid "Delay before taking a screenshot (seconds):"
-msgstr ""
+msgstr "Vertraging voor maken schermafbeelding (seconden):"
#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+msgstr "Aanpassingen aan afbeelding \"{0}\" opslaan voor sluiten?"
#: Pinta/DialogHandlers.cs:140
msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
+msgstr "Als U niet opslaat, zullen alle veranderingen verloren gaan."
#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
-msgstr ""
+msgstr "Sluiten zonder opslaan"
#: Pinta/DialogHandlers.cs:174
msgid "Resize Palette"
-msgstr ""
+msgstr "Pas Paletgrootte aan"
#: Pinta/DialogHandlers.cs:175
msgid "New palette size:"
-msgstr ""
+msgstr "Nieuw Paletgrootte:"
#: Pinta/DialogHandlers.cs:301
msgid "Layer Opacity"
-msgstr ""
+msgstr "Laagdekking"
#: Pinta/DialogHandlers.cs:306
msgid "Rename Layer"
-msgstr ""
+msgstr "Laag Hernoemen"
#: Pinta/DialogHandlers.cs:311
msgid "Hide Layer"
-msgstr ""
+msgstr "Laag Verbergen"
#: Pinta/DialogHandlers.cs:311
msgid "Show Layer"
-msgstr ""
+msgstr "Laag Tonen"
#: Pinta/DialogHandlers.cs:404
msgid "Image files"
-msgstr ""
+msgstr "Afbeeldingsbestanden"
#: Pinta/DialogHandlers.cs:461
msgid "Paste cancelled"
-msgstr ""
+msgstr "Plakken geannuleerd"
#: Pinta/DialogHandlers.cs:462
msgid "The clipboard does not contain an image"
-msgstr ""
+msgstr "Het klembord bevat geen afbeelding"
#: Pinta/DialogHandlers.cs:495
msgid "Save Image File"
-msgstr ""
+msgstr "Afbeelding Opslaan"
#: Pinta/DialogHandlers.cs:575
msgid "Pinta does not support saving images in this file format."
-msgstr ""
+msgstr "Pinta ondersteunt het opslaan in dit bestandsformaat niet."
#: Pinta/DialogHandlers.cs:593
#, csharp-format
msgid "A file named \"{0}\" already exists. Do you want to replace it?"
-msgstr ""
+msgstr "Bestand genaamd \"{0}\" bestaat reeds. Wilt u deze vervangen?"
#: Pinta/DialogHandlers.cs:594
#, csharp-format
msgid ""
"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
+"Bestand bestaat reeds in \"{1}\". Vervangen zal de inhoud overschrijven."
#: Pinta/Main.cs:68
msgid "number of threads to use for rendering"
-msgstr ""
+msgstr "Aantal te gebruiken threads voor renderen"
#: Pinta/Dialogs/AboutPintaTabPage.cs:41
#: Pinta/Dialogs/VersionInformationTabPage.cs:50
msgid "Version"
-msgstr ""
+msgstr "Versie"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "License"
-msgstr ""
+msgstr "Licentie"
#: Pinta/Dialogs/AboutPintaTabPage.cs:50
msgid "Released under the MIT X11 License."
-msgstr ""
+msgstr "Uitgebracht onder de MIT X11 Licentie."
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "Copyright"
-msgstr ""
+msgstr "Auteursrecht"
#: Pinta/Dialogs/AboutPintaTabPage.cs:57
msgid "by Pinta contributors"
-msgstr ""
+msgstr "door Pinta bijdragers"
#: Pinta/Dialogs/VersionInformationTabPage.cs:44
msgid "Title"
-msgstr ""
+msgstr "Titel"
#: Pinta/Dialogs/VersionInformationTabPage.cs:53
msgid "Path"
-msgstr ""
+msgstr "Pad"
#: Pinta/Dialogs/JpegCompressionDialog.cs:38
msgid "JPEG Quality"
-msgstr ""
+msgstr "JPEG Kwaliteit"
#: Pinta/Dialogs/JpegCompressionDialog.cs:46
msgid "Quality: "
-msgstr ""
+msgstr "Kwaliteit: "
#: Pinta/Dialogs/AboutDialog.cs:101
msgid "Contributors to this Release"
-msgstr ""
+msgstr "Bijdragen aan deze release"
#: Pinta/Dialogs/AboutDialog.cs:111
msgid "Previous Contributors"
-msgstr ""
+msgstr "Voorgaande Bijdragen"
#: Pinta/Dialogs/AboutDialog.cs:120
msgid "translator-credits"
msgstr ""
+"This is a dummy translation so that the credits are counted as translated.\n"
+"\n"
+"Launchpad Contributions:\n"
+" Tijmen Rekmans https://launchpad.net/~tijmenr"
#: Pinta/Dialogs/AboutDialog.cs:123
msgid "Translated by:"
-msgstr ""
+msgstr "Vertaald door:"
#: Pinta/Dialogs/AboutDialog.cs:130
msgid "Based on the work of Paint.NET:"
-msgstr ""
+msgstr "Gebaseerd op het werk aan Paint.NET"
#: Pinta/Dialogs/AboutDialog.cs:137
msgid "Using some icons from:"
-msgstr ""
+msgstr "Met gebruikmaking van iconen van:"
#: Pinta/Dialogs/AboutDialog.cs:249
msgid "About Pinta"
-msgstr ""
+msgstr "Over Pinta"
#: Pinta/Dialogs/AboutDialog.cs:267
msgid "Version Info"
-msgstr ""
+msgstr "Versie Info"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1372,7 +1419,7 @@ msgstr ""
#: SharpenData dialog
#: MotionBlurEffect dialog
msgid "Amount"
-msgstr ""
+msgstr "Hoeveelheid"
#: RadialBlurEffect dialog
#: JuliaFractalEffect dialog
@@ -1382,158 +1429,164 @@ msgstr ""
#: ReliefData dialog
#: TwistEffect dialog
msgid "Angle"
-msgstr ""
+msgstr "Hoek"
#: CloudsEffect dialog
msgid "Antialias"
-msgstr ""
+msgstr "Antialias"
#: GlowEffect dialog
msgid "Blend Mode"
-msgstr ""
+msgstr "Mengmodus"
#: OilPaintingEffect dialog
msgid "Brightness"
-msgstr ""
+msgstr "Helderheid"
#: PixelateData dialog
msgid "Brush Size"
-msgstr ""
+msgstr "Penceelgrootte"
#: PolarInversionEffect dialog
msgid "Cell Size"
-msgstr ""
+msgstr "Celgrootte"
#: MotionBlurEffect dialog
msgid "Center Offset"
-msgstr ""
+msgstr "Centrumbepaling"
#: OilPaintingEffect dialog
msgid "Centered"
-msgstr ""
+msgstr "Gecentreerd"
#: PencilSketchEffect dialog
msgid "Coarseness"
-msgstr ""
+msgstr "Grofheid"
#: AddNoiseEffect dialog
msgid "Color Range"
-msgstr ""
+msgstr "Kleurbereik"
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr ""
+msgstr "Kleurverzadiging"
#: GlowEffect dialog
msgid "Coloring"
-msgstr ""
+msgstr "Inkleuren"
#: AddNoiseEffect dialog
msgid "Contrast"
-msgstr ""
+msgstr "Contrast"
#: FragmentEffect dialog
msgid "Coverage"
-msgstr ""
+msgstr "Bereik"
#: MotionBlurEffect dialog
#: PolarInversionEffect dialog
msgid "Distance"
-msgstr ""
+msgstr "Afstand"
#: JuliaFractalEffect dialog
msgid "Edge Behavior"
-msgstr ""
+msgstr "Randgedrag"
#: MandelbrotFractalEffect dialog
#: FragmentEffect dialog
msgid "Factor"
-msgstr ""
+msgstr "Factor"
#: InkSketchEffect dialog
msgid "Fragments"
-msgstr ""
+msgstr "Fragmenten"
#: TileEffect dialog
msgid "Ink Outline"
-msgstr ""
+msgstr "Inkt Omlijning"
#: AddNoiseEffect dialog
#: OutlineEffect dialog
#: MandelbrotFractalEffect dialog
msgid "Intensity"
-msgstr ""
+msgstr "Intensiteit"
#: RadialBlurEffect dialog
msgid "Lighting"
-msgstr ""
+msgstr "Belichting"
#: ZoomBlurEffect dialog
#: BulgeEffect dialog
#: PencilSketchEffect dialog
msgid "Offset"
-msgstr ""
+msgstr "Verschuiven"
#: MedianEffect dialog
msgid "Pencil Tip Size"
-msgstr ""
+msgstr "Potloodpuntgrootte"
#: CloudsEffect dialog
msgid "Percentile"
-msgstr ""
+msgstr "Percentiel"
#: RadialBlurEffect dialog
msgid "Power"
-msgstr ""
+msgstr "Kracht"
#: PolarInversionEffect dialog
#: JuliaFractalEffect dialog
#: MandelbrotFractalEffect dialog
#: GaussianBlurEffect dialog
msgid "Quality"
-msgstr ""
+msgstr "Kwaliteit"
#: TileEffect dialog
#: RedEyeRemoveData dialog
msgid "Rotation"
-msgstr ""
+msgstr "Rotatie"
#: CloudsEffect dialog
msgid "Saturation percentage"
-msgstr ""
+msgstr "Verzadigingspercentage"
#: CloudsEffect dialog
msgid "Scale"
-msgstr ""
+msgstr "Schaal"
#: SoftenPortraitData dialog
msgid "Seed"
-msgstr ""
+msgstr "Genereren"
#: ReduceNoiseEffect dialog
msgid "Softness"
-msgstr ""
+msgstr "Zachtheid"
#: OutlineEffect dialog
msgid "Strength"
-msgstr ""
+msgstr "Sterkte"
#: TileEffect dialog
msgid "Thickness"
-msgstr ""
+msgstr "Dikte"
#: RedEyeRemoveData dialog
msgid "Tile Size"
-msgstr ""
+msgstr "Tegelgrootte"
#: JuliaFractalEffect dialog
msgid "Warmth"
-msgstr ""
+msgstr "Warmte"
#: RadialBlurEffect dialog
-msgid "Use low quality for previews, small images, and small angles. Use high quality for final quality, large images, and large angles."
+msgid ""
+"Use low quality for previews, small images, and small angles. Use high "
+"quality for final quality, large images, and large angles."
msgstr ""
+"Gebruik lage kwaliteit voor previews en kleine afbeelding. Gebruik hoge "
+"kwaliteit voor uiteindelijke versies en grote afbeeldingen."
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+"Tip: Voor het beste resultaat, gebruik eerst selectiegereedschap om elk oog "
+"te selecteren."
diff --git a/po/messages-pl.po b/po/messages-pl.po
index 8a644f5..b51f8c7 100644
--- a/po/messages-pl.po
+++ b/po/messages-pl.po
@@ -7,731 +7,673 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-15 21:30+0000\n"
-"Last-Translator: Michał Richter <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-22 00:15+0000\n"
+"Last-Translator: pp/bs <Unknown>\n"
"Language-Team: Polish <pl at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "O programie..."
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Okno"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pędzel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Warstwa"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Plik"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopiuj"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Edycja"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Zmień rozmiar płótna"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Widok"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Narzędzie"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Obraz"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Klawisz skrótu"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "Wa_rstwy"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Normalne mieszanie"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "Do_stosowanie kolorów"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Zastąp"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "E_fekty"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Wygładzanie włączone"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Okno"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Wygładzanie wyłączone"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Pomoc"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Zmień rozmiar..."
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Narzędzia"
-
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Obróć o 180°"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenty"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Odbij obraz w pionie"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Warstwy"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Odbij obraz w poziomie"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historia"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Obróć o 90° w prawo"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ukryj"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Obróć o 90° w lewo"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dokowalne"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Odbij warstwę w pionie"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Ruchoma"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Odbij warstwę w poziomie"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automatyczne ukrywanie"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Główne"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Zadokuj"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} obraz ({1})"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Zaangażowani w to wydanie"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Przytnij do zaznaczenia"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Wcześniej zaangażowani"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Zmień rozmiar..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Bartosz Kaszubowski https://launchpad.net/~simek\n"
-" Michał Richter https://launchpad.net/~matmatyk\n"
-" Miłosz Kosobucki https://launchpad.net/~mikom\n"
-" Patryk Wychowaniec https://launchpad.net/~p98\n"
-" Sebastian Mazur https://launchpad.net/~sebastianmaz\n"
-" Spox5 https://launchpad.net/~spox5\n"
-" eeree https://launchpad.net/~eeree"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Zmień rozmiar na warstwie..."
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Tłumaczenie:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Odbij w poziomie"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Bazuje na projekcie Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Odbij w pionie"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Wykorzystane ikony:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Spłaszcz"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "O Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Powiększ"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informacje o wersji"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Pomniejsz"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Tytuł"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Dopasuj do okna"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Wersja"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Powiększ do zaznaczenia"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Ścieżka"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Faktyczny rozmiar"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licencja"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Pasek narzędzi"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Wydane na licencji MIT X11"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Siatka pikseli"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Prawa autorskie"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Linijki"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "przez współtwórców Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Piksele"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "ilość wątków używanych podczas renderingu"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Cale"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Zmień rozmiar..."
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centymetry"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Procentowo:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Pełen ekran"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Rozmiar bezwzględny"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Jednostki linijki"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Szerokość:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Dodaj nową warstwę"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pikseli"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Usuń warstwę"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Wysokość:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Powiel warstwę"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Zachowanie proporcji obrazu"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Scal warstwę w dół"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Właściwości warstwy"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importuj z pliku..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nazwa:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Obróć / Powiększ"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Widoczna"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Przesuń warstwę w górę"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Krycie:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Przesuń warstwę w dół"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Zmień rozmiar płótna"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr "Właściwości warstwy..."
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Kotwica:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Otwórz plik obrazu"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Nowy obraz"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importuj z pliku"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Nowy rozmiar obrazu "
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Zapisz wszystkie"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Czy chcesz zapisać zmiany w \"{0}\" przed utworzeniem nowego obrazu?"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Zamknij wszystkie"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Jeśli nie zapiszesz, wszystkie zmiany zostaną utracone"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Strona internetowa Pinty"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Kontynuuj bez zapisywania"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Zgłoś błąd"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Nieprzezroczystość warstwy"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Przetłumacz tę aplikację"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Zmień nazwę warstwy"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "O programie..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Ukryj warstwę"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nowy..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Pokaż warstwę"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nowy zrzut ekranu..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Otwórz..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "podpis"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Ostatnio otwierane"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Losowy szum"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Zamknij"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Nowe ziarno"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Zapisz"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Wybór koloru"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Zapisz jako...."
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Lewy przycisk myszy ustawia pierwszy kolor. Prawy przycisk myszy ustawia "
-"drugi kolor."
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Drukuj"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Po wybraniu"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Wyjście"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "NIe zmieniaj narzędzia"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nowy"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Zmień na poprzednie narzędzie"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Otwórz"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Zmień na ołówek"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Cofnij"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Ołówek"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Ponów"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Zaznaczanie lassem"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Wytnij"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Kliknij i przeciągnij, aby narysować zarys obszaru."
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopiuj"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Powiększenie"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Wklej"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Kliknij lewym przyciskiem myszy, aby powiększyć. Kliknij prawym przyciskiem "
-"myszy, aby pomniejszyć. Kliknij i przeciągnij, aby powiększyć zaznaczony "
-"obszar."
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Wklej do nowej warstwy"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Rozmiar pędzla"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Wklej do nowego obrazu"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Zmniejsz rozmiar pędzla"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Wyczyść zaznaczenie"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Zwiększ rozmiar pędzla"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Wypełnij zaznaczenie"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Obrysuj kształt"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Odwróć zaznaczenie"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Wypełnij kształt"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Zaznacz wszystko"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Wypełnij i obrysuj kształt"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Usuń zaznaczenie"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Przenieś zaznaczone piksele"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Przywróć domyślne"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Przeciągnij zaznaczenie aby przenieść"
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Ustaw liczbę kolorów"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Nawigacja"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Naciśnij i przytrzymaj lewy przycisk myszy by móc przesunąć obraz."
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Otwórz plik palety"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Kliknij lewym przyciskiem myszy aby użyć koloru podstawowego lub kliknij "
-"prawym przyciskiem myszy by użyć koloru drugiego. (Grubość ołówka wynosi "
-"jeden piksel.)"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Pliki palety (*.txt, *.gpl)"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Zaznaczenie eliptyczne"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Wszystkie pliki"
-#: Pinta.Tools/EllipseSelectTool.cs:44
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-"Kliknij i przeciągnij, aby obszar zaznaczenia był elipsą. Przytrzymanie "
-"klawisza Shift spowoduje zaznaczenie okręgu."
+"Nie udało się otworzyć pliku palety: {0}.\n"
+"Upewnij się, że próbujesz otworzyć właściwy plik palety programu GIMP lub "
+"Paint.NET."
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradient"
-
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Kliknij i przeciągnij, aby wypełnić gradientem z podstawowego do "
-"drugorzędnego koloru. Kliknięcie prawym przyciskiem myszy odwraca kolory "
-"wypełnienia."
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Błąd"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Gradient liniowy"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Zapisz plik palety"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Gradient liniowy lustrzany"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paleta programu Paint.NET (*.txt)"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Gradient diamentowy"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Paleta programu GIMP (*.gpl)"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Gradient promienisty"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Niezapisany obraz {0}"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Gradient stożkowy"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Tło"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Tryb koloru"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Nowy obraz"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Tryb przeźroczystości"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Otwórz obraz"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Zaokrąglony prostokąt"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "Nie udało się otworzyć pliku: {0}"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Kliknij i przeciągnij, aby narysować zaokrąglony prostokąt (prawy przycisk "
-"myszy pozwala na użycie koloru drugiego). Przytrzymanie klawisza Shift "
-"spowoduje narysowanie zaokrąglonego kwadratu."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efekt renderowania"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Promień zaokrąglenia"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Redukcja kolorów"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Zmniejsz promień zaokrąglenia"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Odwróć kolory"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Zwiększ promień zaokrąglenia"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Poziomy"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Kliknij lewym przyciskiem myszy, aby użyć podstawowego koloru lub Kliknij "
-"prawym przyciskiem myszy, aby użyć koloru drugiego."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Czarno-biały"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Zaznaczenie prostokątne"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Automatyczne ustawienie poziomu"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Kliknij i przeciągnij, aby narysować prostokątne zaznaczenie obszaru. "
-"Przytrzymanie klawisza Shift spowoduje zaznaczenie kwadratu."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Barwa / Nasycenie"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Wypełnienie"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Jasność / Kontrast"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Kliknij lewym przyciskiem myszy, aby wypełnić obszar kolorem podstawowym "
-"lub kliknij prawym przyciskiem myszy, aby wypełnić go kolorem drugim."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Klonowanie"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Krzywe"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Przesunięcie zaznaczenia"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Przeciągnij zaznaczenie, aby przenieść kontur zaznaczenia."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Dowolny kształt"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Jaskrawość"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Tryb wypełnienia"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Sąsiadujące"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Czerwony "
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Globalne"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Zielony"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerancja"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Niebieski "
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipsa"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Przywróć"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Kliknij i przeciągnij, aby narysować elipsę. Przytrzymanie klawisza Shift "
-"spowoduje narysowanie okręgu."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Wskazówka: Kliknij prawym przyciskiem by usunąć punkty kontrolne."
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
-msgstr "Tekst"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Regulacja poziomów"
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr ""
-"Kliknij lewym przyciskiem myszy, aby wskazać miejsce na umieszczenie tekstu. "
-"Barwa tekstu zależy od koloru podstawowego."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Poziomy wejściowe"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "Czcionka"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Wejście"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr "Pogrubienie"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Wyjście"
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr "Kursywa"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Poziomy wyjściowe"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr "Podkreślenie"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automatycznie"
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr "Wyrównanie do lewej"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Czerwony"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
-msgstr "Wyrównanie do środka"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Niebieski"
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr "Wyrównanie do prawej"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Powiązane"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Magiczna różdżka"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Szkic ołówkiem"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Kliknij, aby zaznaczyć obszar o podobnym kolorze."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artystyczne"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "Prostokąt"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Rozmycie powierzchowe"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr ""
-"Kliknij i przeciągnij, aby narysować prostokąt (prawy przycisk myszy pozwala "
-"na użycie koloru drugiego). Przytrzymanie klawisza Shift, spowoduje "
-"narysowanie kwadratu."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Rozmycia"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linia"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Wypukłość"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr ""
-"Lewym przyciskiem rysujesz używając głównego koloru, prawym używając "
-"drugoplanowego koloru."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Zniekształcanie"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Zamiana kolorów"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fraktal Mandelbrota"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
-"Kliknięcie lewym przyciskiem zamienia kolor główny z kolorem drugoplanowym."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Renderowanie"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Gumka"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Mediana"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Kliknij i przeciągnij, aby usunąć część obrazka."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Szum"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "Pikselizacja"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Zniekształcanie"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Usuwanie efektu czerwonych oczu"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Wyostrzanie"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "Fotografia"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Rozmycie ruchem"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Obraz olejny"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Rozmycia"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Rozmycie Gaussa"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Szkic tuszem"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Poświata"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artystyczne"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Wygładź portret"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Rozmycie promieniowe"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Refleks"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Rozmycie powierzchowe"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Usuwanie efektu czerwonych oczu"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Zamarznięte szkło"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "Wykrywanie krawędzi"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr "Stylizacja"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Zamarznięte szkło"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fraktal Julii"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Obraz olejny"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Rozmycie ruchem"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Płaskorzeźba"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Szkic tuszem"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
-msgstr "Rozmycie powiększające"
+msgstr "Rozmycie przez powiększenie"
#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
msgid "Polar Inversion"
@@ -741,542 +683,758 @@ msgstr "Inwersja polarna"
msgid "Clouds"
msgstr "Chmury"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Renderowanie"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragment"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Poświata"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Redukcja szumów"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Rozmycie promieniowe"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Wir"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "Dodaj szum"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Szum"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragment"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Wyostrzanie"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Szkic ołówkiem"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Płaskorzeźba"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "Kontur"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Rozmycie Gaussa"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Losowy szum"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Refleks"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Nowe ziarno"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Płaskorzeźba"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etykieta1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Płaskorzeźba"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etykieta"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fraktal Mandelbrota"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Wybierz kolor podstawowy"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Wypukłość"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Wybierz kolor dodatkowy"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Wir"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Wybierz kolor z palety"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Wygładź portret"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Nawigacja"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Redukcja szumów"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Naciśnij i przytrzymaj lewy przycisk myszy by móc przesunąć obraz."
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fraktal Julii"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "Tekst"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Mediana"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr ""
+"Kliknij lewym przyciskiem by ustawić kursor, a następnie wpisz tekst. "
+"Kolorem tekstu będzie kolor wybrany jako podstawowy."
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Krzywe"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "Czcionka"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Poziomy"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "Pogrubienie"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Auto poziom"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "Kursywa"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Odwróć kolory"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "Podkreślenie"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Redukcja kolorów"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr "Wyrównanie do lewej"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Czarno-biały"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr "Wyrównanie do środka"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Barwa / Nasycenie"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr "Wyrównanie do prawej"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "Prostokąt"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Jasność / Kontrast"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr ""
+"Kliknij i przeciągaj, aby narysować prostokąt (jeśli chcesz użyć koloru "
+"dodatkowego, użyj prawego przycisku myszy). Przytrzymaj klawisz Shift aby "
+"zawsze rysowany był kwadrat."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Regulacja poziomu"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Dowolny kształt"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Poziomy wejściowe"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Kliknij lewym przyciskiem myszy, aby rysować kolorem podstawowym, a prawym - "
+"aby rysować kolorem dodatkowym."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Wejście"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Styl wypełniania"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Wyjście"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Obrysowywanie kształtu"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Poziomy wyjściowe"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Wypełnianie kształtu"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automatycznie"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Obrysowywanie i wypełnianie kształtu"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Przywróć"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Tryb zalewania"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Czerwony"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Przylegające"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Zielony"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Globalne"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Niebieski"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerancja"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Powiązane"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linia"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
+"Kliknij lewym przyciskiem myszy, aby rysować kolorem podstawowym, a prawym - "
+"aby rysować kolorem dodatkowym."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Przesunięcie zaznaczenia"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Jaskrawość"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Przeciągnij zaznaczenie, aby przenieść kontur zaznaczenia."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Zaznaczenie prostokątne"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Czerwony "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Kliknij i przeciągaj, aby narysować zaznaczenie prostokątne. Przytrzymaj "
+"klawisz Shift aby zawsze rysowane było zaznaczenie kwadratowe."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Niebieski "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Magiczna różdżka"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Kliknij, aby zaznaczyć obszar o podobnym kolorze."
+
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Zaznaczenie eliptyczne"
+
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
+"Kliknij i przeciągnij, aby narysować zaznaczenie eliptyczne. Przytrzymaj "
+"klawisz Shift, aby zawsze rysowane było zaznaczenie o kształcie koła."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Dodaj nową warstwę"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Zaznaczanie lassem"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Usuń warstwę"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Kliknij i przeciągnij, aby zaznaczyć obszar."
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Powiel warstwę"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Wypełnienie"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Scal warstwę w dół"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Kliknij lewym przyciskiem myszy, aby wypełnić obszar kolorem podstawowym, a "
+"prawym - aby wypełnić go kolorem dodatkowym."
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importuj z pliku..."
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradient"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Odbij w poziomie"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Kliknij i przeciągnij, aby wypełnić gradientem od koloru podstawowego do "
+"dodatkowego. Użyj prawego przycisku myszy, aby zastosować odwrotną kolejność "
+"kolorów."
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Odbij w pionie"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Gradient liniowy"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Obróć / Powiększ"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Gradient liniowy lustrzany"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Przesuń warstwę w górę"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Gradient liniowy diamentowy"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Przesuń warstwę w dół"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Gradient promienisty"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Otwórz plik obrazu"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Gradient stożkowy"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importuj z pliku"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Tryb"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nowy..."
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Tryb koloru"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Otwórz..."
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Tryb przeźroczystości"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Ostatnio otwierane"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Szerokość pędzla"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Zamknij"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Zmniejsz rozmiar pędzla"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Zapisz"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Zwiększ rozmiar pędzla"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Zapisz jako...."
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pędzel"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Drukuj"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Rodzaj"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Wyjście"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Przemaluj"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nowy"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
+"Kliknij lewym przyciskiem myszy, aby zamienić kolor podstawowy na kolor "
+"dodatkowy."
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Otwórz"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normalny"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Tło"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Okręgi"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Otwórz obraz"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Kwadraty"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Nie można otworzyć pliku: {0}"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Rozprysk"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Wystąpił błąd"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Siatka"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Czy chcesz zapisać zmiany w \"{0}\" przed utworzeniem nowego obrazu?"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipsa"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Pliki graficzne"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Kliknij i przeciągnij, aby narysować elipsę (kliknij prawym przyciskiem "
+"myszy, by użyć koloru dodatkowego). Przytrzymaj klawisz Shift, aby zawsze "
+"rysowany był okrąg."
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Wszystkie pliki"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Klonowanie"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Zapisz Obraz"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Trzymając Ctrl kliknij lewym przyciskiem myszy w celu wybrania punktu "
+"źródłowego, następnie kliknij lewym przyciskiem, aby malować."
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} obraz ({1})"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Powiększenie"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Grafika OpenRaster (*.ora)"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Kliknij lewym przyciskiem myszy, aby powiększyć. Kliknij prawym przyciskiem "
+"myszy, aby pomniejszyć. Kliknij i przeciągnij, aby powiększyć zaznaczony "
+"obszar."
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Czy chcesz zapisać zmiany w obrazie \"{0}\" przed jego zamknięciem?"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Zaokrąglony prostokąt"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Zamknij bez zapisywania"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Kliknij i przeciągnij, aby narysować zaokrąglony prostokąt (kliknij prawym "
+"przyciskiem myszy w celu użycia koloru dodatkowego). Przytrzymaj klawisza "
+"Shift, aby narysować zaokrąglony kwadrat."
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Przytnij do zaznaczenia"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Promień"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Zmień rozmiar..."
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Zmniejsz promień zaokrąglenia prostokąta"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Zmień rozmiar na warstwie..."
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Zwiększ promień zaokrąglenia prostokąta"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Obróć o 90° w prawo"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Wybór koloru"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Obróć o 90° w lewo"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Kliknij lewym przyciskiem myszy, aby ustawić kolor podstawowy. Kliknij "
+"prawym przyciskiem, aby ustawić kolor dodatkowy."
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Obróć o 180°"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Po wybraniu"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Spłaszcz"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "NIe zmieniaj narzędzia"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Cofnij"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Zmień na poprzednie narzędzie"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Ponów"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Zmień na Ołówek"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Wytnij"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Ołówek"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopiuj"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Gumka"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Wklej"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Kliknij i przeciągnij, aby wymazać część obrazka."
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Wklej do nowej warstwy"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Kliknij lewym przyciskiem, aby rysować swobodnie kolorem podstawowym linie o "
+"szerokości 1 piksela. Kliknij prawym przyciskiem, aby rysować kolorem "
+"dodatkowym."
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Wklej do nowego obrazu"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Przenieś zaznaczone piksele"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Wyczyść zaznaczenie"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Przeciągnij zaznaczenie, aby przenieść jego zawartość."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Wypełnij zaznaczenie"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ukryj"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Odwróć zaznaczenie"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Zadokuj"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Zaznacz wszystko"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automatyczne ukrywanie"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Usuń zaznaczenie"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dokowalne"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Powiększ"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Ruchoma"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Pomniejsz"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Dopasuj do okna"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Procentowo:"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Powiększ do zaznaczenia"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Rozmiar bezwzględny"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Faktyczny rozmiar"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Szerokość:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Siatka pikseli"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pikseli"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Linijki"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Wysokość:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Piksele"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Zachowanie proporcji obrazu"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Cale"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Kotwica:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centymetry"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Nowy rozmiar obrazu "
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Pełen ekran"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Właściwości warstwy"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Okno"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nazwa:"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Strona internetowa Pinty"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Widoczna"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Zgłoś błąd"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Krycie:"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Przetłumacz tą aplikację"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Ogólne"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Plik"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Edycja"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Widok"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Obraz"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "Wa_rstwy"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "Do_stosowanie kolorów"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "E_fekty"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Okno"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Okna narzędziowe"
+
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Pomoc"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
msgstr "Narzędzia"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Klawisz skrótu"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenty"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Wygładzanie krawędzi"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Warstwy"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr ""
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historia"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Odbij obraz w pionie"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Zrzut ekranu"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Odbij obraz w poziomie"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Opóźnienie wykonania zrzutu ekranu (w sekundach):"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Odbij warstwę w pionie"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Czy chcesz zapisać zmiany w obrazie \"{0}\" przed jego zamknięciem?"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Odbij warstwę w poziomie"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Jeśli nie zapiszesz, wszystkie zmiany zostaną utracone"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Zamknij bez zapisywania"
+
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Zmień rozmiar palety"
+
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nowy rozmiar palety:"
+
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Nieprzezroczystość warstwy"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Zmień nazwę warstwy"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Ukryj warstwę"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Pokaż warstwę"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Pliki graficzne"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Wklejanie anulowane"
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Schowek nie zawiera obrazu"
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Zapisz Obraz"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta nie obsługuje zapisu w tym formacie."
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Plik \"{0}\" już istnieje. Czy chcesz go zastąpić?"
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
+"Już istnieje taki plik w \"{1}\". Zastąpienie go spowoduje nadpisanie jego "
+"zawartości przez nowy plik."
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "ilość wątków używanych podczas renderingu"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Wersja"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licencja"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Wydane na licencji MIT X11"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Prawa autorskie"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "przez współtwórców Pinta"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Tytuł"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Ścieżka"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Jakość JPEG"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Jakość: "
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Zaangażowani w to wydanie"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Wcześniej zaangażowani"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Bartosz Kaszubowski https://launchpad.net/~simek\n"
+" Dweight https://launchpad.net/~devilsenator\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Maciej Leśniewski https://launchpad.net/~leshniak\n"
+" Michał Richter https://launchpad.net/~matmatyk\n"
+" Miłosz Kosobucki https://launchpad.net/~mikom\n"
+" Patryk Wychowaniec https://launchpad.net/~p98\n"
+" Sebastian Mazur https://launchpad.net/~sebastianmaz\n"
+" Spox5 https://launchpad.net/~spox5\n"
+" eeree https://launchpad.net/~eeree\n"
+" pp/bs https://launchpad.net/~pawprok"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopiuj"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Tłumaczenie:"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Warstwa"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Bazuje na projekcie Paint.NET:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Wykorzystane ikony:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "O Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informacje o wersji"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1327,7 +1485,7 @@ msgstr "Wyśrodkowany"
#: PencilSketchEffect dialog
msgid "Coarseness"
-msgstr ""
+msgstr "Ziarnistość"
#: AddNoiseEffect dialog
msgid "Color Range"
@@ -1393,11 +1551,11 @@ msgstr "Rozmiar końcówki pędzla"
#: CloudsEffect dialog
msgid "Percentile"
-msgstr ""
+msgstr "Percentyl"
#: RadialBlurEffect dialog
msgid "Power"
-msgstr ""
+msgstr "Siła:"
#: PolarInversionEffect dialog
#: JuliaFractalEffect dialog
@@ -1448,10 +1606,15 @@ msgid ""
"Use low quality for previews, small images, and small angles. Use high "
"quality for final quality, large images, and large angles."
msgstr ""
+"Używaj niskiej jakości do podglądu, małych obrazów i małych kątów. Używaj "
+"wysokiej jakości do obrazów w wersji ostatecznej, do dużych obrazów i dużych "
+"kątów."
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+"Wskazówka: Dla uzyskania lepszego efektu, zaznacz oko korzystając z narzędzi "
+"zaznaczania."
#~ msgid "Show Pad"
#~ msgstr "Pokaż panel"
@@ -1459,8 +1622,28 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Kontynuuj bez zapisywania"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+
+#~ msgid "Fill mode"
+#~ msgstr "Tryb wypełnienia"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Wygładzanie krawędzi"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Czy chcesz zapisać zmiany w \"{0}\" przed utworzeniem nowego obrazu?"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Czy chcesz zapisać zmiany w \"{0}\" przed utworzeniem nowego obrazu?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Grafika OpenRaster (*.ora)"
diff --git a/po/messages-pt.po b/po/messages-pt.po
index ef37547..91420c8 100644
--- a/po/messages-pt.po
+++ b/po/messages-pt.po
@@ -7,557 +7,747 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-26 08:54+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-07 15:23+0000\n"
"Last-Translator: Sérgio Marques <Unknown>\n"
"Language-Team: European Portuguese <pt_BR at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Sobre"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Janela"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pincel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Camada"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Ficheiro"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "copiar"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Editar"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Reajustar tela"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Ver"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Ferramenta"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Imagem"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Tecla de atalho"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Camadas"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Mistura Normal"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Ajustes"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Sobrepor"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efeito_s"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Ligar suavização de fontes"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Janela"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Desligar suavização de fontes"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "A_juda"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Reajustar imagem"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr "Janelas de ferramentas"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Finalizar pixeis"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Ferramentas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Rodar 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Inverter imagem na horizontal"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documentos"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Inverter imagem na vertical"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Camadas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Rodar 90° no sentido horário"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Histórico"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Rodar 90° no sentido anti-horário"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ocultar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Inverter camada na horizontal"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Acoplável"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Inverter camada na vertical"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flutuante"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Geral"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Ocultar automaticamente"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} imagem ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Acoplar"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Recortar selecção"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Contribuidores para esta versão"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Reajustar..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Contribuidores anteriores"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Tamanho da tela..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Afer https://launchpad.net/~agosfernandes\n"
-" Ricardo Conde https://launchpad.net/~turotulco\n"
-" Sérgio Marques https://launchpad.net/~sergio+marques\n"
-" Sérgio Marques https://launchpad.net/~smarquespt"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Inverter horizontalmente"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Traduzido por:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Inverter verticalmente"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Inspirado no Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Achatar"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Utiliza alguns ícones de:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Ampliar"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Sobre o Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Reduzir"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informações sobre a versão"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Ajustar à janela"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Título"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Ajustar à selecção"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versão"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Tamanho real"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Caminho"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Barra de Ferramentas"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licença"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Grelha de pixeis"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Publicado sob a licença MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Réguas"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Direitos de autor"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pixeis"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "pelos contribuidores Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Polegadas"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "número de itens a utilizar na renderização"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centímetros"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Reajustar imagem"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Ecrã completo"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Por percentagem:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Unidades da régua"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Por tamanho absoluto:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Adicionar nova camada"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Largura:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Apagar camada"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixeis"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplicar camada"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Altura:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Unir a camada inferior"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Manter a proporção"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importar do ficheiro..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Rodar / Ampliar"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Mover camada para cima"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Mover camada para baixo"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Propriedades da camada"
+msgid "Layer Properties..."
+msgstr "Propriedades da camada..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nome:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Abrir imagem"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Visível"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importar do ficheiro"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Transparência:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Gravar todos"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Reajustar tela"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Fechar todos"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Âncora:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Página web do Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Reportar um erro"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Traduzir esta aplicação"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Sobre"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Novo..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nova captura de ecrã..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Abrir..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Abrir recente"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Fechar"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Gravar"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Gravar como..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Imprimir"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Sair"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Novo"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Abrir"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Desfazer"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Refazer"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Cortar"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Copiar"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Colar"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Colar numa nova camada"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Colar numa nova imagem"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Apagar selecção"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Preencher selecção"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Inverter selecção"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Seleccionar tudo"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Deseleccionar"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Repor as omissões"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Definir o número de cores"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Abrir ficheiro de paleta"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Ficheiros paleta (*.txt,*.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Todos os ficheiros"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Não é possível abrir o ficheiro: {0}.\n"
+"Por favor, verifique que está a tentar abrir um ficheiro de paleta do GIMP "
+"ou Paint.NET."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Erro"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Gravar ficheiro de paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paleta Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Paleta GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Imagem não gravada {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Plano de fundo"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nova imagem"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Tamanho da nova imagem "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Abrir imagem"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Guardar as alterações em \"{0}\" antes de criar uma nova?"
+msgid "Could not open file: {0}"
+msgstr "Não foi possível abrir o ficheiro: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Se não gravar o trabalho, todas as alterações serão perdidas."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efeito de renderização"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Continuar sem gravar"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Aplicar gradação às diversas regiões"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Transparência da camada"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Inverter cores"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Renomear camada"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Níveis"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Ocultar camada"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Preto e branco"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Mostrar camada"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Níveis automáticos"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "rótulo1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Matiz / Saturação"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "rótulo"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Brilho / Contraste"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Ruído aleatório"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sépia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Semear novamente"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Curvas"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Selector de cores"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Mapa de transferência"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Botão esquerdo do rato para definir a cor principal. Botão direito para "
-"definir a cor secundária."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Após seleccionar"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminosidade"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Não trocar ferramenta"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Trocar para a ferramenta anterior"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Vermelho "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Trocar para ferramenta Lápis"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Verde"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Lápis"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Azul "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Selecção Laço"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Repor"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Clique e arraste para desenhar o contorno da área seleccionada."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Dica: Botão direito do rato para remover pontos de controle."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Ampliação"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Ajuste de níveis"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Botão esquerdo para ampliar. Botão direito para reduzir. Para ampliar a "
-"selecção, clique e arraste."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Histograma do original"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Largura do pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Original"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Diminuir tamanho do pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Destino"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Aumentar tamanho do pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Histograma do destino"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Formato do contorno"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automático"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Formato do preenchimento"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Vermelho"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Formato do contorno e preenchimento"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Azul"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Mover pixeis seleccionados"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Ligado"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Arraste a selecção para mover o conteúdo."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Desenho a lápis"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "\"Pan\""
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artístico"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Clique e arraste para navegar na imagem."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Desfocar"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Botão esquerdo do rato para desenho livre, linhas de um pixel de largura com "
-"cor primária, botão direito do rato para usar a cor secundária."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Manchas"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Selecção elíptica"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Convexa"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Clique e arraste para a elipse. Pressione a tecla shitf para restringir a um "
-"círculo."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distorcer"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradiente"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fractal Mandelbrot"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Clique e arraste para aplicar o gradiente principal para o secundário. Botão "
-"direito inverter."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Renderizar"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Gradiente linear"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Mediana"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Gradiente linear reflectido"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Ruído"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Gradiente linear diamante"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "\"Pixelate\""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Gradiente radial"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Precisão"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Gradiente cônico"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Foto"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Modo de cor"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Pintura a óleo"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Modo de transparência"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Mancha Gaussiana"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Rectângulo arredondado"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Brilho"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Clique e arraste para desenhar um rectângulo arredondado (botão direito do "
-"rato para cor secundária). Pressione a tecla Shift para restringir."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Retrato suavizado"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Raio"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Reflexo ladrilhado"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Diminuir o raio do canto do rectângulo"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Remoção de olhos vermelhos"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Aumentar o raio do canto do rectângulo"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Vidro fosco"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Botão esquerdo para desenhar com a cor principal, botão direito para "
-"desenhar com a cor secundária."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Detecção de contornos"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Selecção rectangular"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Estilizar"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Clique e arraste para desenhar uma selecção rectangular. Pressione a tecla "
-"Shift para restringir a um quadrado."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fractal Julia"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Balde de Tinta"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Mancha de movimento"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Botão esquerdo do rato para preencher com a cor principal, botão direito "
-"para preencher com a cor secundária."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Gravar em relevo"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Carimbo"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Rascunho a tinta"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Mover selecção"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Ampliar mancha"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Arraste a selecção para mover os seus contornos."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Inversão polar"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Forma livre"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Nuvens"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Preenchimento"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragmento"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Adjacente"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Reduzir ruído"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Mancha radial"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerância"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Torção"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipse"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Adicionar ruído"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Clique e arraste para desenhar uma elipse (botão direito para cor "
-"secundária). Pressione a tecla Shift para restringir a um círculo."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relevo"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Contorno"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Ruído aleatório"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Semear novamente"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "rótulo1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "rótulo"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Escolha a cor primária"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Escolha a cor secundária"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Escolha a cor da paleta"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "\"Pan\""
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Clique e arraste para navegar na imagem."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -571,42 +761,34 @@ msgstr ""
"Botão esquerdo do rato para posicionar o cursor e escrever o texto desejado. "
"A cor utilizada será a principal."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Tipo de letra"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Negrito"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Itálico"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Sublinhado"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Alinhar à esquerda"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Alinhar ao centro"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Alinhar à direita"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Selecção batuta mágica"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Clique para seleccionar uma região de cor similar."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Rectângulo"
@@ -619,655 +801,627 @@ msgstr ""
"Clique e arraste para desenhar um rectângulo (botão direito do rato para cor "
"secundária). Pressione a tecla Shift para restringir a um quadrado."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linha"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Forma livre"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-"Botão esquerdo do rato para desenhar com a cor principal, botão direito para "
-"cor secundária."
+"Botão esquerdo para desenhar com a cor principal, botão direito para "
+"desenhar com a cor secundária."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Colorir novamente"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Estilo de preenchimento"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Botão esquerdo para substituir a cor secundária pela principal."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Formato do contorno"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Borracha"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Formato do preenchimento"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Clique e arraste para apagar uma parte da imagem."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Formato do contorno e preenchimento"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "\"Pixelate\""
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Modo de inundação"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distorcer"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Adjacente"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Remoção de olhos vermelhos"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Foto"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerância"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Mancha de movimento"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linha"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Manchas"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Botão esquerdo do rato para desenhar com a cor principal, botão direito para "
+"cor secundária."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Rascunho a tinta"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Mover selecção"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artístico"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Arraste a selecção para mover os seus contornos."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Mancha radial"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Selecção rectangular"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Desfocar"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Clique e arraste para desenhar uma selecção rectangular. Pressione a tecla "
+"Shift para restringir a um quadrado."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Detecção de limite"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Selecção batuta mágica"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Estilizar"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Clique para seleccionar uma região de cor similar."
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Vidro fosco"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Selecção elíptica"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Pintura a óleo"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Clique e arraste para a elipse. Pressione a tecla shitf para restringir a um "
+"círculo."
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Ampliar mancha"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Selecção Laço"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Inversão polar"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Clique e arraste para desenhar o contorno da área seleccionada."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Nuvens"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Balde de Tinta"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Renderizar"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Botão esquerdo do rato para preencher com a cor principal, botão direito "
+"para preencher com a cor secundária."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Brilho"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradiente"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Adicionar ruído"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Clique e arraste para aplicar o gradiente principal para o secundário. Botão "
+"direito inverter."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Ruído"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Gradiente linear"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragmento"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Gradiente linear reflectido"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Precisão"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Gradiente linear diamante"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Desenho a lápis"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Gradiente radial"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Contorno"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Gradiente cónico"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Mancha Gaussiana"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Modo"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Reflexo ladrilhado"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Modo de cor"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relevo"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Modo de transparência"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Gravar em relevo"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Largura do pincel"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fractal Mandelbrot"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Diminuir tamanho do pincel"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Convexa"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Aumentar tamanho do pincel"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Torção"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pincel"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Retrato suavizado"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Tipo"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Reduzir ruído"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Colorir novamente"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fractal Julia"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Botão esquerdo para substituir a cor secundária pela principal."
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Mediano"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normal"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Curvas"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Círculos"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Níveis"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Quadrados"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Níveis automáticos"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Salpico"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Inverter cores"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Grelha"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Criar poster"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipse"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Preto e branco"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Clique e arraste para desenhar uma elipse (botão direito para cor "
+"secundária). Pressione a tecla Shift para restringir a um círculo."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Matiz / Saturação"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Clone Stamp"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sépia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Ctrl+botão esquerdo do rato para definir origem, clique esquerdo para pintar."
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Brilho / Contraste"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Ampliação"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Ajuste de níveis"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Botão esquerdo para ampliar. Botão direito para reduzir. Para ampliar a "
+"selecção, clique e arraste."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Histograma do original"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Rectângulo arredondado"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Original"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Clique e arraste para desenhar um rectângulo arredondado (botão direito do "
+"rato para cor secundária). Pressione a tecla Shift para restringir."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Destino"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Raio"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Histograma do destino"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Diminuir o raio do canto do rectângulo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automático"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Aumentar o raio do canto do rectângulo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Repor"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Selector de cores"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Vermelho"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Botão esquerdo do rato para definir a cor principal. Botão direito para "
+"definir a cor secundária."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Verde"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Após seleccionar"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Azul"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Não trocar ferramenta"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Ligado"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Trocar para a ferramenta anterior"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Mapa de transferência"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Trocar para ferramenta Lápis"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Lápis"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminosidade"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Borracha"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Clique e arraste para apagar uma parte da imagem."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Vermelho "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Botão esquerdo do rato para desenho livre, linhas de um pixel de largura com "
+"cor primária, botão direito do rato para usar a cor secundária."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Azul "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Mover pixeis seleccionados"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Dica: Botão direito do rato para remover pontos de controle."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Arraste a selecção para mover o conteúdo."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Adicionar nova camada"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ocultar"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Apagar camada"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Acoplar"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplicar camada"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Ocultar automaticamente"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Unir a camada inferior"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Acoplável"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importar do ficheiro..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flutuante"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Virar horizontalmente"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "NomeDaOpção"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Virar verticalmente"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Por percentagem:"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Rodar / Ampliar"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Por tamanho absoluto:"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Mover camada para cima"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Largura:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Mover camada para baixo"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixeis"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Abrir imagem"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Altura:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importar do ficheiro"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Manter a proporção"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Novo..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Âncora:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Abrir..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Tamanho da nova imagem "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Abrir recente"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Propriedades da camada"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Fechar"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nome:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Gravar"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Visível"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Gravar como..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacidade:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Imprimir"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Sair"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Ficheiro"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Novo"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Editar"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Abrir"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Ver"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Plano de fundo"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Imagem"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Abrir imagem"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Camadas"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Não foi possível abrir o ficheiro: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Ajustes"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Erro"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efeito_s"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Gravar as alterações feitas em \"{0}\" antes de abrir outra imagem?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Janela"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Imagens"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Janelas de ferramentas"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Todos os ficheiros"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "A_juda"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Gravar imagem"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Ferramentas"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} imagem ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documentos"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Imagem OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Camadas"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Histórico"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Capturar uma imagem do ecrã"
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Atraso antes da captura do ecrã (segundos):"
+
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Gravar alterações feitas em \"{0}\" antes de fechar?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Se não gravar o trabalho, todas as alterações serão perdidas."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Fechar sem gravar"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Recortar selecção"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Reajustar..."
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Tamanho da tela..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Rodar 90° no sentido horário"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Rodar 90° sentido anti-horário"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Rodar 180°"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Redimensionar paleta"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Achatar"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Desfazer"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Refazer"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Cortar"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Copiar"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Colar"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Colar numa nova camada"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Colar numa nova imagem"
-
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Apagar selecção"
-
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Preencher selecção"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Novo tamanho da paleta:"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Inverter selecção"
-
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Seleccionar tudo"
-
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Deseleccionar"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Opacidade da camada"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Ampliar"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Renomear camada"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Reduzir"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Ocultar camada"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Akustar à janela"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Mostrar camada"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Ajustar à selecção"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Imagens"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Tamanho real"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "A colagem foi cancelada"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Grelha de pixeis"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "A área de transferência não contém uma imagem"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Réguas"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Gravar imagem"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pixeis"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "O Pinta não suporta gravação de imagens neste formato de ficheiro."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Polegadas"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Já existe um ficheiro com o nome \"{0}\". Deseja substituí-lo?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centímetros"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"O ficheiro já existe em \"{1}\". A sua substituição irá sobrepor o seu "
+"conteúdo."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Ecrã completo"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "número de processos a utilizar na renderização"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Janela"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versão"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Página web Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licença"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Reportar um erro"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Disponibilizado nos termos da licença MIT X11."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Traduzir esta aplicação"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Direitos de autor"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Geral"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "pelos contribuidores Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Ferramenta"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Título"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Tecla de atalho"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Caminho"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Suavização"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Qualidade JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Mistura normal / sobrepor mistura"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Qualidade: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Inverter imagem na horizontal"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Contribuidores para esta versão"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Inverter imagem na vertical"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Contribuidores anteriores"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Inverter camada na horizontal"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Afer https://launchpad.net/~agosfernandes\n"
+" Duarte Cunha Leão https://launchpad.net/~duarte-leao\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Ricardo Conde https://launchpad.net/~turotulco\n"
+" Ricardo Perry https://launchpad.net/~pirolocito\n"
+" Sérgio Marques https://launchpad.net/~sergio+marques\n"
+" Sérgio Marques https://launchpad.net/~smarquespt"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Inverter camada na vertical"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Traduzido por:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Finalizar pixeis"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Inspirado no Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Efeito de renderização"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Utiliza alguns ícones de:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "copiar"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Sobre o Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Camada"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informações sobre a versão"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1384,7 +1538,7 @@ msgstr "Tamanho da ponta do lápis"
#: CloudsEffect dialog
msgid "Percentile"
-msgstr "Percentagem"
+msgstr "Percentil"
#: RadialBlurEffect dialog
msgid "Power"
@@ -1447,3 +1601,47 @@ msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
"Dica: Para melhores resultados, utilize as ferramentas de selecção para "
"escolher cada olho."
+
+#~ msgid "%"
+#~ msgstr "%"
+
+#~ msgid "X :"
+#~ msgstr "X:"
+
+#~ msgid "Y :"
+#~ msgstr "Y:"
+
+#~ msgid "Tip : Right-click to remove control points."
+#~ msgstr "Dica: Botão direito do rato para remover pontos de controle"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Imagem OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Suavização"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Mistura normal / sobrepor mistura"
+
+#~ msgid "Show Pad"
+#~ msgstr "Mostrar painel"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Guardar as alterações em \"{0}\" antes de criar uma nova?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Continuar sem gravar"
+
+#~ msgid "Fill mode"
+#~ msgstr "Preenchimento"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Gravar as alterações feitas em \"{0}\" antes de abrir outra imagem?"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-pt_BR.po b/po/messages-pt_BR.po
index 2b90b31..b8b1bf7 100644
--- a/po/messages-pt_BR.po
+++ b/po/messages-pt_BR.po
@@ -7,564 +7,747 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-20 00:36+0000\n"
-"Last-Translator: Luiz Fernando Palacios <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-10 04:42+0000\n"
+"Last-Translator: Fitoschido <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Sobre"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Janela"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pincel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Camada"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Arquivo"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "copiar"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Editar"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Redimensionar Tela"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Exibir"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Ferramenta"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Imagem"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Tecla de atalho"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Camadas"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Misturando Norma"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Ajustes"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Sobrescrever"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efeito_s"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Suavização ligada"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Janela"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Suavização desligada"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Ajuda"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Mudar tamanho da imagem"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Finalizar Pontos"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Ferramentas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Girar 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Virar Imagem Horizontalmente"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documentos"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Virar Imagem Verticalmente"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Camadas"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Girar 90° Sentido Horário"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Histórico"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Girar 90° Sentido Anti-horário"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ocultar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Virar Camada Horizontalmente"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Encaixável"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Virar Camada Verticalmente"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flutuante"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Geral"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Ocultar automaticamente"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} imagem ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Acoplar"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Recortar para Seleção"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Contribuidores para esta versão"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Redimensionar"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Outros Contribuidores"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Tamanho do quadro..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Christian Marques https://launchpad.net/~csmchristian\n"
-" Eliton Miranda da Silva https://launchpad.net/~tudoembrulhado\n"
-" Gervásio da Silva Antônio https://launchpad.net/~gervasioantonio\n"
-" Igor Belchior https://launchpad.net/~igorbelchior86\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" José Humberto Melo https://launchpad.net/~josehumberto-melo\n"
-" Kristian Gomes https://launchpad.net/~kristiang\n"
-" Luiz Fernando Palacios https://launchpad.net/~sapo-mano\n"
-" Paulo N. Júnior https://launchpad.net/~naves-junior\n"
-" Vitor da Silva Gonçalves https://launchpad.net/~vitorsgoncalves"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Inverter na Horizontal"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Traduzido por:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Inverter na Vertical"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Inspirado no trabalho do Paint.NET"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Achatar"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Usando alguns ícones de:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Aproximar"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Sobre o Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Afastar"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informações da versão"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Ampliar para Janela"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Título"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Ampliar para Seleção"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versão"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Tamanho real"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Caminho"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Barra de ferramentas"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licença"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Grade de Pontos"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Publicado sob a licença MIT X11"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Réguas"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Direitos autorais"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pontos"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "por contribuidores Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Polegadas"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "Número de processos usados para renderizar"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centímetros"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Mudar tamanho da imagem"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Tela cheia"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Por percentagem"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Unidades de medida"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Por tamanho absoluto"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Adicionar Nova Camada"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Largura:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Remover Camada"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixels"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplicar Camada"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Altura:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Unir a camada inferior"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Manter a taxa de proporção"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importar do arquivo..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Girar / Ampliar"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Mover camada para cima"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Mover camada para baixo"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Propriedades da Camada"
+msgid "Layer Properties..."
+msgstr "Propiedades da Camada..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nome:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Abrir Arquivo de Imagem"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Visível"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Opacidade:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Salvar tudo"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Redimensionar Tela"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Fechar tudo"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Âncora:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta Website"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Reportar um Bug"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Traduzir este Aplicativo"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Sobre"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Novo..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nova captura de tela"
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Abrir..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Abrir Recente"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Fechar"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Salvar"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Salvar Como..."
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Imprimir"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Fechar"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Novo"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Abrir"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Desfazer"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Repetir"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Recortar"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Copiar"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Colar"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Colar em Nova Camada"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Colar em Nova Imagem"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Apagar Seleção"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Preencher Seleção"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Inverter Seleção"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Selecionar tudo"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Desmarcar"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Retornar ao padrão"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Definir número de cores"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Abrir arquivo de paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Arquivo de paleta (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Todos os arquivos"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Não foi possível abrir arquivo de paleta: {0}.\n"
+"Por favor, verifique se você está tentando abrir um GIMP válido ou paleta "
+"Paint.NET."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Erro"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Salvar arquivo de paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paleta Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Paleta GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Imagem não salva {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Plano de fundo"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nova Imagem"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Tamanho da nova imagem "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Abrir Imagem"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Salvar mudanças na imagem \"{0}\" antes de criar uma nova?"
+msgid "Could not open file: {0}"
+msgstr "Não foi possível abrir o arquivo: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
-"Se você não salvar, todas as alterações serão perdidas permanentemente."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efeito de Renderização"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Continuar sem salvar"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterizar"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Opacidade da Camada"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Inverter cores"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Renomear Camada"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Níveis"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Ocultar Camada"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Preto e Branco"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Exibir Camada"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Níveis Automáticos"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etiqueta1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Matiz / Saturação"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etiqueta"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Brilho / Contraste"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Ruído Aleatório"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sépia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Replantar"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Curvas"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Seletor de Cores"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Mapa de transferência"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Botão esquerdo para definir cor primária. Botão direito para definir cor "
-"secundária."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Pós-seleção"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminosidade"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Não trocar de ferramenta"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Trocar para ferramenta anterior"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Vermelho "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Trocar para ferramenta Lápis"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Verde"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Lápis"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Azul "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Seletor Laço"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Restaurar"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Clique e arraste para desenhar a linha da área a ser selecionada"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Dica: Dê um clique direito para remover os pontos de controle."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Ampliar"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Ajuste de Níveis"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Botão esquerdo para aproximar. Botão direito para afastar. Clique e arraste "
-"para aproximar a seleção"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Histograma de Entrada"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Largura do pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Entrada"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Diminuir tamanho do pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Saída"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Aumentar tamanho do pincel"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Histograma de Saída"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Formato do contorno"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automático"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Formato do preenchimento"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Vermelho"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Formato do contorno e preenchimento"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Azul"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Mover pontos selecionados"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Conectado"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Arraste a seleção para mover o conteúdo"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Desenho a Lápis"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Posicionar"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Artístico"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Clique e arraste para navegar na imagem"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Desfocar"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Clique esquerdo para desenho livre, um ponto de largura com linhas de cores "
-"primárias, clique direito para usar a cor secundária."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Borrar"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Seleção Elíptica"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Inchar"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Clique e arraste para desenhar a seleção elíptica. Pressione shift para "
-"restringir o círculo."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Distorcer"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradiente"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fractal Mandelbrot"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Clique e arraste para desenhar o gradiente da cor primária para a "
-"secundária. Clique com botão direito para reverter."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Renderizar"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Gradiente Linear"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Mediano"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Gradiente Linear Refletido"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Ruído"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Gradiente Linear Diamante"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pincelada"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Gradiente Radial"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Nitidez"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Gradiente Cônico"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Foto"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Modo de Cor"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Pintura a Óleo"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Modo de Transparência"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Borrão gaussiano"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Retângulo Arredondado"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Brilho"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Clique e arraste para desenhar um retângulo arredondado (botão direito para "
-"cor secundária). Pressione o shift para restringir"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Retrato Suavizado"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Raio"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Reflexo de azulejo"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Diminuir o raio do canto do retângulo"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Remoção de Olhos Vermelhos"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Aumentar o raio do canto do retângulo"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Vidro Fosco"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Clique com o botão esquerdo para desenhar com a cor primária, clique com o "
-"botão direito para desenhar com a cor secundária."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Detecção de borda"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Seleção Retangular"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Estilizar"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Clique e arraste para desenhar uma seleção retangular. Pressione shift para "
-"restringir a um quadrado."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fractal Julia"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Balde de Tinta"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Borrar por Movimento"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Clique com o botão esquerdo para preencher uma região com a cor primária, "
-"clique com o botão direito para preencher com a cor secundária."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Realçar"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Ferramenta Carimbo"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Desenho a tinta"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Mover Seleção"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Borrão por ampliação"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Arraste a seleção para mover suas bordas."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Inversão Polar"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Forma livre"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Nuvens"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Modo preenchimento"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragmento"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Contíguo"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Reduzir ruído"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Borrão radial"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerância"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Torcer"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipse"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Adicionar Ruído"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Clique e arraste para desenhar uma elipse (clique com botão direito para cor "
-"secundária). Pressione shift para restringir a um círculo."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relevo"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Contorno"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Ruído Aleatório"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Replantar"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etiqueta1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etiqueta"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Escolha a cor primária"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Escolha a cor secundária"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Escolha o padrão de cores"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Posicionar"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Clique e arraste para navegar na imagem"
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -578,42 +761,34 @@ msgstr ""
"Clique com o botão esquerdo para posicionar o cursor, então digite o texto "
"desejado. A cor do texto é a cor primária."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Fonte"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Negrito"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Itálico"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Sublinhado"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Alinhar à esquerda"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Alinhar Centralizado"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Alinhar à direita"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Varinha Mágica de Seleção"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Clique para selecionar a região de cor similar."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Retângulo"
@@ -626,657 +801,637 @@ msgstr ""
"Clique e arraste para desenhar um retângulo (clique com o botão direito para "
"cor secundária). Pressione shift para restringir a um quadrado."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linha"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Forma livre"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
"Clique com o botão esquerdo para desenhar com a cor primária, clique com o "
-"botão direito para cor secundária."
+"botão direito para desenhar com a cor secundária."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Recolorir"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Preencha o Estilo"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr ""
-"Clique com o botão esquerdo para substituir a cor secundária pela cor "
-"primária."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Formato do contorno"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Borracha"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Formato do preenchimento"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Clique e arraste para apagar uma parte da imagem."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Formato do contorno e preenchimento"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pincelada"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Mode transbordo"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Distorcer"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Contíguo"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Remoção de Olhos Vermelhos"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Foto"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerância"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Borrar por Movimento"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linha"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Borrar"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Clique com o botão esquerdo para desenhar com a cor primária, clique com o "
+"botão direito para cor secundária."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Desenho a tinta"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Mover Seleção"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Artístico"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Arraste a seleção para mover suas bordas."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Borrão radial"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Seleção Retangular"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Desfocar"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Clique e arraste para desenhar uma seleção retangular. Pressione shift para "
+"restringir a um quadrado."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Detecção de Borda"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Varinha Mágica de Seleção"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Estilizar"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Clique para selecionar a região de cor similar."
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Vidro Fosco"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Seleção Elíptica"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Pintura a Óleo"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Clique e arraste para desenhar a seleção elíptica. Pressione shift para "
+"restringir o círculo."
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Borrão por ampliação"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Seletor Laço"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Inversão Polar"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Clique e arraste para desenhar a linha da área a ser selecionada"
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Nuvens"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Balde de Tinta"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Renderizar"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Clique com o botão esquerdo para preencher uma região com a cor primária, "
+"clique com o botão direito para preencher com a cor secundária."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Brilho"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradiente"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Adicionar Ruído"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Clique e arraste para desenhar o gradiente da cor primária para a "
+"secundária. Clique com botão direito para reverter."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Ruído"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Gradiente Linear"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragmento"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Gradiente Linear Refletido"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Nitidez"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Gradiente Linear Diamante"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Desenho a Lápis"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Gradiente Radial"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Contorno"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Gradiente Cônico"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Borrão gaussiano"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Modo"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Reflexo de azulejo"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Modo de Cor"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relevo"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Modo de Transparência"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Realçar"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Largura do pincel"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fractal Mandelbrot"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Diminuir tamanho do pincel"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Inchar"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Aumentar tamanho do pincel"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Torcer"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pincel"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Retrato Suavizado"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Tipo"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Reduzir ruído"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Recolorir"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fractal Julia"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
+"Clique com o botão esquerdo para substituir a cor secundária pela cor "
+"primária."
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Mediano"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normal"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Curvas"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Círculos"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Níveis"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Quadrados"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Níveis Automáticos"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Espátula"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Inverter cores"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Grade"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterizar"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipse"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Preto e Branco"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Clique e arraste para desenhar uma elipse (clique com botão direito para cor "
+"secundária). Pressione shift para restringir a um círculo."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Matiz / Saturação"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Ferramenta Carimbo"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sépia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Ctrl+Botão Direito do mouse para ajustar a origem, botão direito para pintar."
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Brilho / Contraste"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Ampliar"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Ajuste de Níveis"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Botão esquerdo para aproximar. Botão direito para afastar. Clique e arraste "
+"para aproximar a seleção"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Histograma de Entrada"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Retângulo Arredondado"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Entrada"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Clique e arraste para desenhar um retângulo arredondado (botão direito para "
+"cor secundária). Pressione o shift para restringir"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Saída"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Raio"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Histograma de Saída"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Diminuir o raio do canto do retângulo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automático"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Aumentar o raio do canto do retângulo"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Restaurar"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Seletor de Cores"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Vermelho"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Botão esquerdo para definir cor primária. Botão direito para definir cor "
+"secundária."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Verde"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Pós-seleção"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Azul"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Não trocar de ferramenta"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Conectado"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Trocar para ferramenta anterior"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Mapa de transferência"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Trocar para ferramenta Lápis"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Lápis"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminosidade"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Borracha"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Clique e arraste para apagar uma parte da imagem."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Vermelho "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Clique esquerdo para desenho livre, um ponto de largura com linhas de cores "
+"primárias, clique direito para usar a cor secundária."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Azul "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Mover pontos selecionados"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Dica: Dê um clique direito para remover os pontos de controle."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Arraste a seleção para mover o conteúdo"
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Adicionar Nova Camada"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ocultar"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Remover Camada"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Acoplar"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplicar Camada"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Ocultar automaticamente"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Unir a camada inferior"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Encaixável"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importar do arquivo..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flutuante"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Inverter na Horizontal"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "Nome da Opção"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Inverter na Vertical"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Por percentagem"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Girar / Ampliar"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Por tamanho absoluto"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Mover camada para cima"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Largura:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Mover camada para baixo"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixels"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Abrir Arquivo de Imagem"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Altura:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importar do arquivo"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Manter a taxa de proporção"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Novo..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Âncora:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Abrir..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Tamanho da nova imagem "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Abrir Recente"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Propriedades da Camada"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Fechar"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nome:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Salvar"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Visível"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Salvar Como..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacidade:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Imprimir"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Fechar"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Arquivo"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Novo"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Editar"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Abrir"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Exibir"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Plano de fundo"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Imagem"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Abrir Imagem"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Camadas"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Não foi possível abrir o arquivo: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Ajustes"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Erro"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efeito_s"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Salvar alterações na imagem \"{0}\" antes de abrir uma nova imagem?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Janela"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Arquivos de Imagem"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Janela de Ferramentas"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Todos os arquivos"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Ajuda"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Salvar Arquivo de Imagem"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Ferramentas"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} imagem ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documentos"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Imagem OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Camadas"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Histórico"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Capturar imagem da tela"
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Atraso antes de capturar a imagem da tela (segundos):"
+
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Salvar mudanças na imagem \"{0}\" antes de fechar?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr ""
+"Se você não salvar, todas as alterações serão perdidas permanentemente."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Fechar sem salvar"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Recortar para Seleção"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Redimensionar"
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Tamanho do quadro..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Girar 90° Sentido Horário"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Girar 90° Sentido Anti-horário"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Girar 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Achatar"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Desfazer"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Repetir"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Recortar"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Copiar"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Colar"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Colar em Nova Camada"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Colar em Nova Imagem"
-
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Apagar Seleção"
-
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Preencher Seleção"
-
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Inverter Seleção"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Ajustar tamanho do pálete"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Selecionar tudo"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Novo tamanho do pálete"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Desmarcar"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Opacidade da Camada"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Aproximar"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Renomear Camada"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Afastar"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Ocultar Camada"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Ampliar para Janela"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Exibir Camada"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Ampliar para Seleção"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Arquivos de Imagem"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Tamanho real"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Colar cancelado"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Grade de Pontos"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "A área de transferência não possui uma imagem"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Réguas"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Salvar Arquivo de Imagem"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pontos"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta não tem suporte para salvar a imagem neste formato."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Polegadas"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Um arquivo chamado \"{0}\" já existe. Você deseja substitui-lo?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centímetros"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"O arquivo já existe em \"{1}\". Subsituindo-o sobrescreverá seu conteúdo."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Tela cheia"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "Número de processos usados para renderizar"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Janela"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versão"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta Website"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licença"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Reportar um Bug"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Publicado sob a licença MIT X11"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Traduzir este Aplicativo"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Direitos autorais"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Geral"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "por contribuidores Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Ferramenta"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Título"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Tecla de atalho"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Caminho"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Suavização"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Qualidade do JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Combinação automática / Substituir combinação"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Qualidade: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Virar Imagem Horizontalmente"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Contribuidores para esta versão"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Virar Imagem Verticalmente"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Outros Contribuidores"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Virar Camada Horizontalmente"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Celso H. L. S. Junior https://launchpad.net/~celsojunior\n"
+" Christian Marques https://launchpad.net/~csmchristian\n"
+" Eliton Miranda da Silva https://launchpad.net/~tudoembrulhado\n"
+" Felipe Amaral https://launchpad.net/~felpi-flick\n"
+" Fitoschido https://launchpad.net/~fitoschido\n"
+" Gervásio da Silva Antônio https://launchpad.net/~gervasioantonio\n"
+" Igor Belchior https://launchpad.net/~igorbelchior86\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" José Humberto Melo https://launchpad.net/~josehumberto-melo\n"
+" Julius Miranda https://launchpad.net/~juliusmiranda\n"
+" Kristian Gomes https://launchpad.net/~kristiang\n"
+" Luiz Fernando Palacios https://launchpad.net/~sapo-mano\n"
+" Luiz da Costa Batista Silva https://launchpad.net/~luiz-rsk\n"
+" Paulo N. Júnior https://launchpad.net/~naves-junior\n"
+" Vitor da Silva Gonçalves https://launchpad.net/~vitorsgoncalves"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Virar Camada Verticalmente"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Traduzido por:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Finalizar Pontos"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Inspirado no trabalho do Paint.NET"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Efeito de Renderização"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Usando alguns ícones de:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "copiar"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Sobre o Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Camada"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informações da versão"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1461,14 +1616,43 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Continuar sem salvar"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Salvar mudanças na imagem \"{0}\" antes de criar uma nova?"
+
#~ msgid "X :"
#~ msgstr "X:"
#~ msgid "Y :"
#~ msgstr "Y:"
+#~ msgid "Fill mode"
+#~ msgstr "Modo preenchimento"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Imagem OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Suavização"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Combinação automática / Substituir combinação"
+
#~ msgid "Show Pad"
#~ msgstr "Exibir bloco"
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Dica: Clique com o botão direito para remover pontos de controle."
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Salvar alterações na imagem \"{0}\" antes de abrir uma nova imagem?"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-ro.po b/po/messages-ro.po
index 3fa35c4..d6fe738 100644
--- a/po/messages-ro.po
+++ b/po/messages-ro.po
@@ -7,670 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:13+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-27 01:57+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Romanian <ro at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Despre aplicaţie"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pensulă de pictură"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Fișier"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Editare"
-
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Vizualizare"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr ""
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Imagine"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr ""
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Straturi"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "Ajustări"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Efe_cte"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Fereastră"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Ajutor"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Unelte"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paletă"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Documente"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Redimensionează imaginea"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Straturi"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Istoric"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ascunde"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Docabil"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flotant"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Ascundere automată"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Andochează"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-"Launchpad Contributions:\n"
-" Alex Butum https://launchpad.net/~codeninja\n"
-" Jonathan Pobst https://launchpad.net/~jpobst"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Tradus de:"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Despre Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Titlu"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Versiune"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Cale"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licenţă"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Copyright"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Redimensionează imaginea"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Lățime:"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixeli"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Înălțime:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Menține raportul de aspect"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Nume:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Vizibil"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Imagine nouă"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Dacă nu salvați, toate modificările vor fi pierdute definitiv."
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Redenumire strat"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etichetă1"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Despre aplicaţie"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etichetă"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Selector de culori"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Creion"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Selecție eliptică"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paletă"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Imagine nouă"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr ""
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -678,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -704,541 +680,710 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr ""
-
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etichetă1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etichetă"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Pan"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Selecție eliptică"
+
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pensulă de pictură"
+
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zoom"
+
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Selector de culori"
+
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Creion"
+
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ascunde"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Andochează"
+
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Ascundere automată"
+
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Docabil"
+
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flotant"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Lățime:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixeli"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Înălțime:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Menține raportul de aspect"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Nume:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Vizibil"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Fișier"
+
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Editare"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Vizualizare"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Imagine"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Straturi"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "Ajustări"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Efe_cte"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Fereastră"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Ajutor"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Unelte"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Documente"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Straturi"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Istoric"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Dacă nu salvați, toate modificările vor fi pierdute definitiv."
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Redenumire strat"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Versiune"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licenţă"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Copyright"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Titlu"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Cale"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Alex Butum https://launchpad.net/~monocoder\n"
+" Jonathan Pobst https://launchpad.net/~jpobst"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Tradus de:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Despre Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
msgstr ""
#: BulgeEffect dialog
diff --git a/po/messages-ru.po b/po/messages-ru.po
index 1356cf6..8379246 100644
--- a/po/messages-ru.po
+++ b/po/messages-ru.po
@@ -7,557 +7,748 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-07-26 11:51+0000\n"
-"Last-Translator: sasha_shum <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-10 15:41+0000\n"
+"Last-Translator: Nikita Putko <Unknown>\n"
"Language-Team: Russian <ru at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "О программе"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Окно"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Кисть"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Слой"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Файл"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "- копия"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Правка"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Изменить размер холста"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Вид"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Инструмент"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Изображение"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Горячая клавиша"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "С_лои"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Обычное смешивание"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Цвета"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Переписать"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Эффекты"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Включить сглаживание"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Окно"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Выключить сглаживание"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Справка"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Масштабировать изображение"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Завершить пиксели"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Инструменты"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Повернуть на 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Палитра"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Отразить изображение по горизонтали"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Документы"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Отразить изображение по вертикали"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Слои"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Повернуть на 90° по часовой стрелке"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "История"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Повернуть на 90° против часовой стрелки"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Скрыть"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Отразить слой по горизонтали"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Прикрепляемое"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Отразить слой по вертикали"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Плавающее"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Общие"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Автоматически скрывать"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "Изображение {0} ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Прикрепить"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Откадрировать в выделение"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Работавшие над этой версией"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Масштабировать..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Работавшие над предыдущими версиями"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Размер холста..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Maia Kozheva https://launchpad.net/~sikon\n"
-" ma$terok https://launchpad.net/~m-shein"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Отразить по горизонтали"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Переведено:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Отразить по вертикали"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Основано на Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Объединить слои"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Использованы некоторые значки из:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Крупнее"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "О программе Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Мельче"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Сведения о версии"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "По размеру окна"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Название"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "По размеру выделения"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Версия"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Истинный размер"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Путь"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Панель инструментов"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Лицензия"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Пиксельная сетка"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Распространяется под лицензией MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Линейки"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Авторское право"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Пиксели"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "разработчики Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Дюймы"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "число потоков для использования при отрисовке"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Сантиметры"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Масштабировать изображение"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Полный экран"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "В процентах:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Единицы измерения"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Абсолютный размер:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Добавить слой"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Ширина:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Удалить слой"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "пикселей"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Дублировать слой"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Высота:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Объединить с нижележащим"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Соблюдать соотношение сторон"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Импорт из файла..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Поворот/Масштабирование"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Переместить слой вверх"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Переместить слой вниз"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Свойства слоя"
+msgid "Layer Properties..."
+msgstr "Параметры слоя..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Имя:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Открыть файл изображения"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Видимый"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Импорт из файла"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Непрозрачность:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Сохранить как"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Изменить размер холста"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Закрыть все"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Якорь:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Веб-сайт Pinta"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Сообщить о неполадке"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Перевести это приложение"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "О программе"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Создать..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Новый снимок экрана"
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Открыть..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Открыть последние"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Закрыть"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Сохранить"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Сохранить как..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Печать"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Выход"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Создать"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Открыть"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Отменить"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Вернуть"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Вырезать"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Копировать"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Вставить"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Вставить как новый слой"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Вставить как новое изображение"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Удалить выделение"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Заполнить выделение"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Обратить выделение"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Выделить всё"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Сбросить выделение"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Сбросить установки"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Установить количество цветов"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Палитра"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Открыть файл палитры"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Файлы палитры (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Все файлы"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Не открывается файл палитры: {0}.\n"
+"Пожалуйста, проверьте, что вы открываете правильный файл палитры GIMP или "
+"Paint.NET"
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Ошибка"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Сохранить файл палитры"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Палитра Paint.NET (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Палитра GIMP (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Несохранённое изображение {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Фон"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Новое изображение"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Размер нового изображения "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Открыть изображение"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Сохранить изменения изображения \"{0}\" перед созданием нового?"
+msgid "Could not open file: {0}"
+msgstr "Не удалось открыть файл: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Если вы не сохраните изменения, они будут потеряны безвозвратно."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Эффект отрисовки"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Продолжить без сохранения"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Постеризация"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Непрозрачность слоя"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Обратить цвета"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Переименовать слой"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Уровни"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Скрыть слой"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Чёрно-белое"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Показать слой"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Автокоррекция"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "метка1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Тон/насыщенность"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "метка"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Яркость/контраст"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Случайный шум"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Сепия"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Перемешать"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Кривые"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Получение цвета"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Канал"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Щёлкните левой кнопкой для задания первичного цвета. Щёлкните правой кнопкой "
-"для задания вторичного цвета."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "После выбора"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Освещённость"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Не переключайте инструмент"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Переключиться на предыдущий инструмент"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Красный "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Переключиться на инструмент \"Карандаш\""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Зелёный"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Карандаш"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Синий "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Выделение лассо"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Сброс"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-"Нажмите и перетаскивайте мышь, чтобы выделить контур области выделения."
+"Подсказка: Нажмите правую кнопку мыши, чтобы убрать контрольные отметки"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Масштабирование"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Коррекция уровней"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Щёлкните левой кнопкой для приближения. Щёлкните правой кнопкой для "
-"отдаления. Нажмите и перетаскивайте мышь, чтобы масштабировать по выделению."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Гистограмма входа"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Толщина кисти"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Вход"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Уменьшить размер кисти"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Выход"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Увеличить размер кисти"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Гистограмма выхода"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Обвести фигуру"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Автоматически"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Залить фигуру"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Красный"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Залить и обвести фигуру"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Синий"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Переместить выбранные пиксели"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Связь"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Перетащите мышью выделение, чтобы переместить выделенный фрагмент."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Карандашный набросок"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Панорама"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Художественные"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Щёлкните и перетаскивайте для навигации по изображению."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Расфокусировка"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Щёлкните левой кнопкой для рисования произвольных линий в один пиксель "
-"толщиной первичным цветом, правой кнопкой для использования вторичного цвета."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Размытие"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Эллиптическое выделение"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Выпуклость"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Щёлкните и перетаскивайте, чтобы нарисовать эллиптическое выделение. Держите "
-"Shift, чтобы выделить круг."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Искажения"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Градиент"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Фрактал Мандельброта"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Щёлкните и перетаскивайте, чтобы нарисовать градиент от первичного цвета к "
-"вторичному. Щёлкните правой кнопкой для инверсии."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Рисование"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Линейный градиент"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Медиана"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Линейный отражённый градиент"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Шум"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Линейный ромбовидный градиент"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Пикселизация"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Радиальный градиент"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Добавить резкость"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Конический градиент"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Снимок"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Цветовой режим"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Масляные краски"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Режим прозрачности"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Размывание Гаусса"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Скруглённый прямоугольник"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Сияние"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Щёлкните и перетаскивайте мышь, чтобы нарисовать скруглённый прямоугольник "
-"(правая кнопка рисует вторичным цветом). Зажмите Shift, чтобы получить "
-"квадрат."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Смягчить портрет"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Радиус"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Мозаичное отражение"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Уменьшить радиус углов прямоугольника"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Удаление красных глаз"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Увеличить радиус углов прямоугольника"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Матовое стекло"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Нажмите левую кнопку, чтобы рисовать первичным цветом, правую - вторичным."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Определение краёв"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Прямоугольное выделение"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Стилизация"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Нажмите и перетаскивайте, чтобы нарисовать прямоугольное выделение. Нажмите "
-"Shift, чтобы получить квадрат."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Фрактал Жюлиа"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Плоская заливка"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Размытие в движении"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Щёлкните левой кнопкой, чтобы залить регион первичным цветом, правой - "
-"вторичным."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Барельеф"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Штамп клонирования"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Набросок чернилами"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Перемещение выделения"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Увеличительное размытие"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Перетащите выделение мышью, чтобы переместить контур выделения."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Полярная инверсия"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Произвольная фигура"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Облака"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Режим заливки"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Фрагмент"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Смежная область"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Уменьшить шум"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Глобальная"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Радиальное размытие"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Толерантность"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Завихрение"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Эллипс"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Добавить шум"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Щёлкните и перетаскивайте мышь, чтобы нарисовать эллипс (правая кнопка "
-"рисует вторичным цветом). Нажмите Shift, чтобы получить круг."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Рельеф"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Контур"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Случайный шум"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Перемешать"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "метка1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "метка"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Выберите цвет переднего плана"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Выберите фоновый цвет"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Выберите цвет цалитры"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Перемещение"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Щёлкните и перетаскивайте для навигации по изображению."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -571,42 +762,34 @@ msgstr ""
"Щёлкните левой кнопкой, чтобы поместить курсор, затем наберите нужный текст. "
"Текст рисуется первичным цветом."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Шрифт"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Полужирный"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Курсивный"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Подчёркнутый"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "По левому краю"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "По центру"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "По правому краю"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Выделение \"волшебная палочка\""
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Щёлкните, чтобы выделить регион с похожим цветом."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Прямоугольник"
@@ -619,655 +802,626 @@ msgstr ""
"Щёлкните и перетащите мышь, чтобы нарисовать прямоугольник (правая кнопка "
"рисует вторичным цветом). Зажмите Shift, чтобы получить квадрат."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Линия"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Произвольная фигура"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-"Щёлкните левой кнопкой, чтобы рисовать первичным цветом, правой - вторичным."
-
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Перекрашивание"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Щёлкните левой кнопкой, чтобы заменить вторичный цвет первичным."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Ластик"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Щёлкните и перетаскивайте мышь, чтобы стереть часть изображения."
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Пикселизация"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Искажения"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Удаление красных глаз"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Снимок"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Размытие в движении"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Размытие"
+"Нажмите левую кнопку, чтобы рисовать первичным цветом, правую - вторичным."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Набросок чернилами"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Стиль заполнения"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Художественные"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Обвести фигуру"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Радиальное размытие"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Залить фигуру"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Расфокусировка"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Залить и обвести фигуру"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Определение краёв"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Избыточный режим"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Стилизация"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Смежная область"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Матовое стекло"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Глобальная"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Масляные краски"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Чувствительность"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Увеличительное размытие"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Линия"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Полярная инверсия"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Щёлкните левой кнопкой, чтобы рисовать первичным цветом, правой - вторичным."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Облака"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Перемещение выделения"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Рисование"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Перетащите выделение мышью, чтобы переместить контур выделения."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Сияние"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Прямоугольное выделение"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Добавить шум"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Нажмите и перетаскивайте, чтобы нарисовать прямоугольное выделение. Нажмите "
+"Shift, чтобы получить квадрат."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Шум"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Волшебная палочка"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Фрагмент"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Щёлкните, чтобы выделить регион с похожим цветом."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Добавить резкость"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Эллиптическое выделение"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Карандашный набросок"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Щёлкните и перетаскивайте, чтобы нарисовать эллиптическое выделение. Держите "
+"Shift, чтобы выделить круг."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Контур"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Выделение лассо"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Размывание Гаусса"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr ""
+"Нажмите и перетаскивайте мышь, чтобы выделить контур области выделения."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Мозаичное отражение"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Плоская заливка"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Рельеф"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Щёлкните левой кнопкой, чтобы залить регион первичным цветом, правой - "
+"вторичным."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Барельеф"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Градиент"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Фрактал Мандельброта"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Щёлкните и перетаскивайте, чтобы нарисовать градиент от первичного цвета к "
+"вторичному. Щёлкните правой кнопкой для инверсии."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Выпуклость"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Линейный градиент"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Завихрение"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Линейный отражённый градиент"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Смягчить портрет"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Линейный ромбовидный градиент"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Уменьшить шум"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Радиальный градиент"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Фрактал Жюлиа"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Конический градиент"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Медиана"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Режим"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Кривые"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Цветовой режим"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Уровни"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Режим прозрачности"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Автокоррекция"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Толщина кисти"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Обратить цвета"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Уменьшить размер кисти"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Постеризация"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Увеличить размер кисти"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Чёрно-белое"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Кисть"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Тон/насыщенность"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Тип"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Сепия"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Перекрашивание"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Яркость/контраст"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Щёлкните левой кнопкой, чтобы заменить вторичный цвет первичным."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Коррекция уровней"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Обычный"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Гистограмма входа"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Круги"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Вход"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Квадраты"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Выход"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Брызги"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Гистограмма выхода"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Сетка"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Автоматически"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Эллипс"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Сброс"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Щёлкните и перетаскивайте мышь, чтобы нарисовать эллипс (правая кнопка "
+"рисует вторичным цветом). Нажмите Shift, чтобы получить круг."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Красный"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Штамп клонирования"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Зелёный"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Ctrl+щелчок левой кнопкой мыши для установки основы, левой кнопкой мыши "
+"начать рисовать"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Синий"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Масштабирование"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Связь"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Щёлкните левой кнопкой для приближения. Щёлкните правой кнопкой для "
+"отдаления. Нажмите и перетаскивайте мышь, чтобы масштабировать по выделению."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Канал"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Скруглённый прямоугольник"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Щёлкните и перетаскивайте мышь, чтобы нарисовать скруглённый прямоугольник "
+"(правая кнопка рисует вторичным цветом). Зажмите Shift, чтобы получить "
+"квадрат."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Освещённость"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Радиус"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Уменьшить радиус углов прямоугольника"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Красный "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Увеличить радиус углов прямоугольника"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Синий "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Получение цвета"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Щёлкните левой кнопкой для задания первичного цвета. Щёлкните правой кнопкой "
+"для задания вторичного цвета."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Добавить слой"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Удалить слой"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Дублировать слой"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "После выбора"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Объединить с нижележащим"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Не переключайте инструмент"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Импорт из файла..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Переключиться на предыдущий инструмент"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Отразить по горизонтали"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Переключиться на инструмент \"Карандаш\""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Отразить по вертикали"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Карандаш"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Поворот/Масштабирование"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Ластик"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Переместить слой вверх"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Щёлкните и перетаскивайте мышь, чтобы стереть часть изображения."
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Переместить слой вниз"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Щёлкните левой кнопкой для рисования произвольных линий в один пиксель "
+"толщиной первичным цветом, правой кнопкой для использования вторичного цвета."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Открыть файл изображения"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Переместить выбранные пиксели"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Импорт из файла"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Перетащите мышью выделение, чтобы переместить выделенный фрагмент."
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Создать..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Скрыть"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Открыть..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Прикрепить"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Открыть последние"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Автоматически скрывать"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Закрыть"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Прикрепляемое"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Сохранить"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Плавающее"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Сохранить как..."
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "Название опции"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Печать"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "В процентах:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Выход"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Абсолютный размер:"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Создать"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Ширина:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Открыть"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "пикселей"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Фон"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Высота:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Открыть изображение"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Соблюдать соотношение сторон"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Не удалост открыть файл: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Якорь:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Ошибка"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Размер нового изображения "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr ""
-"Сохранить изменения изображения \"{0}\" перед открытием нового изображения?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Свойства слоя"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Файлы изображений"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Имя:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Все файлы"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Видимый"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Сохранить файл изображения"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Непрозрачность:"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "Изображение {0} ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Изображение OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Файл"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Сохранить изменения изображения \"{0}\" перед закрытием?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Правка"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Закрыть без сохранения"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Вид"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Откадрировать в выделение"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Изображение"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Масштабировать..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "С_лои"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Размер холста..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Цвета"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Повернуть на 90° по часовой стрелке"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Эффекты"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Повернуть на 90° против часовой стрелки"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Окно"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Повернуть на 180°"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Инструментальные окна"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Объединить слои"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Справка"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Отменить"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Инструменты"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Вернуть"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Документы"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Вырезать"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Слои"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Копировать"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "История"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Вставить"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Сделать снимок экрана"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Вставить как новый слой"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Задержка перед созданием снимка экрана (в секундах)"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Вставить как новое изображение"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Сохранить изменения изображения \"{0}\" перед закрытием?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Удалить выделение"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Если вы не сохраните изменения, они будут потеряны безвозвратно."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Заполнить выделение"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Закрыть без сохранения"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Обратить выделение"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Изменить размер палитры"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Выделить всё"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Новый размер палитры"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Сбросить выделение"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Непрозрачность слоя"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Крупнее"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Переименовать слой"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Мельче"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Скрыть слой"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "По размеру окна"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Показать слой"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "По размеру выделения"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Файлы изображений"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Истинный размер"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Вставка отменена"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Пиксельная сетка"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Буфер обмена не содержит изображения"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Линейки"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Сохранить файл изображения"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Пиксели"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta не поддерживает сохранение изображений в этом формате."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Дюймы"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Файл с именем \"{0}\" существует. Хотите ли вы его заменить?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Сантиметры"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "Файл уже существует в \"{1}\". Его замена перзапишет его содержимое."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Полный экран"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "число потоков для использования при отрисовке"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Окно"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Версия"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Веб-сайт Pinta"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Лицензия"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Сообщить о неполадке"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Распространяется под лицензией MIT X11."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Перевести это приложение"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Авторское право"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Общие"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "разработчики Pinta"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Инструмент"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Название"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Горячая клавиша"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Путь"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Сглаживание"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Качество JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Обычное смешение/Переопределить смешение"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Качество: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Отразить изображение по горизонтали"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Работавшие над этой версией"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Отразить изображение по вертикали"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Работавшие над предыдущими версиями"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Отразить слой по горизонтали"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alexey Ivanov https://launchpad.net/~alexey-ivanov\n"
+" Anzhel https://launchpad.net/~a9227\n"
+" Eugene Rozov https://launchpad.net/~eugene-rozov\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Maia Kozheva https://launchpad.net/~sikon\n"
+" Nikita Putko https://launchpad.net/~ktototam98\n"
+" ma$terok https://launchpad.net/~m-shein"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Отразить слой по вертикали"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Переведено:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Завершить пиксели"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Основано на Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Эффект отрисовки"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Использованы некоторые значки из:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "- копия"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "О программе Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Слой"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Сведения о версии"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1449,9 +1603,37 @@ msgstr ""
"Подсказка: для наилучшего результата сначала выделите каждый глаз "
"инструментами выделения."
+#~ msgid "Help"
+#~ msgstr "Помощь"
+
+#~ msgid "Adjustments"
+#~ msgstr "Коррекция"
+
+#~ msgid "Effects"
+#~ msgstr "Эффекты"
+
+#~ msgid "File"
+#~ msgstr "Файл"
+
+#~ msgid "Edit"
+#~ msgstr "Правка"
+
+#~ msgid "View"
+#~ msgstr "Вид"
+
+#~ msgid "Image"
+#~ msgstr "Изображение"
+
#~ msgid "%"
#~ msgstr "%"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Сохранить изменения изображения \"{0}\" перед созданием нового?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Продолжить без сохранения"
+
#~ msgid "X :"
#~ msgstr "X :"
@@ -1461,5 +1643,22 @@ msgstr ""
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Подсказка: щёлкните правой кнопкой для удаления контрольных точек."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr ""
+#~ "Сохранить изменения изображения \"{0}\" перед открытием нового изображения?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Изображение OpenRaster (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Сглаживание"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Обычное смешение/Переопределить смешение"
+
+#~ msgid "Fill mode"
+#~ msgstr "Режим заливки"
+
#~ msgid "Show Pad"
#~ msgstr "Показать окно"
diff --git a/po/messages-sk.po b/po/messages-sk.po
index 548953f..31e4d18 100644
--- a/po/messages-sk.po
+++ b/po/messages-sk.po
@@ -7,556 +7,746 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-19 16:45+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-18 14:17+0000\n"
"Last-Translator: DAG Software <Unknown>\n"
"Language-Team: Slovak <sk at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "O programe"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Okno"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Štetec"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Vrstva"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Súbor"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopírovať"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Úpravy"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Zmeniť veľkosť plátna"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Zobraziť"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Nástroj"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Obrázok"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Klávesová skratka"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Vrstvy"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Normálne miešanie"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Prispôsobenie"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Prepísať"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Efekty"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Zapnúť antialiasing"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Okno"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Vypnúť antialiasing"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Nápoveda"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Zmeniť veľkosť obrázka"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Dokončiť pixle"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Nástroje"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Otočiť o 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Preklopiť obrázok vodorovne"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenty"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Preklopiť obrázok zvislo"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Vrstvy"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Otočiť o 90° v smere hodinových ručičiek"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "História"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Otočiť o 90° proti smeru hodinovích ručičiek"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Skryť"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Preklopiť vrstvu vodorovne"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dokovateľné"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Preklopiť vrstvu zvislo"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Plávajúce"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Všeobecné"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automaticky skrývať"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} obrázok ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Dokovať"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Vystrihnúť na výber"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Prispeli do tohto vydania"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Zmeniť veľkosť..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Predchádzajúci prispievatelia"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Veľkosť plátna..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" DAG Software https://launchpad.net/~dagsoftware\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" helix84 https://launchpad.net/~helix84"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Prevrátiť vodorovne"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Preložili:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Prevrátiť zvislo"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Založené na práci Paint.NET-u:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Sploštiť"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Použité niektoré ikony z:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Priblížiť"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "O programe Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Oddialiť"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Info o verzii"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Priblížiť do okna"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Názov"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Priblížiť na výber"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Verzia"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Aktuálna veľkosť"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Cesta"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Panel nástrojov"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licencia"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Pixelová mriežka"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Vydané pod licenciou MIT X11"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Pravítka"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Autorské práva"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pixely"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "od Pinta prispievateľov"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Palce"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "počet vlákien použitých na vykreslenie"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimetre"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Zmeniť veľkosť obrázka"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Celá obrazovka"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Percentuálne:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Jednotky pravítka"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Podľa abs. veľkosti"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Pridať novú vrstvu"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Šírka:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Odstrániť vrstvu"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "pixelov"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplikovať vrstvu"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Výška:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Zlúčiť vrstvy"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Zachovať pomer strán"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Vložit zo súboru..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Otočenie / Priblíženie"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Posunúť vrstvu vyžšie"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Posunúť vrstvu nižšie"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Vlastnosti vrstvy"
+msgid "Layer Properties..."
+msgstr "Vlastnosti vrstvy..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Názov:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Otvoriť súbor obrázka"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Viditeľnosť"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importovať zo súboru"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Priehľadnosť:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Uložiť všetko"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Zmeniť veľkosť plátna"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Zatvoriť všetko"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Kotva:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta Webstránka"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Nahlásiť chybu"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Preložiť tento program"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "O programe"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nový..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nový snímok obrazovky"
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Otvoriť..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Otvoriť nedávne"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Zavrieť"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Uložiť"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Uložiť ako..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Tlačiť"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Ukončiť"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nový"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Otvoriť"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Späť"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Znovu"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Vystrihnúť"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopírovať"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Vložiť"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Vložiť do novej vrstvy"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Vložiť do nového obrázka"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Vymazať výber"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Vyplniť výber"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Invertovať výber"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Vybrať všetko"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Zrušiť výber"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Nastaviť na východzie"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Nastaviť počet farieb"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Otvoriť súbor s paletou"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Súbory paliet (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Všetky súbory"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Nedal sa otvoriť súbor palety: {0}.\n"
+"Prosím overte, že sa pokúšate otvoriť platnú paletu GIMP alebo Paint.NET."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Chyba"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Uložiť súbor palety"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET paleta (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP paleta (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Neuložený obrázok {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Pozadie"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nový obrázok"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Veľkosť nového obrázka "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Otvoriť obrázok"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Uložiť zmeny do obrázka \"{0}\" pred vytvorením nového?"
+msgid "Could not open file: {0}"
+msgstr "Nedá sa otvoriť súbor: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Ak neuložíte, všetky zmeny budú navždy stratené."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Vykresľovací efekt"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Pokračovať bez uloženia"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterizovať"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Priehľadnosť vrstvy"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Invertovať farby"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Premenovať vrstvu"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Úrovne"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Skryť vrstvu"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Čiernobiele"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Zobraziť vrstvu"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Automatické úrovne"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "popis1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Odtieň / sýtosť"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "popis"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Jas / kontrast"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Náhodný šum"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sépia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Nový počiatok"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Krivky"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Výber farby"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Prenosová mapa"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Kliknutím ľavým tlačidlom vyberiete primárnu farbu. Kliknutím pravým "
-"tlačidlom vyberiete sekundárnu farbu."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Po vybraní"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Svietivosť"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Neprepínať nástroj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Prepnúť na predošlý nástroj"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Červená "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Prepnúť na ceruzku"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Zelená"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Ceruzka"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Modrá "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Laso"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Zresetovať"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Kliknutím a ťahaním obtiahnuť vybratú blasť."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Tip: Kliknite pravým na odstránenie kontrolných bodov."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Priblíženie"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Doladenie úrovní"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Kliknutím ľavým tlačidlom priblížiť. Kliknutím pravým tlačidlom oddialiť. "
-"Kliknutím a ťahaním priblížiť výber."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Histogram vstupu"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Šírka štetca"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Vstup"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Zmenšiť veľkosť štetca"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Výstup"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Zväčšiť veľkosť štetca"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Histogram výstupu"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Obrys útvaru"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automaticky"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Vyplnený útvar"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Červená"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Útvar s výplňou a obrysom"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Modrá"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Presunúť vybarné pixle"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Spojené"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Pretiahnutím výberu posuniete vybraný obsah."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Skica ceruzkou"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Posun"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Umelecké"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Kliknutím a ťahaním sa pohybujete v obrázku"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Rozostrenie"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Kliknutím ľavým tlačidlom voľné kreslenie čiarou hrubou jeden pixel a "
-"primárnou farby, kliknutím pravým tlačidlom použiť sekundárnu farbu."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Rozostrenia"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Eliptický výber"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Vyduť"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Kliknutím a ťahaním nakresliť elliptický výber. Držaním shift obmedzenie na "
-"kružnicu."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Deformovať"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Farebný prechod"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Fraktál Mandelbrot"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Kliknutím a ťahaním nakresliť prechod od primárnej k sekundárnej farbe. "
-"Kliknutie pravým tlačidlom kreslí obrátene."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Vykresliť"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Lineárny prechod"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Medián"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Lineárny odrazený prechod"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Šum"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Lineárny diamantový prechod"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pixelizovať"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Radiálny prechod"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Doostriť"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Kónický prechod"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Fotka"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Farebný režim"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Olejomaľba"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Režim priesvitnosti"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gausovské rozostrenie"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Zaoblený obdĺžnik"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Žiara"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Kliknutím a ťahaním nakresliť zaoblený obdĺžnik (kliknutím pravým tlačidlom "
-"v sekundárnej farbe). Držaním Shift obmedzíte na štvorec."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Zjemniť portrét"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Polomer"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Dlaždicový odraz"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Zmenšiť polomer zaoblenia rohov"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Odstránenie červených očí"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Zväčšiť polomer zaoblenia rohov"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Zamrznuté sklo"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Kliknutím ľavým tlačidlom kresliť primárnou farbou, kliknutím pravým "
-"tlačidlom kresliť sekundárnou farbou."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Detekcia hrán"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Obdĺžnikový výber"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Štylizovanie"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Kliknutím a ťahaním nakresliť obdĺžnikový výber. Držaním Shift obmedzíte na "
-"štvorec."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fraktál Julia"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Vedro s farbou"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Rozostriť pohybom"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Kliknutím ľavým tlačidlom vyplniť oblasť primárnou farbou, Kliknutím pravým "
-"tlačidlom vyplniť oblasť sekundárnou farbou."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Reliéf"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Klonovacie razítko"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Atramentový náčrt"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Presunúť výber"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Rozostrenie priblížením"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Potiahnutím výberu posuniete vybranú oblasť."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Prevrátenie pólov"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Voľný tvar"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Oblaky"
+
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragmentovať"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Režim výplne"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Redukovať šum"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Spojité"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Radiálne rozostrenie"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Všeobecné"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Skrútiť"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerancia"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Pridať šum"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipsa"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Reliéf"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Kliknutím a ťahaním nakresliť elipsu (kliknutím pravým tlačidlom sekundárnou "
-"farbou). Držaním Shift obmedzíte na kružnicu."
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Zvýrazniť obrysy"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Náhodný šum"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Nový počiatok"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "popis1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "popis"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Vybrať primárnu farbu"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Vybrať sekundárnu farbu"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Vybrať farbu palety"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Posun"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Kliknutím a ťahaním sa pohybujete v obrázku"
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -570,42 +760,34 @@ msgstr ""
"Kliknutím ľavým tlačidlom umiestnite kurzor, potom napíšte želaný text. "
"Farba písma je primárna farba."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Písmo"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Hrubé"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Kurzíva"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Podčiarknuté"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Zarovnať doľava"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Zarovnať na stred"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Zarovnať doprava"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Čarovná palička"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Kliknutím vyberiete oblasť s podobnou farbou."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Obdĺžnik"
@@ -618,655 +800,620 @@ msgstr ""
"Kliknutím a ťahaním nakreslíte obdĺžnik (kliknutím pravým tlačidlom "
"sekundárnou farbou). Držaním Shift obmedzíte na štvorec."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Čiara"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Voľný tvar"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
"Kliknutím ľavým tlačidlom kresliť primárnou farbou, kliknutím pravým "
"tlačidlom kresliť sekundárnou farbou."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Prefarbiť"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Štýl výpne"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Kliknutím ľavým tlačidlom nahradiť sekundárnu farbu primárnou."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Obrys útvaru"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Guma"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Vyplnený útvar"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Kliknutím a ťahaním vymazať časť obrázka."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Útvar s výplňou a obrysom"
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pixelizovať"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Záplavový režim"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Deformovať"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Spojité"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Odstránenie červených očí"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Všeobecné"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Fotka"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerancia"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Rozostriť pohybom"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Čiara"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Rozostrenia"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Kliknutím ľavým tlačidlom kresliť primárnou farbou, kliknutím pravým "
+"tlačidlom kresliť sekundárnou farbou."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Atramentový náčrt"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Presunúť výber"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Umelecké"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Potiahnutím výberu posuniete vybranú oblasť."
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Radiálne rozostrenie"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Obdĺžnikový výber"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Rozostrenie"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Kliknutím a ťahaním nakresliť obdĺžnikový výber. Držaním Shift obmedzíte na "
+"štvorec."
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Detekcia hrán"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Čarovná palička"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Štylizovanie"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Kliknutím vyberiete oblasť s podobnou farbou."
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Zamrznuté sklo"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Eliptický výber"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Olejomaľba"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Kliknutím a ťahaním nakresliť elliptický výber. Držaním shift obmedzenie na "
+"kružnicu."
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Rozostrenie priblížením"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Laso"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Prevrátenie pólov"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Kliknutím a ťahaním obtiahnuť vybratú blasť."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Oblaky"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Vedro s farbou"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Vykresliť"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Kliknutím ľavým tlačidlom vyplniť oblasť primárnou farbou, Kliknutím pravým "
+"tlačidlom vyplniť oblasť sekundárnou farbou."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Žiara"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Farebný prechod"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Pridať šum"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Kliknutím a ťahaním nakresliť prechod od primárnej k sekundárnej farbe. "
+"Kliknutie pravým tlačidlom kreslí obrátene."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Šum"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Lineárny prechod"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragmentovať"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Lineárny odrazený prechod"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Doostriť"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Lineárny diamantový prechod"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Skica ceruzkou"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Radiálny prechod"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Zvýrazniť obrysy"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Kónický prechod"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gausovské rozostrenie"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Režim"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Dlaždicový odraz"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Farebný režim"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Reliéf"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Režim priesvitnosti"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Reliéf"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Šírka štetca"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Fraktál Mandelbrot"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Zmenšiť veľkosť štetca"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Vyduť"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Zväčšiť veľkosť štetca"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Skrútiť"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Štetec"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Zjemniť portrét"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Typ"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Redukovať šum"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Prefarbiť"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fraktál Julia"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Kliknutím ľavým tlačidlom nahradiť sekundárnu farbu primárnou."
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Medián"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normálny"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Krivky"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Kruhy"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Úrovne"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Štvorce"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Automatické úrovne"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Špliechanec"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Invertovať farby"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Mriežka"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterizovať"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipsa"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Čiernobiele"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Kliknutím a ťahaním nakresliť elipsu (kliknutím pravým tlačidlom sekundárnou "
+"farbou). Držaním Shift obmedzíte na kružnicu."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Odtieň / sýtosť"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Klonovacie razítko"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sépia"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "Ctrl+ľavý klik na výber zdroja, ľavý klik na kreslenie."
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Jas / kontrast"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Priblíženie"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Doladenie úrovní"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Kliknutím ľavým tlačidlom priblížiť. Kliknutím pravým tlačidlom oddialiť. "
+"Kliknutím a ťahaním priblížiť výber."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Histogram vstupu"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Zaoblený obdĺžnik"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Vstup"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Kliknutím a ťahaním nakresliť zaoblený obdĺžnik (kliknutím pravým tlačidlom "
+"v sekundárnej farbe). Držaním Shift obmedzíte na štvorec."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Výstup"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Polomer"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Histogram výstupu"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Zmenšiť polomer zaoblenia rohov"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automaticky"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Zväčšiť polomer zaoblenia rohov"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Zresetovať"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Výber farby"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Červená"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Kliknutím ľavým tlačidlom vyberiete primárnu farbu. Kliknutím pravým "
+"tlačidlom vyberiete sekundárnu farbu."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Zelená"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Po vybraní"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Modrá"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Neprepínať nástroj"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Spojené"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Prepnúť na predošlý nástroj"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Prenosová mapa"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Prepnúť na ceruzku"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Ceruzka"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Svietivosť"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Guma"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Kliknutím a ťahaním vymazať časť obrázka."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Červená "
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Kliknutím ľavým tlačidlom voľné kreslenie čiarou hrubou jeden pixel a "
+"primárnou farby, kliknutím pravým tlačidlom použiť sekundárnu farbu."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Modrá "
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Presunúť vybarné pixle"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Tip: Kliknite pravým na odstránenie kontrolných bodov."
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Pretiahnutím výberu posuniete vybraný obsah."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Pridať novú vrstvu"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Skryť"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Odstrániť vrstvu"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Dokovať"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplikovať vrstvu"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automaticky skrývať"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Zlúčiť vrstvy"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dokovateľné"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Vložit zo súboru..."
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Plávajúce"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Prevrátiť vodorovne"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "MenoMožnosti"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Prevrátiť zvislo"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Percentuálne:"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Otočenie / Priblíženie"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Podľa abs. veľkosti"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Posunúť vrstvu vyžšie"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Šírka:"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Posunúť vrstvu nižšie"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "pixelov"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Otvoriť súbor obrázka"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Výška:"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importovať zo súboru"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Zachovať pomer strán"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nový..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Kotva:"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Otvoriť..."
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Veľkosť nového obrázka "
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Otvoriť nedávne"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Vlastnosti vrstvy"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Zavrieť"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Názov:"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Uložiť"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Viditeľnosť"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Uložiť ako..."
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Priehľadnosť:"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Tlačiť"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Ukončiť"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Súbor"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nový"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Úpravy"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Otvoriť"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Zobraziť"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Pozadie"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Obrázok"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Otvoriť obrázok"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Vrstvy"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Nedá sa otvoriť súbor: {0}"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Prispôsobenie"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Chyba"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Efekty"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Uložiť zmeny do obrázka „{0}“ pred otvorením nového?"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Okno"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Súbory obrázkov"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Okná nástrojov"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Všetky súbory"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Nápoveda"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Uložiť súbor obrázka"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Nástroje"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} obrázok ({1})"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenty"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Obrázok OpenRaster (*.ora)"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Vrstvy"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "História"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Spraviť snímok obrazovky"
-#: Pinta.Core/Actions/FileActions.cs:392
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Omeškanie pred spravením snímku obrazovky (v sekundách):"
+
+#: Pinta/DialogHandlers.cs:139
#, csharp-format
msgid "Save the changes to image \"{0}\" before closing?"
msgstr "Uložiť zmeny do obrázka „{0}“ pred zatvorením?"
-#: Pinta.Core/Actions/FileActions.cs:402
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Ak neuložíte, všetky zmeny budú navždy stratené."
+
+#: Pinta/DialogHandlers.cs:147
msgid "Close without saving"
msgstr "Zatvoriť bez uloženia"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Vystrihnúť na výber"
-
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Zmeniť veľkosť..."
-
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Veľkosť plátna..."
-
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Otočiť o 90° v smere hodinových ručičiek"
-
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Otočiť o 90° proti smeru hodinovích ručičiek"
-
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Otočiť o 180°"
-
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Sploštiť"
-
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Späť"
-
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Znovu"
-
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Vystrihnúť"
-
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopírovať"
-
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Vložiť"
-
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Vložiť do novej vrstvy"
-
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Vložiť do nového obrázka"
-
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Vymazať výber"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Zmeniť veľkosť palety"
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Vyplniť výber"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nová veľkosť palety:"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Invertovať výber"
-
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Vybrať všetko"
-
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Zrušiť výber"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Priehľadnosť vrstvy"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Priblížiť"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Premenovať vrstvu"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Oddialiť"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Skryť vrstvu"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Priblížiť do okna"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Zobraziť vrstvu"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Priblížiť na výber"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Súbory obrázkov"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Aktuálna veľkosť"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Vkladanie zrušené"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Pixelová mriežka"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Schránka neobsahuje obrázok"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Pravítka"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Uložiť súbor obrázka"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pixely"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta nepodporuje ukladanie obrázkov v tomto type súborov."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Palce"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Súbor \"{0}\" už existuje. Chcete ho nahradiť?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimetre"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "Súbor už existuje v \"{1}\". Nahradenie prepíše jeho obsah."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Celá obrazovka"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "počet vlákien použitých na vykreslenie"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Okno"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Verzia"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta Webstránka"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licencia"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Nahlásiť chybu"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Vydané pod licenciou MIT X11"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Preložiť tento program"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Autorské práva"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Všeobecné"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "od Pinta prispievateľov"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Nástroj"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Názov"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Klávesová skratka"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Cesta"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Vyhladzovanie"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Kvalita JPEG"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Normálne / Prepisovacie zmiešavanie"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Kvalita: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Preklopiť obrázok vodorovne"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Prispeli do tohto vydania"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Preklopiť obrázok zvislo"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Predchádzajúci prispievatelia"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Preklopiť vrstvu vodorovne"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" DAG Software https://launchpad.net/~dagsoftware\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" helix84 https://launchpad.net/~helix84"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Preklopiť vrstvu zvislo"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Preložili:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Dokončiť pixle"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Založené na práci Paint.NET-u:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Vykresľovací efekt"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Použité niektoré ikony z:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopírovať"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "O programe Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Vrstva"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Info o verzii"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1451,14 +1598,43 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Pokračovať bez uloženia"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Uložiť zmeny do obrázka \"{0}\" pred vytvorením nového?"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+#~ msgid "Fill mode"
+#~ msgstr "Režim výplne"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Tip: Kliknite pravím na odstránenie ovládacích bodov."
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Normálne / Prepisovacie zmiešavanie"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Vyhladzovanie"
+
#~ msgid "Show Pad"
#~ msgstr "Zobraziť podložku"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Uložiť zmeny do obrázka „{0}“ pred otvorením nového?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Obrázok OpenRaster (*.ora)"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-sl.po b/po/messages-sl.po
index aa0dbe6..cf87227 100644
--- a/po/messages-sl.po
+++ b/po/messages-sl.po
@@ -7,709 +7,668 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-18 07:09+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-11 07:21+0000\n"
"Last-Translator: grofaty <Unknown>\n"
"Language-Team: Slovenian <sl at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Vizitka"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Slikarski čopič"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Okno"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Datoteka"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Plast"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Uredi"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopija"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Pogled"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Prilagodi platno"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Slika"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Orodje"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Sloji"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Tipka bližnice"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Prilagoditve"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Običajno utripanje"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "Učin_ki"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Prepiši"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Okno"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Vključi glajenje robov"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "Pomo_č"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Izključi glajenje robov"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Spremeni velikost slike"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Orodja"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Končne točke"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Zavrti 180°"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenti"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Vodoravno zrcali sliko"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Sloji"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Vodoravno zrcali sliko"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Zgodovina"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Zavrti 90° v smeri urinega kazalca"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Skrij"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Zavrti 90° v nasportni smeri urnega kazalca"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Sidrno"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Vodoravno zrcali plast"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Plavajoče"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Navpično zrcali plast"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Samodejno skrij"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Splošno"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Zasidraj"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} slika ({1})"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Prispevali k tej izdaji"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Izreži izbor"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Prejšnji avtorji prispevkov"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Spremeni velikost ..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" grofaty https://launchpad.net/~grofaty"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Velikost platna ..."
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Prevedel:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Zrcali vodoravno"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Osnovano na programu Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Zrcali navpično"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Nekatere ikone uporabljene od:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Splošči"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "O programu Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Približaj"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informacije o različici"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Oddalji"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Naslov"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Prilagodi velikost oknu"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Različica"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Približaj izbrano"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Pot"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Dejanska velikost"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licenca"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Orodna vrstica"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Izdano pod licenco MIT X11 License"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Točkovna mreža"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Avtorske pravice"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Ravnila"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "Pinta po avtorjih prispevkov"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Točke"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "število niti za vračanje"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Palci"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Spremeni velikost slike"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimetri"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Po odstotku:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Celozaslonsko"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Za absolutno velikost:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Mere ravnila"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Širina:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Dodaj novo plast"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "točk"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Izbriši plast"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Višina:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Podvoji plast"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Obdrži razmerje velikosti"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Združi plast navzdol"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Lastnosti sloja"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Uvozi iz datoteke ..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Ime:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Zavrti / Približaj"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Vidno"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Premakni plast gor"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Prekrivnost:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Premakni plast dol"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Prilagodi delovno površino"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr "Lastnosti plasti ..."
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Sidro:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Odpri slikovno datoteko"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Nova slika"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Uvozi iz datoteke"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Nova velikost slike "
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Shrani vse"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Shrani spremembe slike v \"{0}\" pred ustvarjanjem nove slike?"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Zapri vse"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "V primeru, da datoteke ne shranite, bodo vse spremembe izgubljene."
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Spletna stran Pinte"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Nadaljuj brez shranjevanja"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Prijavi napako v programu"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Sloj prekrivnosti"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Prevedi ta program"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Preimenuj sloj"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "O programu"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Skrij sloj"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Novo ..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Prikaži sloj"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Nov posnetek ..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "oznaka1"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Odpri ..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "oznaka"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Odpri nedavno"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Naključni šum"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Zapri"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Osemeni"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Shrani"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Izbirnik barv"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Shrani kot ..."
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Levi klik za izbiro prvotne barve. Desni klik za izbiro drugotne barve."
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Natisni"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Po izbiri"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Končaj"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Ne preklopi orodja"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Novo"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Preklopi na prejšnje orodje"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Odpri"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Preklopi na Svinčnik"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Razveljavi"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Svinčnik"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Uveljavi"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Laso izbira"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Izreži"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klikni in povleci, da narišeš oris izbora."
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopiraj"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Povečava"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Prilepi"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Levi klik za povečanje. Desni klik za pomanjšanje. Klikni in povleci za "
-"povečaš v izboru."
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Prilepi v novo plast"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Širina čopiča"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Prilepi v novo sliko"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Zmanjšaj velikost čopiča"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Zradiraj izbor"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Povečaj velikost čopoča"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Zapolni izbor"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Oblika orisa"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Obrni izbor"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Polnilo orisa"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Izberi vse"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Polnilo in oris oblike"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Odstrani izbiro"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Premakni izbrane točke"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Ponastavi na privzeto"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Povleci izbor, da prestaviš izbrano vsebino."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Nastavi število barv"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Posoda"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klikni in povleci za krmarjenje slike"
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Odpri datoteko palete"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Levi klik za slikanje proste oblike, eno-točkovna širina črte prvotne barve, "
-"desni klik za uporabo drugotne barve."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Datoteke palete (*.txt, *.gpl)"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Eliptični izbor"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Vse datoteke"
-#: Pinta.Tools/EllipseSelectTool.cs:44
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-"Klikni in povleci, da narišeš eliptično obliko. Drži shift da omejiš na krog."
+"Ne morem odpreti datotekeo palete: {0}.\n"
+"Prosim preverei ali želiš odpreti veljavno GIMP ali Paint.NET paleto."
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Preliv"
-
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Klikni in vleci da slikaš krivino iz prvotne v drugotno barvo. Desni klik za "
-"obratno."
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Napaka"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Premočrten preliv"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Shrani datoteko palete"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Premočrten odsivni preliv"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET paleta (*.txt)"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Premočrtni kara preliv"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP paleta (*.gpl)"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Krožni preliv"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Neshranjena slika {0}"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Stožčast preliv"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Ozadje"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Barvni način"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Nova slika"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Prozoren način"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Odpri sliko"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Zaobljen pravokotnik"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "Ne morem odpreti datoteke: {0}"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Klikni in vleci za slikanje zaokroženega pravokotnika (desni klik za "
-"drugotno barvo). Drži shift za omejitev."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Izrisovalni učinek"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Polmer"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Zmanjšaj število barv"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Zmanjšaj polmer kota pravokotnika"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Obrni barve"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Povečaj polmer kota pravokotnika"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Ravni"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Levi klik za slikanje osnovne barve, desni klik za slikanje drugotne barve."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Črno in belo"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Pravokotni izbor"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Samodejna raven"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klikni in vleci za izris izbire pravokotnika. Pritisni shift da omejiš na "
-"kvadrat."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Odtenek / Nasičenost"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Vedro z barvo"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Svetlost / Kontrast"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Levi klik za zapolnitev področja s prvotno barvo, desni klik za zapolnitev z "
-"drugotno barvo."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepija"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Zazmnoževalni žig"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Krivulje"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Premakni izbiro"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Prenos karte"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Vleci izbiro za premik izbire obrisa."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Prosto oblikovna oblika"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Svetlost"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Polnilni način"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Zvezno"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Rdeč "
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Splošno"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Zelena"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Odstopanje"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Modro "
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipsa"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Ponastavi"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"Klikni in vleci za izris elipse (desni klik za drugotno barvo). Drži shift "
-"da omejiš na krog."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Namig: Desni klik, da odstraniš nadzorne točke."
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
-msgstr "Besedilo"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Prilagoditev ravni"
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr "Levi klik da postaviš kurzor, nato natipkaj želeno besedilo."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Vhodni histogram"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "Pisava"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Vhod"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr "Krepko"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Izhod"
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr "Ležeče"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Izhodni histogram"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr "Podčrtano"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Samodejno"
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr "Poravnaj levo"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Rdeča"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
-msgstr "Središčna poravnava"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Modra"
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr "Poravnaj desno"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Povezan"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Izbor čarobne palice"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Svinčnikova skica"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Klikni, da izbereš področje sorodne barve."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Umetniški"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "Pravokotnik"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Odstrani žarišče"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr ""
-"Klikni in vleci, da narišeš pravokotnik (desni klik za izbiro drugotne "
-"barve). Drži shift da omejiš na kvadrat."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Zabrisanost"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Črta"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Izboklina"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "Levi klik, da slikaš s prvotno barvo, desni klik za drugotno barvo."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Popači"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Ponovno pobarvaj"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Del Mandelbrot"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Levi klik, da zamenjaš drugotno barvo s prvotno barvo."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Izriši"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Radirka"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Srednja vrednost"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klikni in vleci, da zbrišeš del slike"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Šum"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "Točkuj"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Popači"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Odstranitev učinka rdečih oči"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Izostri"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "Fotografija"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Zabriši kot pri gibanju ..."
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Oljno slikanje"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Zabrisanost"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Zabriši po Gaussu"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Črnilo skice"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Žarenje"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Umetniški"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Omehčana podoba"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Radialno mehčanje"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Razpostavi odsev"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Odosredotočitev"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Odstranitev učinka rdečih oči"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Zamrznjeno steklo"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "Zaznaj rob"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr "Prilagodi slog"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Zamrznjeno steklo"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Fraktal julije"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Oljno slikanje"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Zabriši kot pri gibanju"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Izboči"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Črnilo skice"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
@@ -723,542 +682,735 @@ msgstr "Popolna obrnitev"
msgid "Clouds"
msgstr "Oblaki"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Upodobi"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Delček"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Žarenje"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Zmanjšaj šum"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Radialno mehčanje"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Upogib"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "Dodaj šum"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Šum"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Delček"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Izostri"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Svinčnikova skica"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Relief"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "Obroba"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Zabriši po Gaussu"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Naključni šum"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Odsev"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Osemeni"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Relief"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "oznaka1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Izboči"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "oznaka"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Del Mandelbrot"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Izberi osnovno barvo"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Izboklina"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Izberi pomožno barvo"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Upogib"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Izberi barvo palete"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Omehčana podoba"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Posoda"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Zmanjšaj šum"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Kliknite in povlecite za krmarjenje slike"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Fraktal julije"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "Besedilo"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Srednja vrednost"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr ""
+"Levi klik da postaviš kurzor, nato natipkaj želeno besedilo. Barva besedila "
+"je osnovna barva."
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Krivulje"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "Pisava"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Sloji"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "Krepko"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Samodejni sloj"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "Ležeče"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Obrni barve"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "Podčrtano"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Zmanjšaj število barv"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr "Poravnaj levo"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Črno-belo"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr "Središčna poravnava"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Obarvaj / Nasičenost"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr "Poravnaj desno"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepija"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "Pravokotnik"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Svetlost / Kontrast"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr ""
+"Kliknite in vlecite, da narišete pravokotnik (desni klik za izbiro pomožne "
+"barve). Držite Shift, da omejite na kvadrat."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Prilagoditev slojev"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Prosto oblikovana oblika"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Vhodni histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Levi klik za slikanje z osnovno barvo, desni klik za slikanje s pomožno "
+"barvo."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Vhod"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Zapolni slog"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Izhod"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Oblika orisa"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Izhodni histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Polnilo orisa"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Samodejno"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Polnilo in oris oblike"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Ponastavi"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Tekoči način"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Rdeča"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Zvezno"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Zelena"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Splošno"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Modra"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Odstopanje"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Povezan"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Črta"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Prenesi karto"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "Levi klik za slikanje z osnovno barvo, desni klik za pomožno barvo."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Premakni izbiro"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Svetlost"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Vleci izbiro za premik izbire obrisa."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Pravokotni izbor"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Rdeč "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Kliknite in vlecite za izris izbire pravokotnika. Pritisnite Shift, da "
+"omejite na kvadrat."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Modro "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Izbor čarobne palice"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "Namig: Desni klik, da odstraniš nadzorne točke."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Kliknite, da izberete področje sorodne barve."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Dodaj nov sloj"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Eliptični izbor"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Zbriši sloj"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Kliknite in povlecite, da narišete eliptično obliko. Držite Shift, da "
+"omejite na krog."
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Podvoji sloj"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Laso izbira"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Združi sloj navzdol"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Kliknite in povlecite, da narišete oris izbora."
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Uvozi iz datoteke..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Vedro z barvo"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Zrcali vodoravno"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Levi klik za zapolnitev področja z osnovno barvo, desni klik za zapolnitev s "
+"pomožno barvo."
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Zrcali navpično"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Preliv"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Zavrti / Povečaj"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Kliknite in vlecite, da naslikate krivino iz osnovne v pomožno barvo. Desni "
+"klik za obratno."
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Premakni sloj gor"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Premočrten preliv"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Premakni sloj dol"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Premočrten odsivni preliv"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Odpri slikovno datoteko"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Premočrtni kara preliv"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Uvozi iz datoteke"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Krožni preliv"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Novo..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Stožčast preliv"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Odpri..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Način"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Odpri nedavno"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Barvni način"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Zapri"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Prozoren način"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Shrani"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Širina čopiča"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Shrani kot..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Zmanjšaj velikost čopiča"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Natisni"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Povečaj velikost čopoča"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Izhod"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Slikarski čopič"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Novo"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Vrsta"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Odpri"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Ponovno pobarvaj"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Ozadje"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Levi klik, da zamenjaš pomožno barvo z osnovno barvo."
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Odpri sliko"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Običajno"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Ne morem odpreti datoteke: {0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Krogi"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Napaka"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Kvadrati"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Shrani spremembe v sliko \"{0}\" pred odpiranjem nove slike?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Škropilnik"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Datoteke slik"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Mreža"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Vse datoteke"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipsa"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Shrani slikovno datoteko"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Kliknite in vlecite za izris elipse (desni klik za pomožno barvo). Držite "
+"Shift, da omejite na krog."
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} slika ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Razmnoževalni žig"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster slika (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "Ctrl-levi klik, da določiš področje, levi klik za slikanje."
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Shrani spremebe v sliko \"{0}\" pred zapiranjem?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Približanje"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Zapri brez shranjevanja"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Levi klik za približanje. Desni klik za oddaljevanje. Kliknite in povlecite, "
+"da približate izbrano."
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Izreži izbor"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Zaobljen pravokotnik"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Nastavi velikost..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Kliknite in vlecite za slikanje zaokroženega pravokotnika (desni klik za "
+"pomožno barvo). Držite Shift za omejitev."
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Velikost delovne površine..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Polmer"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Zavrti 90° v smeri urinega kazalca"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Zmanjšaj polmer kota pravokotnika"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Zavrti 90° v nasportni smeri urnega kazalca"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Povečaj polmer kota pravokotnika"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Zavrti 180°"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Izbirnik barv"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Splošči"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Levi klik za izbiro osnovne barve. Desni klik za izbiro pomožne barve."
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Razveljavi"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Po izbiri"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Uveljavi"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Ne preklopi orodja"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Izreži"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Preklopi na prejšnje orodje"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopiraj"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Preklopi na svinčnik"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Prilepi"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Svinčnik"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Prilepi v nov sloj"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Radirka"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Prilepi v novo sliko"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Kliknite in vlecite, da zradirate del slike"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Pobriši izbor"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Levi klik za slikanje proste oblike, eno-točkovna širina črte osnovne barve, "
+"desni klik za uporabo pomožne barve."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Zapolni izbor"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Premakni izbrane točke"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Obrni izbor"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Povleci izbor, da prestaviš izbrano vsebino."
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Izberi vse"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Skrij"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Odizberi"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Usidraj"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Povečaj"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Samodejno skrij"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Zmanjšaj"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Sidrno"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Povečaj k oknu"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Plavajoče"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Povečaj izbrano"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "OpcijskoIme"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Dejanska velikost"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Po odstotku:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Točkovna mreža"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Za absolutno velikost:"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Ravnila"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Širina:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Točke"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "točk"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Palcev"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Višina:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimetrov"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Obdrži velikostno razmerje"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Celi zaslon"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Sidro:"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Okno"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Nova velikost slike "
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Spletna stran Pinte"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Lastnosti plasti"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Prijavi napako v programu"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Ime:"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Prevedi to aplikacijo"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Vidno"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Splošno"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Prekrivnost:"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Orodje"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Tipka bližnice"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Datoteka"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Glajenje"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Uredi"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Običajno utripanje / prekrij utripanje"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "Po_gled"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Vodoravno prekucni sliko"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "Sl_ika"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Navpično prekucni sliko"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "P_lasti"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Vodoravno prekucni sloj"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Prilagoditve"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Navpično prekucni sloj"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "Učin_ki"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Končne točke"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Okno"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Izvedi učinek"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Okna orodij"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopiraj"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "Pomo_č"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Sloj"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Orodja"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenti"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Plasti"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Zgodovina"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Naredi posnetek"
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Zakasni preden narediš posnetek (sekunde):"
+
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Shrani spremembe v sliko \"{0}\" pred zapiranjem?"
+
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "V primeru, da datoteke ne shranite, bodo vse spremembe izgubljene."
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Zapri brez shranjevanja"
+
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Prilagodi paleto"
+
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Nova velikost palete"
+
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Plast prekrivnosti"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Preimenuj plast"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Skrij plast"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Prikaži plast"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Datoteke slik"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Prilepljanje preklicano"
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Odložišče ne vsebuje slike"
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Shrani slikovno datoteko"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta ne podpira shranjevanje slike v to obliko datoteke."
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Datoteka \"{0}\" že obstaja. Jo želite prepisati?"
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"Datoteka že obstaja v \"{1}\". Zamenjava bo prepisala obstoječo vsebino."
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "število niti za izrisovanje"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Različica"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Dovoljenje"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Izdano z dovoljenjem MIT X11"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Avtorske pravice"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "avtorjev prispevkov Pinte"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Naslov"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Pot"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG kakovost"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Kakovost: "
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Prispevali k tej izdaji"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Prejšnji avtorji prispevkov"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" grofaty https://launchpad.net/~grofaty"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Prevedel:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Osnovano na programu Paint.NET:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Nekatere ikone uporabljene od:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "O programu Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informacije o različici"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1281,7 +1433,7 @@ msgstr "Kot"
#: CloudsEffect dialog
msgid "Antialias"
-msgstr "Zglajevanje"
+msgstr "Glajenje robov"
#: GlowEffect dialog
msgid "Blend Mode"
@@ -1301,11 +1453,11 @@ msgstr "Velikost celice"
#: MotionBlurEffect dialog
msgid "Center Offset"
-msgstr "Osrediščena izravnava"
+msgstr "Osrediščen odmik"
#: OilPaintingEffect dialog
msgid "Centered"
-msgstr "Osrediščeno"
+msgstr "Središčeno"
#: PencilSketchEffect dialog
msgid "Coarseness"
@@ -1317,7 +1469,7 @@ msgstr "Razpon barv"
#: InkSketchEffect dialog
msgid "Color Saturation"
-msgstr "Barvna zasičenost"
+msgstr "Barvna nasičenost"
#: GlowEffect dialog
msgid "Coloring"
@@ -1347,7 +1499,7 @@ msgstr "Množitelj"
#: InkSketchEffect dialog
msgid "Fragments"
-msgstr "Delčki"
+msgstr "Kosi"
#: TileEffect dialog
msgid "Ink Outline"
@@ -1367,7 +1519,7 @@ msgstr "Osvetlitev"
#: BulgeEffect dialog
#: PencilSketchEffect dialog
msgid "Offset"
-msgstr "Zamik"
+msgstr "Odmik"
#: MedianEffect dialog
msgid "Pencil Tip Size"
@@ -1391,7 +1543,7 @@ msgstr "Kakovost"
#: TileEffect dialog
#: RedEyeRemoveData dialog
msgid "Rotation"
-msgstr "Zasuk"
+msgstr "Vrtenje"
#: CloudsEffect dialog
msgid "Saturation percentage"
@@ -1419,7 +1571,7 @@ msgstr "Debelina"
#: RedEyeRemoveData dialog
msgid "Tile Size"
-msgstr "Velikost delca"
+msgstr "Velikost ploščice"
#: JuliaFractalEffect dialog
msgid "Warmth"
@@ -1435,11 +1587,19 @@ msgstr ""
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
-msgstr "Namig: Za najboljši izid uporabi orodja za izbiro posameznega očesa."
+msgstr ""
+"Namig: Za najboljši izid najprej uporabi orodja za izbiro vsakega očesa."
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Nadaljuj brez shranjevanja"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Shrani spremembe slike v \"{0}\" pred ustvarjanjem nove slike?"
+
#~ msgid "X :"
#~ msgstr "X :"
@@ -1449,5 +1609,27 @@ msgstr "Namig: Za najboljši izid uporabi orodja za izbiro posameznega očesa."
#~ msgid "Show Pad"
#~ msgstr "Orodjarna"
+#~ msgid "Fill mode"
+#~ msgstr "Polnilni način"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Glajenje"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Namig: Desni-klik, da odstraniš nadzorne točke."
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster slika (*.ora)"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Shrani spremembe v sliko \"{0}\" pred odpiranjem nove slike?"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Običajno utripanje / prekrij utripanje"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-sr.po b/po/messages-sr.po
index 0b0250f..98ab505 100644
--- a/po/messages-sr.po
+++ b/po/messages-sr.po
@@ -7,552 +7,744 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 10:59+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-27 01:45+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Serbian <sr at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "O"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Prozor"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Četkica"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Sloj"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Fajl"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopiraj"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Izmeni"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Promeni veličinu platna"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Prikaz"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Alatke"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Slika"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Taster prečice"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Slojevi"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Podešavanja"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Efekti"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Prozor"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Pomoć"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Promeni veličinu slike"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Dovrši piksele"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Okreni 180°"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Prevrni sliku horizontalno"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Prevrni sliku vertikalno"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Okreni 90° u smeru kazaljke na časovniku"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Okreni 90° suprotno od smera kazaljke na časovniku"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Prevrni sloj horizontalno"
+
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Prevrni sloj vertikalno"
+
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Opšte"
+
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} slika ({1})"
+
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Izreži prema odabiru"
+
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Promeni veličinu..."
+
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Dimenzije platna..."
+
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Prevrni vodoravno"
+
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Prevrni uspravno"
+
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Spljošti"
+
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Uveličaj"
+
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Umanji"
+
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Uveličaj do prozora"
+
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Uveličaj odabrano"
+
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Stvarna veličina"
+
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Alati"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Mreža piksela"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Paleta"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Lenjiri"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokumenti"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pikseli"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Slojevi"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Inči"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Istorijat"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimetri"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Sakrij"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Ceo ekran"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Prikačiv"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Plutajuće"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Dodaj novi sloj"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Automatski Sakrij"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Obriši sloj"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Dok"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Dupliraj sloj"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Saradnici u ovoj verziji"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Spoj sloj sa donjim"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Prethodni saradnici"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Uvezi iz fajla ..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Rotiraj / Uvećaj"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Pomeri sloj gore"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Pomeri sloj dole"
+
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" boki24 https://launchpad.net/~bojansav"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Preveo:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Učitaj sliku"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Zasniva se na programu Paint.NET:"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Unesi iz fajla"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Koristi pojedine ikone iz:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "O Pinta programu"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Informacija o verziji"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta internet stranica"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Naslov"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Zabeleži grešku"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Verzija"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Prevedi ovaj program"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Putanja"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "O"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licenca"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nova..."
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Izdato pod MIT X11 licencom"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Autorska prava"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Otvori..."
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "od Pinta saradnika"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Otvori skorašnje"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "broj niti koje će se koristiti za iscrtavanje"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Zatvori"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Promeni veličinu slike"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Sačuvaj"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "U procentima:"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Sačuvaj kao..."
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Po apsolutnoj veličini:"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Odštampaj"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Širina:"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Izađi"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "piksela"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Novi"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Visina:"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Otvori"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Zadrži proporcije"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Opozovi"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Osobine sloja"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Ponovi"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Naziv:"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Iseci"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Vidljivo"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopiraj"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Prozirnost"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Prilepi"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Promeni veličinu platna"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Prilepi u novi sloj"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Sidro:"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Prilepi u novu sliku"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Obriši odabrano"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Popuni odabrano"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Obrni odabrano"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Izaberi sve"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Poništi izbor"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Paleta"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Svi fajlovi"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Greška"
+
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr ""
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Pozadina"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Nova slika"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Nova veličina slike "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Otvori sliku"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Sačuvati izmene slike \"{0}\" pre kreiranja nove?"
+msgid "Could not open file: {0}"
+msgstr "Nisam uspeo otvoriti fajl: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Ako ne sačuvate, sve izmene će biti trajno izgubljene."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Efekat iscrtavanja"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Nastavit bez snimanja"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterizovanje"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Providnost sloja"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Izvrni boje"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Preimenuj sloj"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Nivoi"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Sakrij sloj"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Crno i belo"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Prikaži sloj"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Auto nivoi"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "natpis1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Nijansa / Zasićenje"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "natpis"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Jačina osvetljenja/kontrast"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Slučajni šum"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Ponovo zasej"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Krive"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Birač boja"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Mapa prenosa"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Osvetljenost"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "Copy text \t (256, 256)"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Crveno "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Zeleno"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Plavo "
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Resetuj"
+
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-"Levi klik za postavljanje osnovne boje. Desni klik za postavljanje druge "
-"boje."
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Nakon odabira"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Podešavanje nivoa"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Ne vrši izmenu alata"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Ulazni histogram"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Izmeni na prethodni alaz"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Ulaz"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Prebaci na alat olovka"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Izlaz"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Olovka"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Izlazni histogram"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Odabir tipa laso"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Automatski"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klikni i povuci da se isrta okvir odabranog područja."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Crveno"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Uvećanje"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Plavo"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Levi klik za povećanje. Desni klik za smanjenje. Klik i povlačenje za "
-"povećanje odabranog."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Povezano"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Širina četkice"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Skica olovkom"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Smanji veličinu četkice"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Umetnička"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Povećaj veličinu četkice"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Van fokusa"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Uokviri oblik"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Zamućenja"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Popuni oblikom"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Ispupči"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Popuni i uokviri oblik"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Deformiši"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Premesti odabrane piksele"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrotov fraktal"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Premesti odabir da bi premestio odabrani sadržaj."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Iscrtavanje"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Pan"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Srednji"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klikni i prevuci za pozicioniranje slike."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Šum"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Levi klik za crtanje slobodnom formom, širine jedan piksel osnovnom bojom, "
-"desni klik za drugu boju."
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pikselizuj"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Odaberi elipsom"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Izoštri"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Klikni i prevuci da za eliptični odabir. Pritisni šift za kružni odabir."
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Fotografija"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Preliv"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Slikanje uljem"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Klikni i prevuci da se iscrta od osnovne do druge boje. Desni klik za "
-"obrnuto."
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gausovo zamućenje"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Linearni preliv"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Сјај"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Linearni reflektujući preliv"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Umekšani portret"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Linearni dijamant preliv"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Odsjaj pločica"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Kružni preliv"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Uklanjanje efekta crvenih očiju"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Kupast preliv"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Zaleđeno staklo"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Režim boje"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Pronađi ivice"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Režim providnosti"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Silizuj"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Zaobljeni pravougaonik"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julijin fraktal"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Klikni i prevuci da iscrtaš zaobljeni pravougaonik (desni klik za drugu "
-"boju). Pritisni šift za kvadrat."
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Zamućenje pokreta"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Poluprečnik"
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Izbočine"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Smanji poluprečnik zaobljenja uglova"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Skica mastilom"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Povećaj poluprečnik zaobljenja uglova"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Uvećano zamućenje"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Levi klik za crtanje osnovnom bojom, desni klik za crtanje drugom bojom."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Polarna inverzija"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Odabir kvadratom"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Oblaci"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klikni i prevuci da iscrtaš odabir pravougaonikom. Pritisni šift za kvadrat."
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Deo"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Kantica sa bojom"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Umanji šum"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Levi klik da bi popunili oblast osnovnom bojom, desni za popunjavanje drugom "
-"bojom."
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Kružno zamućenje"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Kloniraj kalup"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "uvrni"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Premesti odabrano"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Dodaj šum"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Prevucite odabrano da premestite odabrani okvir."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Reljef"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Slobodan oblik"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Kontura"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Režim popune"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Slučajni šum"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Neprekidno"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Ponovo zasej"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Globalno"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "natpis1"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerancija"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "natpis"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elipsa"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-"Klikni i prevuci da iscrtaš elipsu (desni klik za drugu boju). Pritisni šift "
-"za krug."
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr ""
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Pan"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Klikni i prevuci za pozicioniranje slike."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -566,42 +758,34 @@ msgstr ""
"Levi klik da postavite kursor, zatim otkucajte željeni tekst. Boja teksta je "
"osnovna."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Font"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Podebljano"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Kurziv"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Podvučeno"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Levo poravnanje"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Centralno poravnanje"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Desno poravnanje"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Odabir čarobnim štapićem"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Klikni za odabir regiona sa sličnom bojom."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Pravougaonik"
@@ -614,653 +798,614 @@ msgstr ""
"Klikni i prevuci da iscrtaš pravougaonik (desni klik za drugu boju). "
"Pritisni šift za kvadratni oblik."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linija"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Slobodan oblik"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "Levi klik za crtanje osnovnom bojom, desni za drugu boju."
-
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Ponovo oboji"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Levi klik da zamenite drugu boju osnovnom bojom."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Gumica za brisanje"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klikni i prevuci za brisanje dela slike."
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pikselizuj"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Deformiši"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Uklanjanje efekta crvenih očiju"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Fotografija"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Zamućenje pokreta"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Zamućenja"
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Levi klik za crtanje osnovnom bojom, desni klik za crtanje drugom bojom."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Skica mastilom"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Umetnička"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Uokviri oblik"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Kružno zamućenje"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Popuni oblikom"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Van fokusa"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Popuni i uokviri oblik"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Pronađi ivice"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Silizuj"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Neprekidno"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Zaleđeno staklo"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Globalno"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Slikanje uljem"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerancija"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Uvećano zamućenje"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linija"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Polarna inverzija"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "Levi klik za crtanje osnovnom bojom, desni za drugu boju."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Oblaci"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Premesti odabrano"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Iscrtavanje"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Prevucite odabrano da premestite odabrani okvir."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Сјај"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Odabir kvadratom"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Dodaj šum"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Klikni i prevuci da iscrtaš odabir pravougaonikom. Pritisni šift za kvadrat."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Šum"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Odabir čarobnim štapićem"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Deo"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Klikni za odabir regiona sa sličnom bojom."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Izoštri"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Odaberi elipsom"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Skica olovkom"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Klikni i prevuci da za eliptični odabir. Pritisni šift za kružni odabir."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Kontura"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Odabir tipa laso"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gausovo zamućenje"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Klikni i povuci da se isrta okvir odabranog područja."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Odsjaj pločica"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Kantica sa bojom"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Reljef"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Levi klik da bi popunili oblast osnovnom bojom, desni za popunjavanje drugom "
+"bojom."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Izbočine"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Preliv"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrotov fraktal"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Klikni i prevuci da se iscrta od osnovne do druge boje. Desni klik za "
+"obrnuto."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Ispupči"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Linearni preliv"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "uvrni"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Linearni reflektujući preliv"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Umekšani portret"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Linearni dijamant preliv"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Umanji šum"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Kružni preliv"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julijin fraktal"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Kupast preliv"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Srednji"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Krive"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Režim boje"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Nivoi"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Režim providnosti"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Auto nivoi"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Širina četkice"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Izvrni boje"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Smanji veličinu četkice"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterizovanje"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Povećaj veličinu četkice"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Crno i belo"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Četkica"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Nijansa / Zasićenje"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Ponovo oboji"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Jačina osvetljenja/kontrast"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Levi klik da zamenite drugu boju osnovnom bojom."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Podešavanje nivoa"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Ulazni histogram"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Ulaz"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Izlaz"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Izlazni histogram"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Automatski"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elipsa"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Resetuj"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Klikni i prevuci da iscrtaš elipsu (desni klik za drugu boju). Pritisni šift "
+"za krug."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Crveno"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Kloniraj kalup"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Zeleno"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Plavo"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Uvećanje"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Povezano"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Levi klik za povećanje. Desni klik za smanjenje. Klik i povlačenje za "
+"povećanje odabranog."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Mapa prenosa"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Zaobljeni pravougaonik"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Klikni i prevuci da iscrtaš zaobljeni pravougaonik (desni klik za drugu "
+"boju). Pritisni šift za kvadrat."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Osvetljenost"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Poluprečnik"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "Copy text \t (256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Smanji poluprečnik zaobljenja uglova"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Crveno "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Povećaj poluprečnik zaobljenja uglova"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Plavo "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Birač boja"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Levi klik za postavljanje osnovne boje. Desni klik za postavljanje druge "
+"boje."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Dodaj novi sloj"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Obriši sloj"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Dupliraj sloj"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Nakon odabira"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Spoj sloj sa donjim"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Ne vrši izmenu alata"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Uvezi iz fajla ..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Izmeni na prethodni alaz"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Prevrni vodoravno"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Prebaci na alat olovka"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Prevrni uspravno"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Olovka"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Rotiraj / Uvećaj"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Gumica za brisanje"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Pomeri sloj gore"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Klikni i prevuci za brisanje dela slike."
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Pomeri sloj dole"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Levi klik za crtanje slobodnom formom, širine jedan piksel osnovnom bojom, "
+"desni klik za drugu boju."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Učitaj sliku"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Premesti odabrane piksele"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Unesi iz fajla"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Premesti odabir da bi premestio odabrani sadržaj."
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nova..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Sakrij"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Otvori..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Dok"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Otvori skorašnje"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Automatski Sakrij"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Zatvori"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Prikačiv"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Sačuvaj"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Plutajuće"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Sačuvaj kao..."
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Odštampaj"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "U procentima:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Izađi"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Po apsolutnoj veličini:"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Novi"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Širina:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Otvori"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "piksela"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Pozadina"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Visina:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Otvori sliku"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Zadrži proporcije"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Nisam uspeo otvoriti fajl: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Sidro:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Greška"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Nova veličina slike "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Sačuvaj izmene slike \"{0}\" pre otvaranja nove slike?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Osobine sloja"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Fajlovi slika"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Naziv:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Svi fajlovi"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Vidljivo"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Svi fajlovi sa slikama"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Prozirnost"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} slika ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster slika (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Fajl"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Sačuvaj izmene slike \"{0}\" pre zavaranja?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Izmeni"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Zatvori bez snimanja"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Prikaz"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Izreži prema odabiru"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Slika"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Promeni veličinu..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Slojevi"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Dimenzije platna..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Podešavanja"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Okreni 90° u smeru kazaljke na časovniku"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Efekti"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Okreni 90° suprotno od smera kazaljke na časovniku"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Prozor"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Okreni 180°"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Spljošti"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Pomoć"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Opozovi"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Alati"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Ponovi"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokumenti"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Iseci"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Slojevi"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopiraj"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Istorijat"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Prilepi"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Prilepi u novi sloj"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Prilepi u novu sliku"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Sačuvaj izmene slike \"{0}\" pre zavaranja?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Obriši odabrano"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Ako ne sačuvate, sve izmene će biti trajno izgubljene."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Popuni odabrano"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Zatvori bez snimanja"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Obrni odabrano"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Izaberi sve"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Poništi izbor"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Providnost sloja"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Uveličaj"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Preimenuj sloj"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Umanji"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Sakrij sloj"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Uveličaj do prozora"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Prikaži sloj"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Uveličaj odabrano"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Fajlovi slika"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Stvarna veličina"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Mreža piksela"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Lenjiri"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Svi fajlovi sa slikama"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Pikseli"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Inči"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimetri"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Ceo ekran"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "broj niti koje će se koristiti za iscrtavanje"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Prozor"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Verzija"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta internet stranica"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licenca"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Zabeleži grešku"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Izdato pod MIT X11 licencom"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Prevedi ovaj program"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Autorska prava"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Opšte"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "od Pinta saradnika"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Alatke"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Naslov"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Taster prečice"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Putanja"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Omekšavanje ivica"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Temeljno mešanje / Prebrisano mešanje"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Prevrni sliku horizontalno"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Saradnici u ovoj verziji"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Prevrni sliku vertikalno"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Prethodni saradnici"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Prevrni sloj horizontalno"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" boki24 https://launchpad.net/~bojansav"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Prevrni sloj vertikalno"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Preveo:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Dovrši piksele"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Zasniva se na programu Paint.NET:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Efekat iscrtavanja"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Koristi pojedine ikone iz:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopiraj"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "O Pinta programu"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Sloj"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Informacija o verziji"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1444,14 +1589,37 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Sačuvati izmene slike \"{0}\" pre kreiranja nove?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Nastavit bez snimanja"
+
#~ msgid "X :"
#~ msgstr "X:"
#~ msgid "Y :"
#~ msgstr "Y:"
+#~ msgid "Fill mode"
+#~ msgstr "Režim popune"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Savet: Desni klik za uklanjanje kontrolnih tačaka."
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Sačuvaj izmene slike \"{0}\" pre otvaranja nove slike?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster slika (*.ora)"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Temeljno mešanje / Prebrisano mešanje"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Omekšavanje ivica"
+
#~ msgid "Show Pad"
#~ msgstr "Prikaži ped"
diff --git a/po/messages-sv.po b/po/messages-sv.po
index 5335f99..478c3ab 100644
--- a/po/messages-sv.po
+++ b/po/messages-sv.po
@@ -7,554 +7,746 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-25 11:00+0000\n"
-"Last-Translator: David Bengtsson <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-20 18:46+0000\n"
+"Last-Translator: Phoenix <Unknown>\n"
"Language-Team: Swedish <sv at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Om"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Fönster"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Pensel"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Lager"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Arkiv"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopiera"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "R_edigera"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Ändra ritytestorlek"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Visa"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Verktyg"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "B_ild"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Genvägstangent"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Lager"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Normal blandning"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Justeringar"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Skriv över"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Effekter"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Kantutjämning på"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Fönster"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Kantutjämning av"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Hjälp"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Ändra bildstorlek"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Avsluta bildpunkter"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Verktyg"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Rotera 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palett"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Vänd bild horisontellt"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Dokument"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Vänd bild vertikalt"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Lager"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Rotera 90° medurs"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Historik"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Rotera 90° moturs"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Dölj"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Vänd lager horisontellt"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Dockningsbar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Vänd lager vertikalt"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Flytande"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Allmänt"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Autodölj"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0}-bild ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Docka"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Beskär till markering"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Bidragsgivare till denna utgåva"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Ändra storlek..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Tidigare bidragsgivare"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Ritytestorlek..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" David Bengtsson https://launchpad.net/~justfaking"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Vänd horisontellt"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Översatt av:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Vänd vertikalt"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Baserat på arbetet med Paint.NET"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Tillplatta"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Använder en del ikoner från:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Zooma in"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Om Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Zooma ut"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Versionsinfo"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Zooma till fönster"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Titel"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Zooma till markering"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Version"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Verklig storlek"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Sökväg"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Verktygsrad"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Licens"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Bildpunktsrutnät"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Släppt under MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Linjaler"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Upphovsrätt"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Bildpunkter"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "av Pinta-bidragsgivare"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Tum"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "antal trådar att använda för rendering"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Centimeter"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Ändra bildstorlek"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Helskärm"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "I procent:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Linjalenheter"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Med absolut storlek:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Lägg till nytt lager"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Bredd:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Radera lager"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "bildpunkter"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Duplicera lager"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Höjd:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Sammanfoga lager nedåt"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Behåll bildförhållande"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Importera från fil..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Rotera / zooma"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Flytta lager uppåt"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Flytta lager nedåt"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Lageregenskaper"
+msgid "Layer Properties..."
+msgstr "Lagerinställningar..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Namn:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Öppna bildfil"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Synlig"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Importera från fil"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Opacitet:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Spara alla"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Ändra ritytestorlek"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Stäng alla"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Ankare:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pintas webbplats"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Rapportera ett fel"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Översätt detta program"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Om"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Nytt..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Ny skärmbild..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Öppna..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Öppna senaste"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Stäng"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Spara"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Spara som..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Skriv ut"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Avsluta"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Nytt"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Öppna"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Ångra"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Gör om"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Klipp ut"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopiera"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Klistra in"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Klistra in i nytt lager"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Klistra in i ny bild"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Sudda ut markering"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Fyll markering"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Invertera markering"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Markera allt"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Avmarkera"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Återställ till standard"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Ställ in antal färger"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palett"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Öppna palettfil"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Palettfiler (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Alla filer"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Kunde inte öppna palettfilen: {0}.\n"
+"Kontrollera att du försöker öppna en giltig GIMP- eller Paint.NET-palett."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Fel"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Spara palettfil"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET-palett (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP-palett (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Osparad bild {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Bakgrund"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Ny bild"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Ny bildstorlek "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Öppna bild"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Spara ändringarna i bilden \"{0}\" innan en ny skapas?"
+msgid "Could not open file: {0}"
+msgstr "Kunde inte öppna filen: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Om du inte sparar kommer alla ändringar att gå förlorade."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Renderingseffekt"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Fortsätt utan att spara"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterisera"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Lageropacitet"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Invertera färger"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Döp om lager"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Nivåer"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Dölj lager"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Svartvitt"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Visa lager"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Autonivå"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etikett1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Nyans / mättnad"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etikett"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Ljusstyrka / kontrast"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Slumpmässigt brus"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepia"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr ""
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Kurvor"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Färghämtare"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Överföringskarta"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Vänsterklicka för att ställa in den primära färgen. Högerklicka för sekundär "
-"färg."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Efter val"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Luminositet"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Växla inte verktyg"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Växla till föregående verktyg"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Röd "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Växla till pennverktyget"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Grön"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Penna"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Blå "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Lassomarkering"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Återställ"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "Klicka och dra för att rita konturen för ett markeringsområde."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Tips: Högerklicka för att ta bort kontrollpunkter."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Zooma"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Nivåjustering"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Vänsterklicka för att zooma in. Högerklicka för att zooma ut. Klicka och dra "
-"för att zooma in markering."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Inmatningshistogram"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Penselbredd"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Inmatning"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Minska penselstorlek"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Utmatning"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Öka penselstorlek"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Utmatningshistogram"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Konturera form"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Auto"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Fyll form"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Röd"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Fyll och konturera form"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Blå"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Flytta markerade bildpunkter"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Länkad"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Dra markeringen för att flytta markerat innehåll."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Blyertsskiss"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Panorera"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Konstnärlig"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Klicka och dra för att navigera bilden."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Ofokusera"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Vänsterklicka för att rita friformiga linjer som är en bildpunkt med den "
-"primära färgen. Högerklicka för att använda sekundär färg."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Oskärpa"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Ellipsmarkering"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Bukta"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr ""
-"Klicka och dra för att rita en ellipsmarkering. Håll ned Shift för att "
-"begränsa till en cirkel."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Förvräng"
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Gradient"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Mandelbrot-fraktal"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Klicka och dra för att rita gradient från den primära till den sekundära "
-"färgen. Högerklicka för motsatt riktning."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Rendera"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Linjär gradient"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Median"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Linjär reflekterad gradient"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Brus"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Linjär diamantgradient"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pixelera"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Radiell gradient"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Gör skarpare"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Konisk gradient"
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Foto"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Färgläge"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Oljemålning"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Genomskinlighetsläge"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gaussisk oskärpa"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Rundad rektangel"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Glöd"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"Vänsterklicka och dra för att rita en rundad rektangel. Högerklicka för "
-"sekundär färg. Håll ned Shift för att begränsa."
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Mjuka upp porträtt"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Radie"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Kakelreflektion"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Minska rektangelns hörnradie"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Ta bort röda ögon"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Öka rektangelns hörnradie"
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Frostat glas"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Vänsterklicka för att rita med den primära färgen. Högerklicka för att rita "
-"med sekundär färg."
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Kantupptäckt"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Rektangelmarkering"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Stilisera"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"Klicka och dra för att rita en rektangelmarkering. Håll ner Shift för att "
-"begränsa till en kvadrat."
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julia-fraktal"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Färghink"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Rörelseoskärpa"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Vänsterklicka för att fylla ett område med den primära färgen. Högerklicka "
-"för att fylla med sekundär färg."
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Ciselera"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Klonstämpel"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Bläckskiss"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Flytta markering"
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Zoomoskärpa"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Dra markeringen för att flytta markeringskonturen."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
+msgstr "Polär inversion"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Fri form"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Moln"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Fylläge"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragment"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Sammanhängande"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Reducera brus"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Global"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Radiell oskärpa"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerans"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Vrid"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Ellips"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Lägg till brus"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Gör relief"
+
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Konturera"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Slumpmässigt brus"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-"Vänsterklicka och dra för att rita en ellips. Högerklicka för sekundär färg. "
-"Håll ned Shift för att begränsa till en cirkel."
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etikett1"
+
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etikett"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Välj primär färg"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Välj sekundär färg"
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Välj palettfärg"
+
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Panorera"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Klicka och dra för att navigera bilden."
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
@@ -568,42 +760,34 @@ msgstr ""
"Vänsterklicka för att placera markören och skriv sedan önskad text. "
"Textfärgen är den primära färgen."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Typsnitt"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Fet"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Kursiv"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Understruken"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Vänsterjustera"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Centrera"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Högerjustera"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Trollspömarkering"
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Klicka för att markera ett område med liknande färg."
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Rektangel"
@@ -616,655 +800,622 @@ msgstr ""
"Vänsterklicka och dra för att rita en rektangel. Högerklicka för sekundär "
"färg. Håll ned Shift för att begränsa till en kvadrat."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Linje"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Fri form"
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-"Vänsterklicka för att rita med den primära färgen. Högerklicka för sekundär "
-"färg."
-
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Omfärga"
-
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Vänsterklicka för att ersätta den sekundära färgen med den primära."
-
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Suddgummi"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Klicka och dra för att sudda ut en del av bilden."
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pixelera"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Förvräng"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Ta bort röda ögon"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Foto"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Rörelseoskärpa"
-
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Oskärpa"
+"Vänsterklicka för att rita med den primära färgen. Högerklicka för att rita "
+"med sekundär färg."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Bläckskiss"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Fyllningsstil"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Konstnärlig"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Konturera form"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Radiell oskärpa"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Fyll form"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Ofokusera"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Fyll och konturera form"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Kantupptäckt"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Flödesläge"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
-msgstr "Stilisera"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Sammanhängande"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Frostat glas"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Global"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Oljemålning"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerans"
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Zoomoskärpa"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Linje"
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
-msgstr "Polär inversion"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr ""
+"Vänsterklicka för att rita med den primära färgen. Högerklicka för sekundär "
+"färg."
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Moln"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Flytta markering"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Rendera"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Dra markeringen för att flytta markeringskonturen."
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Glöd"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Rektangelmarkering"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Lägg till brus"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"Klicka och dra för att rita en rektangelmarkering. Håll ned Shift för att "
+"begränsa till en kvadrat."
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Brus"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Trollspömarkering"
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragment"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Klicka för att markera ett område med liknande färg."
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Gör skarpare"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Ellipsmarkering"
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Blyertsskiss"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
+"Klicka och dra för att rita en ellipsmarkering. Håll ned Shift för att "
+"begränsa till en cirkel."
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Konturera"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Lassomarkering"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gaussisk oskärpa"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Klicka och dra för att rita konturen för ett markeringsområde."
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Kakelreflektion"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Färghink"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Gör relief"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Vänsterklicka för att fylla ett område med den primära färgen. Högerklicka "
+"för att fylla med sekundär färg."
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Ciselera"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Gradient"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Mandelbrot-fraktal"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Klicka och dra för att rita gradient från den primära till den sekundära "
+"färgen. Högerklicka för motsatt riktning."
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Bukta"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Linjär gradient"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Vrid"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Linjär reflekterad gradient"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Mjuka upp porträtt"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Linjär diamantgradient"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Reducera brus"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Radiell gradient"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julia-fraktal"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Konisk gradient"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Median"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Läge"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Kurvor"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Färgläge"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Nivåer"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Genomskinlighetsläge"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Autonivå"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Penselbredd"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Invertera färger"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Minska penselstorlek"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterisera"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Öka penselstorlek"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Svartvitt"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Pensel"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Nyans / mättnad"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Typ"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Sepia"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Omfärga"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Ljusstyrka / kontrast"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Vänsterklicka för att ersätta den sekundära färgen med den primära."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Nivåjustering"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normal"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Inmatningshistogram"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Cirklar"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Inmatning"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Rutor"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Utmatning"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Splatter"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Utmatningshistogram"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Rutnät"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Auto"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Ellips"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Återställ"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"Vänsterklicka och dra för att rita en ellips. Högerklicka för sekundär färg. "
+"Håll ned Shift för att begränsa till en cirkel."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Röd"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Klonstämpel"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Grön"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Ctrl-vänsterklicka för att ställa in ursprunget. Vänsterklicka för att rita."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Blå"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Zooma"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Länkad"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Vänsterklicka för att zooma in. Högerklicka för att zooma ut. Klicka och dra "
+"för att zooma in markering."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Överföringskarta"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Rundad rektangel"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"Vänsterklicka och dra för att rita en rundad rektangel. Högerklicka för "
+"sekundär färg. Håll ned Shift för att begränsa."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Luminositet"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Radie"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Minska rektangelns hörnradie"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Röd "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Öka rektangelns hörnradie"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Blå "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Färghämtare"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Vänsterklicka för att ställa in den primära färgen. Högerklicka för sekundär "
+"färg."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Lägg till nytt lager"
-
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Radera lager"
-
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Duplicera lager"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Efter val"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Sammanfoga lager nedåt"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Växla inte verktyg"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Importera från fil..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Växla till föregående verktyg"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Vänd horisontellt"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Växla till pennverktyget"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Vänd vertikalt"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Penna"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Rotera / zooma"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Suddgummi"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Flytta lager uppåt"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Klicka och dra för att sudda ut en del av bilden."
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Flytta lager nedåt"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Vänsterklicka för att rita friformiga linjer som är en bildpunkt med den "
+"primära färgen. Högerklicka för att använda sekundär färg."
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Öppna bildfil"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Flytta markerade bildpunkter"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Importera från fil"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Dra markeringen för att flytta markerat innehåll."
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Nytt..."
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Dölj"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Öppna..."
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Docka"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Öppna senaste"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Autodölj"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Stäng"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Dockningsbar"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Spara"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Flytande"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Spara som..."
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "Alternativnamn"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Skriv ut"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "I procent:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Avsluta"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Med absolut storlek:"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Nytt"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Bredd:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Öppna"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "bildpunkter"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Bakgrund"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Höjd:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Öppna bild"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Behåll bildförhållande"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Kunde inte öppna filen: {0}"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Ankare:"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Fel"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Ny bildstorlek "
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Spara ändringarna i bilden \"{0}\" innan en ny öppnas?"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Lageregenskaper"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Bildfiler"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Namn:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Alla filer"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Synlig"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Spara bildfil"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Opacitet:"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0}-bild ({1})"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster-bild (*.ora)"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Arkiv"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Spara ändringarna i bilden \"{0}\" innan du avslutar?"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "R_edigera"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Stäng utan att spara"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Visa"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Beskär till markering"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "B_ild"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Ändra storlek..."
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Lager"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Ritytestorlek..."
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Justeringar"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Rotera 90° medurs"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Effekter"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Rotera 90° moturs"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Fönster"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Rotera 180°"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Verktygsfönster"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Tillplatta"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Hjälp"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Ångra"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Verktyg"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Gör om"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Dokument"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Klipp ut"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Lager"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopiera"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Historik"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Klistra in"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Ta en skärmbild"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Klistra in i nytt lager"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Fördröjning före en skärmbild tas (sekunder):"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Klistra in i ny bild"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Spara ändringarna i bilden \"{0}\" innan du avslutar?"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Sudda ut markering"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Om du inte sparar kommer alla ändringar att gå förlorade."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Fyll markering"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Stäng utan att spara"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Invertera markering"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Ändra palettstorlek"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Markera allt"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Ny palettstorlek:"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Avmarkera"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Lageropacitet"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Zooma in"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Döp om lager"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Zooma ut"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Dölj lager"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Zooma till fönster"
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Visa lager"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Zooma till markering"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Bildfiler"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Verklig storlek"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Inklistringen avbröts"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Bildpunktsrutnät"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Urklippet innehåller inte en bild"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Linjaler"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Spara bildfil"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Bildpunkter"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta stöder inte sparande av bilder i detta filformat."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "Tum"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Ett fil med namnet \"{0}\" finns redan. Vill du ersätta den?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Centimeter"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"Filen finns redan i \"{1}\". Vid ersättning skrivs dess innehåll över."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Helskärm"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "antal trådar att använda för rendering"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Fönster"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Version"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pintas webbplats"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Licens"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Rapportera ett fel"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Släppt under MIT X11 License."
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Översätt detta program"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Upphovsrätt"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Allmänt"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "av Pinta-bidragsgivare"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Verktyg"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Titel"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Genvägstangent"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Sökväg"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Kantutjämning"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG-kvalitet"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Normal blandning / överskriv blandning"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Kvalitet: "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Vänd bild horisontellt"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Bidragsgivare till denna utgåva"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Vänd bild vertikalt"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Tidigare bidragsgivare"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Vänd lager horisontellt"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" David Bengtsson https://launchpad.net/~justfaking\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Phoenix https://launchpad.net/~thephoenix"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Vänd lager vertikalt"
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Översatt av:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Avsluta bildpunkter"
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Baserat på arbetet med Paint.NET"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Renderingseffekt"
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Använder en del ikoner från:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopiera"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Om Pinta"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Lager"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Versionsinfo"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1442,5 +1593,43 @@ msgstr ""
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
-"Tips: för bästa resultat, använd markeringsverktyg först för att markera "
+"Tips: För bästa resultat, använd först markeringsverktyg för att markera "
"varje öga."
+
+#~ msgid "%"
+#~ msgstr "%"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Fortsätt utan att spara"
+
+#~ msgid "X :"
+#~ msgstr "X:"
+
+#~ msgid "Y :"
+#~ msgstr "Y:"
+
+#~ msgid "Fill mode"
+#~ msgstr "Fylläge"
+
+#~ msgid "Show Pad"
+#~ msgstr "Visa fält"
+
+#~ msgid "Tip : Right-click to remove control points."
+#~ msgstr "Tips: högerklicka för att ta bort kontrollpunkter"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Spara ändringarna i bilden \"{0}\" innan en ny öppnas?"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Spara ändringarna i bilden \"{0}\" innan en ny skapas?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster-bild (*.ora)"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Kantutjämning"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Normal blandning / överskriv blandning"
diff --git a/po/messages-th.po b/po/messages-th.po
index 0557b4c..4d67f27 100644
--- a/po/messages-th.po
+++ b/po/messages-th.po
@@ -7,673 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
"PO-Revision-Date: 2010-09-07 11:11+0000\n"
"Last-Translator: Jonathan Pobst <Unknown>\n"
"Language-Team: Thai <th at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "เกี่ยวกับ"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "พู่กัน"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "แ_ฟ้ม"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr ""
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "แ_ก้ไข"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "ชั้นงาน"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "มุ_มมอง"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "คัดลอก"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "รูป_ภาพ"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "ปรับขนาดหน้ากระดาษ"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_ชั้นงาน"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_การปรับเปลี่ยน"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_ลูกเล่น"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr ""
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "ห_น้าต่าง"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_วิธีใช้"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "เครื่องมือ"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "ปรับขนาดภาพ"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "เอกสาร"
-
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "ชั้นงาน"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "หมุน 180°"
-#: Pinta/MainWindow.cs:398
-msgid "History"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "ซ่อน"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "จัดใส่สำรับงานได้"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "หมุน 90° ตามเข็มนาฬิกา"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "ลอย"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "หมุน 90° ทวนเข็มนาฬิกา"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "ซ่อนอัตโนมัติ"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "พลิกชั้นงานในแนวตั้ง"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "สำรับงาน"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "พลิกชั้นงานในแนวนอน"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Saruch Srisawadpong https://launchpad.net/~schemer-of-darkness\n"
-" SiraNokyoongtong https://launchpad.net/~gumara\n"
-" Srun Werakool https://launchpad.net/~panx0008"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "แปลโดย:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "ปรับขนาด..."
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "เกี่ยวกับ Pinta"
-
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "เวอร์ชัน"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "เวอร์ชัน"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "ขยาย"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr ""
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "ย่อ"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "ลิขสิทธิ์"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "ขนาดพอดี"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "สงวนลิขสิทธิ์"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "ขนาดปกติ"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "ปรับขนาดภาพ"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "ความกว้าง:"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "พิกเซล"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "ความสูง:"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "คุณสมบัติชั้นงาน"
-
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "ชื่อ:"
-
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "ปรากฏ"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "ความทึบแสง:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "เต็มจอ"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "ปรับขนาดหน้ากระดาษ"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "ภาพใหม่"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "ลบชั้นงาน"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "ขนาดของภาพใหม่ "
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
msgstr ""
-"บันทึนการเปลี่ยนแปลงต่าง ๆ ที่กระทำต่อภาพ \"{0}\" ก่อนที่จะสร้างภาพใหม่"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "ถ้าคุณไม่บันทึกงาน การแก้ไขทั้งหมดจะสูญหายอย่างถาวร"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "ทำต่อไปโดยไม่บันทึกงาน"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "ความทึบแสงของชั้นงาน"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "เปลี่ยนชื่อชั้นงาน"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "ซ่อนชั้นงาน"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "แสดงชั้นงาน"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "เปิดแฟ้มรูปภาพ"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr ""
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "เกี่ยวกับ"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "ใหม่..."
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "เปิด..."
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "ดินสอ"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "แฟ้มล่าสุด"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "ปิด"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "บันทึก"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "ย่อ/ขยาย"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "บันทึกเป็น..."
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "พิมพ์"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "ขนาดพู่กัน"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "ออก"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "ลดขนาดพู่กัน"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "ใหม่"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "เพิ่มขนาดพู่กัน"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "เปิด"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "เรียกคืน"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "ทำซ้ำ"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "ตัด"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "คัดลอก"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "แปะ"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "แปะในชั้นงานใหม่"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "แปะในรูปภาพใหม่"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "ไล่ระดับสี"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "พื้นหลัง"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "ภาพใหม่"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "เปิดรูปภาพ"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "รัศมี"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "แบบอักษร"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "สี่เหลี่ยมผืนผ้า"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "มัว"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "ยางลบ"
-
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr ""
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "ภาพถ่าย"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "มัว"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -681,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -707,542 +680,713 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr ""
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
msgstr ""
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "แบบอักษร"
+
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "สี่เหลี่ยมผืนผ้า"
+
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "ลบชั้นงาน"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "ไล่ระดับสี"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "เปิดแฟ้มรูปภาพ"
-
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "ใหม่..."
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "ขนาดพู่กัน"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "เปิด..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "ลดขนาดพู่กัน"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "แฟ้มล่าสุด"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "เพิ่มขนาดพู่กัน"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "ปิด"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "พู่กัน"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "บันทึก"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "บันทึกเป็น..."
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "พิมพ์"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "ออก"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "ใหม่"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "เปิด"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "พื้นหลัง"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "เปิดรูปภาพ"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "แฟ้มรูปภาพ"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "ย่อ/ขยาย"
+
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "บันทึกแฟ้มรูปภาพ"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "รัศมี"
+
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "ปิดโดยไม่บันทึก"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "ปรับขนาด..."
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "หมุน 90° ตามเข็มนาฬิกา"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "หมุน 90° ทวนเข็มนาฬิกา"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "หมุน 180°"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "ดินสอ"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "ยางลบ"
+
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "เรียกคืน"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "ทำซ้ำ"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "ตัด"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "คัดลอก"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "ซ่อน"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "แปะ"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "สำรับงาน"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "แปะในชั้นงานใหม่"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "ซ่อนอัตโนมัติ"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "แปะในรูปภาพใหม่"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "จัดใส่สำรับงานได้"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "ลอย"
+
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "ความกว้าง:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "พิกเซล"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "ความสูง:"
+
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "ขยาย"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "ขนาดของภาพใหม่ "
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "ย่อ"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "คุณสมบัติชั้นงาน"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "ขนาดพอดี"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "ชื่อ:"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "ปรากฏ"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "ความทึบแสง:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "ขนาดปกติ"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "แ_ฟ้ม"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "แ_ก้ไข"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "มุ_มมอง"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "รูป_ภาพ"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_ชั้นงาน"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_การปรับเปลี่ยน"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_ลูกเล่น"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "ห_น้าต่าง"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_วิธีใช้"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "เครื่องมือ"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "เอกสาร"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "ชั้นงาน"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "เต็มจอ"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "ถ้าคุณไม่บันทึกงาน การแก้ไขทั้งหมดจะสูญหายอย่างถาวร"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "ปิดโดยไม่บันทึก"
+
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "ความทึบแสงของชั้นงาน"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "เปลี่ยนชื่อชั้นงาน"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "ซ่อนชั้นงาน"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "แสดงชั้นงาน"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "แฟ้มรูปภาพ"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "บันทึกแฟ้มรูปภาพ"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "เวอร์ชัน"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "ลิขสิทธิ์"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "สงวนลิขสิทธิ์"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "พลิกชั้นงานในแนวตั้ง"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "พลิกชั้นงานในแนวนอน"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "คัดลอก"
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "ชั้นงาน"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Saruch Srisawadpong https://launchpad.net/~schemer-of-darkness\n"
+" SiraNokyoongtong https://launchpad.net/~gumara\n"
+" Srun Werakool https://launchpad.net/~panx0008"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "แปลโดย:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr ""
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "เกี่ยวกับ Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "เวอร์ชัน"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1422,6 +1566,14 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "ทำต่อไปโดยไม่บันทึกงาน"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr ""
+#~ "บันทึนการเปลี่ยนแปลงต่าง ๆ ที่กระทำต่อภาพ \"{0}\" ก่อนที่จะสร้างภาพใหม่"
+
#~ msgid "X :"
#~ msgstr "X :"
diff --git a/po/messages-tr.po b/po/messages-tr.po
index e0fa762..eff6afa 100644
--- a/po/messages-tr.po
+++ b/po/messages-tr.po
@@ -7,540 +7,747 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-07 11:09+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-09 14:52+0000\n"
+"Last-Translator: Omer GOK <Unknown>\n"
"Language-Team: Turkish <tr at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Hakkında"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Pencere"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Boya fırçası"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Katman"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Dosya"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "kopyala"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Düzenle"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Tuvali Yeniden Boyutlandır"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Göster"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Araç"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Görüntü"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Kısayol tuşu"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Katmanlar"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Normal Harmalama"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Ayarlar"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Üzerine yaz"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Efektler"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Antialiasing Açık"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Pencere"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Kenar Keskinleştirme Kapalı"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Yardım"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Resmi Yeniden Boyutlandır"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Pikseller Bitir"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Araçlar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "180° Döndür"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Palet"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Resmi Yatay Döndür"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Belgeler"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Resmi Dikey Döndür"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Katmanlar"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Saat Yönünde 90° Çevir"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Geçmiş"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Saat Yönünün Tersinde 90° Çevir"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Gizle"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Katmanı Yatay Döndür"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Gömülebilir"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Katmanı Dikey Döndür"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Yüzen"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Genel"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Otomatik Gizle"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} resim ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Rıhtım"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Seçime Kırp"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Bu Sürüme Katkıda Bulunanlar"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Resmi Ölçeklendir..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Önceden Katkıda Bulunmuş Olanlar"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Tuval Boyutu..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" Yalçın Can https://launchpad.net/~echza"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Yatay Çevir"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Çeviren:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Dikey Çevir"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Paint.NET üzerine inşa edilmiştir:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Düzleştir"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Bazı simgeler şuradan alınmıştır:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Yakınlaştır"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Pinta Hakkında"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Uzaklaştır"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Sürüm Bilgisi"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Pencereye Yaklaş"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Başlık"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "Seçimi Büyüt"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Sürüm"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Özgün Boyut"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Konum"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Araç Çubuğu"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Lisans"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Piksel Izgara"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "MIT X11 Lisansı altında dağıtılmaktadır"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Cetvel"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Telif Hakkı"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Pikseller"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "Pinta katılımcıları tarafından"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "İnç"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "oluşturulma için için kullanılan işlem parçacıkları"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Santimetre"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Görüntüyü Yeniden Boyutlandır"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "Tam Ekran"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr ""
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Cetvel Birimi"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr ""
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Yeni Katman Ekle"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Genişlik:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Katmanı Sil"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "piksel"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Katmanı Çoğalt"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Yükseklik:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Katmanı Birleştir"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "En-boy oranını koru"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Bir dosyayı içeri aktar..."
+
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Döndür / Yakınlaştır"
+
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Katmanı Yukarı Çıkar"
+
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Katmanı Aşağı İndir"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Katman Özellikleri"
+msgid "Layer Properties..."
+msgstr "Katman Özellikleri..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "İsim:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Bir Görüntü Dosyası Aç"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Görünür"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Bir dosyayı içeri aktar"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Saydamlık:"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Tümünü Kaydet"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Tuvali Yeniden Boyutlandır"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Tümünü Kapat"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Çapa:"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta Web Sayfası"
+
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Hata Bildir"
+
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Bu Programı Tercüme Et"
+
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Hakkında"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Yeni..."
+
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Yeni Ekran Görüntüsü..."
+
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Aç..."
+
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Son Kullanılanlardan Aç"
+
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Kapat"
+
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Kaydet"
+
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Farklı Kaydet..."
+
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Yazdır"
+
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Çık"
+
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Yeni"
+
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Aç"
+
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Geri Al"
+
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Yinele"
+
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Kes"
+
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Kopyala"
+
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Yapıştır"
+
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Yeni Katmana Yapıştır"
+
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Yeni Görüntü Dosyasına Yapıştır"
+
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Seçimi Sil"
+
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Seçimi Doldur"
+
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Seçimi Tersine Çevir"
+
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Tümünü Seç"
+
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Seçimi Kaldır"
+
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Varsayılana Sıfırla"
+
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Renk Numaraları"
+
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Palet"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Palet Dosyası Aç"
+
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Palet dosyaları (*.txt, *.gpl)"
+
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Tüm dosyalar"
+
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
+msgid ""
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"Palat dosyası açılamdı: {0}.\n"
+"Lütfen GIMP veya Paint.NET paletlerini seçiniz."
+
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Hata"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Palet Dosyasını Kaydet"
+
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET paleti (*.txt)"
+
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP paleti (*.gpl)"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Kaydedilmemiş Resim {0}"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Arkaplan"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
msgid "New Image"
msgstr "Yeni Görüntü"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Yeni Görüntü Boyutu "
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Görüntü Aç"
-#: Pinta/DialogHandlers.cs:57
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr ""
-"Yeni bir belge açılmadan önce \"{0}\" görüntüsündeki değişiklikler "
-"kaydedilsin mi?"
+msgid "Could not open file: {0}"
+msgstr "Dosya açılamadı: {0}"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Kaydetmezseniz tüm değişiklikler kalıcı olarak kaybolacak."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Render Efekti"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Kaydetmeden devam et"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Posterleştir"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Katman Saydamlığı"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Renkleri Ters Çevir"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Katmanı Yeniden Adlandır"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Seviyeler"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Katmanı Gizle"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Siyah ve Beyaz"
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Katmanı Göster"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Otomatik Seviye"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "etiket1"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Ton / Dolgunluk"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "etiket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Açıklık / Parlaklık"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Rastgele Parazit"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Sepya"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr ""
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Eğriler"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Renk Seçici"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Transfer Haritası"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Temel rengi belirmek için farenizin sol tuşa basın. İkincil rengi belirlemek "
-"için ise farenizin sağ tuşuna basın."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Seçimden sonra"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Parlaklık"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Aracı değiştirme"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Önceki araca geç"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Kırmızı "
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Kalem aracına geçin"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Yeşil"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Kalem"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Mavi "
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Kement Seçim"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Sıfırla"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Öneri : Kontrol noktalarını kaldırmak için sağ tıklayın."
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Büyüt"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Seviye Ayarları"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Giriş Histogram"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Fırça boyutu"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Girdi"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Fırça boyutunu azalt"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Çıktı"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Fırça boyutunu arttır"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Çkış Histogram"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Otomatik"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Şekli Doldur"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Kırmızı"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Mavi"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Seçili Pikselleri Taşı"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Bağlı"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr ""
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Kalemle Eskiz"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Kaydırma"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Sanatsal"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr ""
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Odaklan"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Bulanıklıklar"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Elips Seçim"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Şişirme"
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Boz"
+
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Renk Geçişi"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Oluştur"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Ortalama"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr ""
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Parazit"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Effects/Effects/PixelateEffect.cs:26
+msgid "Pixelate"
+msgstr "Pikselleştir"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Keskinleştir"
+
+#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
+msgid "Photo"
+msgstr "Fotoğraf"
+
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Yağlı Boya"
+
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Gauss Bulanıklığı"
+
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Parlama"
+
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Işınsal Renk Geçişi"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Kırmızı Göz Kaldırma"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr ""
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Buzlu Cam"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Renk Kipi"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
+msgid "Edge Detect"
+msgstr "Kenar Saptama"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Şeffaflık Kipi"
+#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
+#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
+msgid "Stylize"
+msgstr "Stilize"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Dairesel Dikdörtgen"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Julia Fraktali"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Hareketli Bulanıklaştır"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Yarıçap"
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Kabartma"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr ""
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
+msgid "Zoom Blur"
+msgstr "Yaklaşma Bulanıklaştırması"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
+msgid "Polar Inversion"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Dikdörtgen Seçim"
+#: Pinta.Effects/Effects/CloudsEffect.cs:30
+msgid "Clouds"
+msgstr "Bulutlar"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Fragman"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Boya Kovası"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Paraziti Azalt"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Dairesel Bulanıklaştırma"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Stampa"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
+msgstr "Parazit Ekle"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Seçimi Taşı"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Kabartma"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr ""
+#: Pinta.Effects/Effects/OutlineEffect.cs:29
+msgid "Outline"
+msgstr "Anahat"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Rastgele Parazit"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Doldurma kipi"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Sürekli"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "etiket1"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Genel"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "etiket"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Tolerans"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Birincil Rengi Seç"
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Elips"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "İkincil Rengi Seç"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Kaydırma"
+
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Resmi hareket ettirmek için tıklayın ve sürükleyin."
+
#: Pinta.Tools/TextTool.cs:37
msgid "Text"
msgstr "Metin"
@@ -550,43 +757,37 @@ msgid ""
"Left click to place cursor, then type desired text. Text color is primary "
"color."
msgstr ""
+"İşaretçiyi yerleştirmek için tıklayın ve istenen metni yazın. Metin rengi "
+"birincil renktir."
-#: Pinta.Tools/TextTool.cs:131
+#: Pinta.Tools/TextTool.cs:144
msgid "Font"
msgstr "Yazıtipi"
-#: Pinta.Tools/TextTool.cs:186
+#: Pinta.Tools/TextTool.cs:205
msgid "Bold"
msgstr "Kalın"
-#: Pinta.Tools/TextTool.cs:193
+#: Pinta.Tools/TextTool.cs:212
msgid "Italic"
msgstr "Eğik"
-#: Pinta.Tools/TextTool.cs:201
+#: Pinta.Tools/TextTool.cs:220
msgid "Underline"
msgstr "Altı çizili"
-#: Pinta.Tools/TextTool.cs:210
+#: Pinta.Tools/TextTool.cs:229
msgid "Left Align"
msgstr "Sola Hizalı"
-#: Pinta.Tools/TextTool.cs:219
+#: Pinta.Tools/TextTool.cs:238
msgid "Center Align"
msgstr "Ortala"
-#: Pinta.Tools/TextTool.cs:227
+#: Pinta.Tools/TextTool.cs:246
msgid "Right Align"
msgstr "Sağa Hizalı"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr ""
-
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr ""
-
#: Pinta.Tools/RectangleTool.cs:38
msgid "Rectangle"
msgstr "Dikdörtgen"
@@ -596,654 +797,616 @@ msgid ""
"Click and drag to draw a rectangle (right click for secondary color). Hold "
"shift to constrain to a square."
msgstr ""
+"Dikdörtgen çizmek için tıklayın ( ikincil renk için sağ tıklayın ) ve "
+"sürükleyin. Kare elde etmek için shift'e basın."
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Çizgi"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
msgid ""
-"Left click to draw with primary color, right click for secondary color."
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
+"Birincil renkle çizmek için sol, ikincil renkle çizmek için sağ tıklayın."
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Silgi"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Şekli Doldur"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:26
-msgid "Pixelate"
-msgstr "Pikselleştir"
-
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Boz"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Kırmızı Göz Kaldırma"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Sürekli"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
-#: Pinta.Effects/Effects/SharpenEffect.cs:34
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
-msgid "Photo"
-msgstr "Fotoğraf"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Genel"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Hareketli Bulanıklaştır"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Tolerans"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Bulanıklıklar"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Çizgi"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
+"Birincil renkle çizmek için sol, ikincil renkle çizmek için sağ tıklayın."
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Sanatsal"
-
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Dairesel Bulanıklaştırma"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Seçimi Taşı"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
-msgid "Edge Detect"
-msgstr "Kenar Saptama"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Dikdörtgen Seçim"
-#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
-#: Pinta.Effects/Effects/EmbossEffect.cs:34
-msgid "Stylize"
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
+"Dikdörtgen çizmek için tıklayın ve sürükleyin. Kare elde etmek için shift'e "
+"basın."
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Yağlı Boya"
-
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
-msgid "Zoom Blur"
-msgstr "Yaklaşma Bulanıklaştırması"
-
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:26
-msgid "Polar Inversion"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:30
-msgid "Clouds"
-msgstr "Bulutlar"
-
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Oluştur"
-
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Parlama"
-
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
-msgstr "Parazit Ekle"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Elips Seçim"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Parazit"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Fragman"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Kement Seçim"
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Keskinleştir"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Kalemle Eskiz"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Boya Kovası"
-#: Pinta.Effects/Effects/OutlineEffect.cs:29
-msgid "Outline"
-msgstr "Anahat"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Bölgeyi birincil renkle doldurmak için sol, ikincil renk ile doldurmak için "
+"sağ tıklayın."
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Gauss Bulanıklığı"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Renk Geçişi"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Kabartma"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Kabartma"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr ""
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Şişirme"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Işınsal Renk Geçişi"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr ""
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Mod"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Paraziti Azalt"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Renk Kipi"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Julia Fraktali"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Şeffaflık Kipi"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Ortalama"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Fırça boyutu"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Eğriler"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Fırça boyutunu azalt"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Seviyeler"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Fırça boyutunu arttır"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Otomatik Seviye"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Boya fırçası"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Renkleri Ters Çevir"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Tür"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Posterleştir"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Siyah-Beyaz"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "İkincil rengi birincil renkle değiştirmek için sol tıkla."
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr ""
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Normal"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Renksiz"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Daireler"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Açıklık / Parlaklık"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Kareler"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Girdi"
-
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Çıktı"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Elips"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
+"Elips çizmek için tıklayıp ( ikincil renk için sağ tıklayın) sürükleyin. "
+"Çember elde etmek için Shift'e basın."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Oto"
-
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Sıfırla"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Stampa"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Kırmızı"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Yeşil"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Büyüt"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Mavi"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Bağlı"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Dairesel Dikdörtgen"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
-
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Parlaklık"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Yarıçap"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Kırmızı "
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Mavi "
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Renk Seçici"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Temel rengi belirmek için farenizin sol tuşa basın. İkincil rengi belirlemek "
+"için ise farenizin sağ tuşuna basın."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Yeni Katman Ekle"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Seçimden sonra"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Katmanı Sil"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Aracı değiştirme"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Katmanı Çoğalt"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Önceki araca geç"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Katmanı Birleştir"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Kalem aracına geçin"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Bir Dosyadan içe aktar"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Kalem"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Yatay Çevir"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Silgi"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Dikey Çevir"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Döndür / Yakınlaştır"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Katmanı Yukarı Çıkar"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Seçili Pikselleri Taşı"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Katmanı Aşağı İndir"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Bir Görüntü Dosyası Aç"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Gizle"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Bir Dosyadan İçe Aktar"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Rıhtım"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Yeni..."
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Otomatik Gizle"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Aç..."
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Gömülebilir"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Son Kullanılanlardan Aç"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Yüzen"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Kapat"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Kaydet"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Yüzde :"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Farklı Kaydet..."
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Yazdır"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Genişlik:"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Çık"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "piksel"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Yeni"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Yükseklik:"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Aç"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "En-boy oranını koru"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Arkaplan"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Çapa:"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Görüntü Aç"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Yeni Görüntü Boyutu "
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Dosya açılamadı: {0}"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Katman Özellikleri"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Hata"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "İsim:"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Görünür"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Görüntü dosyaları"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Saydamlık:"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Tüm dosyalar"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Resim Dosyasını Kaydet"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Dosya"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr ""
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Düzenle"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr ""
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Göster"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Görüntü"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Kaydetmeden kapat"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Katmanlar"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr ""
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Ayarlar"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Resmi Ölçeklendir..."
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Efektler"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Tuvali Kırp..."
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Pencere"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr ""
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Araç Penceresi"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr ""
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Yardım"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "180° Döndür"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Araçlar"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Düzleştir"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Belgeler"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Geri Al"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Katmanlar"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "İleri al"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Geçmiş"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Kes"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Ekran Görüntüsü Al"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Kopyala"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Ekran Görüntüsü Almadan Önce Bekleme (saniye):"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Yapıştır"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr ""
+"Kapatmadan önce değişiklikleri \"{0}\" üzerine kaydetmek istiyor musunuz?"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Yeni Katmana Yapıştır"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Kaydetmezseniz tüm değişiklikler kalıcı olarak kaybolacak."
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Yeni Görüntü Dosyasına Yapıştır"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Kaydetmeden kapat"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Seçimi Doldur"
-
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Seçimi Tersine Çevir"
-
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Tümünü Seç"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Yeni palet büyüklüğü"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Seçimi Kaldır"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Katman Saydamlığı"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Yakınlaştır"
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Katmanı Yeniden Adlandır"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Uzaklaştır"
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Katmanı Gizle"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr ""
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Katmanı Göster"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "Seçime Büyüt"
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Görüntü dosyaları"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Özgün Boyut"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Yapıştırma İptal Edildi"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr ""
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Pano resim içermiyor."
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr ""
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Resim Dosyasını Kaydet"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Piksel"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta bu dosya formatıyla kaydetmeyi desteklemiyor."
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "İnç"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "\"{0}\" isminde dosya mevcut. Değiştirmek ister misiniz?"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Santimetre"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr ""
+"Dosya \"{1}\" içinde mevcut. Değiştirmek içeriğinin üzerine yazılmasına "
+"neden olacak."
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "Tam ekran"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "oluşturulma için için kullanılan işlem parçacıkları"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Pencere"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Sürüm"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta Web Sayfası"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Lisans"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr ""
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "MIT X11 Lisansı altında dağıtılmaktadır"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Bu Programı Tercüme Et"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Telif Hakkı"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Genel"
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "Pinta katılımcıları tarafından"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "Araç"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Başlık"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Kısayol tuşu"
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Konum"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Yazıtipi yumuşatma"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG Kalitesi"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr ""
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Kalite : "
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Bu Sürüme Katkıda Bulunanlar"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Önceden Katkıda Bulunmuş Olanlar"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" 58zarali https://launchpad.net/~yusufulku\n"
+" Ahmet Vurgun https://launchpad.net/~ahmetvurgun\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Omer GOK https://launchpad.net/~mechulkalan\n"
+" Yalçın Can https://launchpad.net/~yalcin.can"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Çeviren:"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Paint.NET üzerine inşa edilmiştir:"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr ""
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Bazı simgeler şuradan alınmıştır:"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "kopyala"
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Pinta Hakkında"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Katman"
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Sürüm Bilgisi"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1356,7 +1519,7 @@ msgstr "Yerleşim"
#: MedianEffect dialog
msgid "Pencil Tip Size"
-msgstr ""
+msgstr "Kalem Ucu Büyüklüğü"
#: CloudsEffect dialog
msgid "Percentile"
@@ -1392,7 +1555,7 @@ msgstr "Tohum"
#: ReduceNoiseEffect dialog
msgid "Softness"
-msgstr ""
+msgstr "Yumuşaklık"
#: OutlineEffect dialog
msgid "Strength"
@@ -1423,8 +1586,23 @@ msgstr ""
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "Kaydetmeden devam et"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr ""
+#~ "Yeni bir belge açılmadan önce \"{0}\" görüntüsündeki değişiklikler "
+#~ "kaydedilsin mi?"
+
#~ msgid "X :"
#~ msgstr "X :"
#~ msgid "Y :"
#~ msgstr "Y :"
+
+#~ msgid "Fill mode"
+#~ msgstr "Doldurma kipi"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Yazıtipi yumuşatma"
diff --git a/po/messages-uk.po b/po/messages-uk.po
index 7508401..d6a3aee 100644
--- a/po/messages-uk.po
+++ b/po/messages-uk.po
@@ -7,714 +7,669 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-06-28 03:12+0000\n"
-"Last-Translator: Jonathan Pobst <Unknown>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2011-01-10 20:20+0000\n"
+"Last-Translator: ma$terok <Unknown>\n"
"Language-Team: Ukrainian <uk at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Про програму"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Пензлик"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "Вікно"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_Файл"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "Шар"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Правка"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "копія"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Вигляд"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Зміна розміру полотна"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "_Малюнок"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "Інструменти"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Шари"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "Гарячі клавіши"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Кольори"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "Нормальне змішування"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Ефекти"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "Перезаписати"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "_Вікно"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "Увімкнути згладжування"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Допомога"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "Вимкнути згладжування"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Змінити розмір зображення"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Інструменти"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "Завершити пікселі"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Палітра"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "Повернути на 180°"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Документи"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "Відобразити зображення горизонтально"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Шари"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "Відобразити зображення вертикально"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Історія"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "Повернути на 90° за годинниковою стрілкою"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Приховати"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "Повернути на 90° проти годинникової стрілки"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Прилипаючі"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "Відобразити шар горизонтально"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Плаваючі"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "Відобразити шар вертикально"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Автоматично приховувати"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "Основні"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Прикріпити"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "Зображення {0}_({1})"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Над релізом працювали:"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "Обрізати по виділеному"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Попередні розробники"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "Змінити розмір..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" ma$terok https://launchpad.net/~m-shein"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "Розмір полотна..."
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Над перекладом працювали:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "Перевернути по горизонталі"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Працює на базі Paint.NET"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "Перевернути по вертикалі"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Використовує деякі іконки з:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "Об'єднати"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Про Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "Збільшити"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Інформація про версію"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "Зменшити"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Заголовок"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "Пристосувати до вікна"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Версія"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "По розміру виділення"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Шлях"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "Натуральний розмір"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Ліцензія"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "Панель інструментів"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Випущено за підтримки МТІ ліцензія X11"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "Піксельна решітка"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Авторські права"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "Лінійки"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "розробники Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "Пікселів"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "кількість потоків, що будуть використані при рендерінгу"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "Дюйми"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Змінити розмір зображення"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "Сантиметри"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "У процентному співвідношенні:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "На весь екран"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Абсолютний розмір"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "Одиниці виміру"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Ширина:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "Додати новий шар"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "пікселів"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "Видалити шар"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Висота:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "Копіювати шар"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Зберігати пропорції"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "Обєднати шар з попереднім"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Властивості шару"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "Імпортувати з файлу ..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Ім’я:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "Поворот / Масштабування"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Видимий"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "Перемістити шар вище"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Непрозорість:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "Перемістити шар нижче"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Зміна розміру полотна"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr "Властивості шару..."
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Прив’язка:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "Відкрити зображення"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Нове зображення"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "Імпортувати з файлу"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Розмір нового зображення "
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "Зберегти все"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "Зберегти зміни в зображенні \"{0}\" перед створенням нового?"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "Закрити все"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "Якщо ви не збережете, всі зміни будуть безповоротно втрачені."
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Відвідати сайт Pinta"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "Продовжити без збереження"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "Звітувати про помилку"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "Непрозорість шару"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "Перекласти цю програму"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "Перейменувати шар"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Про програму"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "Приховати шар"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "Новий..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "Показати шар"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "Новий скріншот..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "Мітка1"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "Відкрити…"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "мітка"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "Відкрити недавні"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "Білий шум"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "Закрити"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "Перемішати"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "Зберегти"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "Вибір кольору"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "Зберегти як…"
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr ""
-"Клацніть лівою клавішею миші для вибору основного кольору. Клацніть правою "
-"клавішею миші, щоб вибрати додатковий колір."
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "Друк"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "Після вибору"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "Вихід"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "Не переключайте інструмент"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "Новий"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "Переключитися до попереднього інструменту"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "Відкрити"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "Переключитися до наступного інструменту"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "Відмінити"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "Олівець"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "Відновити"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "Виділення лассом"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "Вирізати"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "За допомогою миші виділіть контур для вибору області."
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "Копіювати"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "Масштабування"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "Вставити"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr ""
-"Лівий клік мишкою для збільшення. Правий клік мишкою для зменшення. "
-"Натисніть і рухайте мишкою, щоб масштабувати по виділеннню."
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "Вставити як новий шар"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "Товщина пензля."
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "Вставити як нове зображення"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "Зменшити розмір пензля"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "Видалити виділення"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "Збільшити розмір пензля"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "Заповнити виділення"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "Обвести фігуру"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "Інвертувати виділення"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "Залити фігуру"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "Виділити все"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "Залити і обвести фігуру"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "Зняти виділення"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "Перемістити вибрані пікселі"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "Початкові налаштування"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "Перемістіть мишкою виділення, щоб перемістити виділену область."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "Встановіть число кольорів"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "Панорама"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Палітра"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "Клацніть і перетягуйте для навігації по зображенню"
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "Відкрити палітру"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr ""
-"Клацніть лівою клавішею для малювання довільних ліній товщиною один піксель "
-"основним кольором і правою клавішею для використання додаткового кольору."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "Файли палітр (*.txt, *.gpl)"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "Виділення еліпсом"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "Всі файли"
-#: Pinta.Tools/EllipseSelectTool.cs:44
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-"За допомогою миші намалюйте еліптичне виділення. Затисніть shift, щоб "
-"намалювати коло."
+"Не вдалося відкрити файл палітри: {0}.\n"
+"Будь-ласка, переконайтеся, що ви намагаєтеся відкрити дійсну палітру від "
+"GIMP або Paint.NET."
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "Градієнт"
-
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr ""
-"Клацніть і перетягуйте, щоб намалювати градієнт від основного кольору до до "
-"додаткового. Правий клік, щоб зробити навпаки."
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "Помилка"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "Лінійний градієнт"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "Зберегти Палітру"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "Лінійний відображений градієнт."
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Палітра Paint.NET (*.txt)"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "Лінійний ромбовидний градієнт"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "Палітра GIMP (*.gpl)"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "Радіальний градієнт"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "Незбережених зображень {0}"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "Конічний градієнт"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "Фон"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "Кольоровий режим"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Нове зображення"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "Режим прозорості"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "Відкрити зображення"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "Округлений прямокутник"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "Не можу відкрити файл: {0}"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr ""
-"За допомогою миші намалюйте округлений прямокутник (права клавіша малює "
-"додатковим кольором). Затисніть shift, щоб намалювати квадрат."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "Обробити ефекти"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "Радіус"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "Постеризація"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "Зменшити радіус кутів прямокутника"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "Інвертувати кольори"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "Збільшити радіус кутів прямокутника"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "Рівні"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr ""
-"Натисніть ліву клавішу, щоб малювати основним кольром і праву, щоб "
-"додатковим."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "Чорно-біле"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "Прямокутне виділення"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "Автокорекція"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr ""
-"За допомогою миші намалюйте прямокутне виділення. Затисніть shift, щоб "
-"намалювати квадрат."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "Відтінок / Насиченість"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "Заливка"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "Яскравість / контраст"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr ""
-"Лівий клік, щоб залити основним кольором і правий клік, щоб залити "
-"додатковим кольором."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "Сепія"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "Штамп клонування."
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "Криві"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "Переміщення виділеного"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "Карта нормалей"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "Перетягніть виділення мишкою, щоб перемістити контур виділення"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "Довільна форма"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "Освітленість"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "Режим заливки"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "Суміжні області"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "Червоний "
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "Глобальна"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "Зелений"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "Допустиме відхилення"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "Синій "
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "Еліпс"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "Скинути"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr ""
-"За допомогою миші намалюйте еліпс (правою клавішею додатковим кольром). "
-"Затисніть shift, щоб намалювати коло."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "Підказка: Клік правою кнопкою миші видаляє контрольні точки."
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
-msgstr "Текст"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "Корекція рівнів"
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr ""
-"Лівою клавішею помістіть курсор в потрібне місце і наберіть текст. Текст "
-"буде основним кольром."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "Вхідна гістограма"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "Шрифт"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "Вхід"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr "Напівжирний"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "Вихід"
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr "Курсив"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "Вихідна гістограма"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr "Підкреслений"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "Автоматично"
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr "Рівняння ліворуч"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "Червоний"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
-msgstr "Рівняння на середину"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "Синій"
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr "Рівняння праворуч"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "Зв'язок"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "Виділення чарівною паличкою"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "Малюнок олівцем"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "Вибрати регіон з аналогічним кольром."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "Художній"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "Прямокутник"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "Розфокусування"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr ""
-"За допомогою миші намалюте прямокутник (правою клавіша малює додатковим "
-"кольром). Затисніть shift, щоб намалювати квадрат."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "Розмитість"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "Лінія"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "Опуклість"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "Лівою клавішею малює основним кольром а правою малює додатковим."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "Спотворення"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "Перефарбування"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "Множина Мандельброта"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "Лівий клік змінює додатковий колір на основний."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "Обробка"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "Гумка"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "Медіана"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "Натисніть тягніть щоб стерти частину зображення."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "Шум"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "Пікселізація"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "Спотворення"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "Прибирання ефекту червоних очей"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "Різкість"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "Знімок"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "Розмивання рухом"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "Картина маслом."
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "Розмитість"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "Розмивання по Гаусу"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "Ескіз чорнилами"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "Відблиск"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "Художній"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "Пом'якшити портрет"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "Радіальне розмивання"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "Мозаїка"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "Розфокусування"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "Прибирання ефекту червоних очей"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "Матове скло"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "Виділення краю"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr "Стилізація"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "Матове скло"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "Фрактал Julia"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "Картина маслом."
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "Розмивання рухом"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "Чеканка"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "Ескіз чорнилами"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
@@ -728,542 +683,738 @@ msgstr "Полярна інверсія"
msgid "Clouds"
msgstr "Хмари"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "Обробка"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "Фрагмент"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "Відблиск"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "Зменшити шум"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "Радіальне розмивання"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "Скручування"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "Додати шум"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "Шум"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "Фрагмент"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "Різкість"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "Малюнок олівцем"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "Рельєф"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "Контур"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "Розмивання по Гаусу"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Білий шум"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "Мозаїка"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "Перемішати"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "Рельєф"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "Мітка1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "Чеканка"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "мітка"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "Множина Мандельброта"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "Виберіть основний колір"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "Опуклість"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "Виберіть вторинний колір"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "Скручування"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "Оберіть палітру кольорів"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "Пом'якшити портрет"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "Панорама"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "Зменшити шум"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "Клацніть і перетягуйте для навігації по зображенню"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "Фрактал Julia"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "Текст"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "Медіана"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr ""
+"Лівою клавішею помістіть курсор в потрібне місце і наберіть текст. Текст "
+"буде основним кольром."
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "Криві"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "Шрифт"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "Рівні"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "Напівжирний"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "Автокорекція"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "Курсив"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "Інвертувати кольори"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "Підкреслений"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "Постеризація"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr "Рівняння ліворуч"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "Чорно-біле"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr "Рівняння на середину"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "Відтінок / Насиченість"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr "Рівняння праворуч"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "Сепія"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "Прямокутник"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "Яскравість / контраст"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr ""
+"За допомогою миші намалюте прямокутник (правою клавіша малює додатковим "
+"кольром). Затисніть shift, щоб намалювати квадрат."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "Корекція рівнів"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "Довільна форма"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "Вхідна гістограма"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr ""
+"Натисніть ліву клавішу, щоб малювати основним кольром і праву, щоб "
+"додатковим."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "Вхід"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "Стиль заповнення"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "Вихід"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Обвести фігуру"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "Вихідна гістограма"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Залити фігуру"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "Автоматично"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Залити і обвести фігуру"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "Скинути"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "Режим заливки"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "Червоний"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "Суміжні області"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "Зелений"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "Глобальна"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "Синій"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "Допустиме відхилення"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "Зв'язок"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "Лінія"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "Карта нормалей"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "Лівою клавішею малює основним кольром а правою малює додатковим."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "Переміщення виділеного"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "Освітленість"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "Перетягніть виділення мишкою, щоб перемістити контур виділення"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "Прямокутне виділення"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "Червоний "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr ""
+"За допомогою миші намалюйте прямокутне виділення. Затисніть shift, щоб "
+"намалювати квадрат."
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "Синій "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "Виділення чарівною паличкою"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "Вибрати регіон з аналогічним кольром."
+
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "Виділення еліпсом"
+
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
+"За допомогою миші намалюйте еліптичне виділення. Затисніть shift, щоб "
+"намалювати коло."
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "Додати новий шар"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Виділення лассом"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "Видалити шар"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "За допомогою миші виділіть контур для вибору області."
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "Копіювати шар"
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "Заливка"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "Обєднати шар з попереднім"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr ""
+"Лівий клік, щоб залити основним кольором і правий клік, щоб залити "
+"додатковим кольором."
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "Імпортувати з файлу ..."
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "Градієнт"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "Перевернути по горизонталі"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr ""
+"Клацніть і перетягуйте, щоб намалювати градієнт від основного кольору до до "
+"додаткового. Правий клік, щоб зробити навпаки."
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "Перевернути по вертикалі"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "Лінійний градієнт"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "Поворот / Масштабування"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "Лінійний відображений градієнт."
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "Перемістити шар вище"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "Лінійний ромбовидний градієнт"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "Перемістити шар нижче"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "Радіальний градієнт"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "Відкрити зображення"
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "Конічний градієнт"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "Імпортувати з файлу"
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "Режим"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "Новий..."
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "Кольоровий режим"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "Відкрити…"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "Режим прозорості"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "Відкрити недавні"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Товщина пензля."
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "Закрити"
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Зменшити розмір пензля"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "Зберегти"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Збільшити розмір пензля"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "Зберегти як…"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Пензлик"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "Друк"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "Тип"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "Вихід"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "Перефарбування"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "Новий"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "Лівий клік змінює додатковий колір на основний."
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "Відкрити"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "Нормальний"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "Фон"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "Кола"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "Відкрити зображення"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "Квадрати"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "Не можу відкрити файл: {0}"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "Бризки"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "Помилка"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "Сітка"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "Зберегти зміни в зображенні \"{0}\", перш ніж відкрити нове?"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "Еліпс"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "Файли зображень"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr ""
+"За допомогою миші намалюйте еліпс (правою клавішею додатковим кольром). "
+"Затисніть shift, щоб намалювати коло."
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "Всі файли"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "Штамп клонування."
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "Зберегти зображення"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
+"Ctrl+лівий клік мишкою для встановлення основи, лівий клік для малювання."
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "Зображення {0}_({1})"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Масштабування"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "Зображення OpenRaster (*.ora)"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr ""
+"Лівий клік мишкою для збільшення. Правий клік мишкою для зменшення. "
+"Натисніть і рухайте мишкою, щоб масштабувати по виділеннню."
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "Зберегти зміни в зображенні \"{0}\" перед закриттям?"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "Округлений прямокутник"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "Закрити без збереження"
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr ""
+"За допомогою миші намалюйте округлений прямокутник (права клавіша малює "
+"додатковим кольором). Затисніть shift, щоб намалювати квадрат."
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "Обрізати по виділеному"
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "Радіус"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "Змінити розмір..."
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "Зменшити радіус кутів прямокутника"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "Розмір полотна..."
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "Збільшити радіус кутів прямокутника"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "Повернути на 90° за годинниковою стрілкою"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Вибір кольору"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "Повернути на 90° проти годинникової стрілки"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr ""
+"Клацніть лівою клавішею миші для вибору основного кольору. Клацніть правою "
+"клавішею миші, щоб вибрати додатковий колір."
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "Повернути на 180°"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Після вибору"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "Об'єднати"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Не переключайте інструмент"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "Відмінити"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Переключитися до попереднього інструменту"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "Відновити"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Переключитися до наступного інструменту"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "Вирізати"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Олівець"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "Копіювати"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "Гумка"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "Вставити"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "Натисніть тягніть щоб стерти частину зображення."
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "Вставити як новий шар"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr ""
+"Клацніть лівою клавішею для малювання довільних ліній товщиною один піксель "
+"основним кольором і правою клавішею для використання додаткового кольору."
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "Вставити як нове зображення"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Перемістити вибрані пікселі"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "Видалити виділення"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "Перемістіть мишкою виділення, щоб перемістити виділену область."
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "Заповнити виділення"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Приховати"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "Інвертувати виділення"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Прикріпити"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "Виділити все"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Автоматично приховувати"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "Зняти виділення"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Прилипаючі"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "Збільшити"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Плаваючі"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "Зменшити"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "Назва опції"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "Пристосувати до вікна"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "У процентному співвідношенні:"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "По розміру виділення"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Абсолютний розмір"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "Натуральний розмір"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Ширина:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "Піксельна решітка"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "пікселів"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "Лінійки"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Висота:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr "Пікселів"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Зберігати пропорції"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "дюйми"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Прив’язка:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "Сантиметри"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Розмір нового зображення "
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "На весь екран"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Властивості шару"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "Вікно"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Ім’я:"
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Відвідати сайт Pinta"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Видимий"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "Звітувати про помилку"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Непрозорість:"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "Перекласти цю програму"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "…"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "Основні"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_Файл"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Правка"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Вигляд"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "_Малюнок"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Шари"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Кольори"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Ефекти"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "_Вікно"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "Вікна інструментів"
+
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Допомога"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
msgstr "Інструменти"
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "Гарячі клавіши"
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Документи"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "Згладжування"
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Шари"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "Нормальне змішування / Перекриваюче змішування"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Історія"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "Відобразити зображення горизонтально"
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "Зробити Скріншот"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "Відобразити зображення вертикально"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "Зробити скріншот із затримкою (в секундах):"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "Відобразити шар горизонтально"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "Зберегти зміни в зображенні \"{0}\" перед закриттям?"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "Відобразити шар вертикально"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Якщо ви не збережете, всі зміни будуть безповоротно втрачені."
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "Завершити пікселі"
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "Закрити без збереження"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "Обробити ефекти"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "Змінити розмір палітри"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "копія"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "Новий розмір палітри"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
-msgstr "Шар"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Непрозорість шару"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Перейменувати шар"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Приховати шар"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Показати шар"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "Файли зображень"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "Вставку відмінено"
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "Буфер обміну не містить зображення"
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "Зберегти зображення"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta не підтримує збереження зображень в цьому форматі."
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "Файл з іменем \"{0}\" вже існує. Замінити його?"
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "Файл вже існує в \"{1}\". Заміна призведе до перезапису його змісту."
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "кількість потоків, що будуть використані при рендерінгу"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Версія"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Ліцензія"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Випущено за підтримки МТІ ліцензія X11"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Авторські права"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "розробники Pinta"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Заголовок"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Шлях"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "Якість JPEG"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "Якість: "
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Над релізом працювали:"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Попередні розробники"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Eugene Rozov https://launchpad.net/~eugene-rozov\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" UaHummer https://launchpad.net/~uahummer\n"
+" ma$terok https://launchpad.net/~m-shein"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Над перекладом працювали:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Працює на базі Paint.NET"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Використовує деякі іконки з:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Про Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Інформація про версію"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1445,9 +1596,37 @@ msgstr ""
"Підказка: Для досягнення кращих результатів, спершу виділіть кожно око "
"інструментами виділення."
+#~ msgid "Help"
+#~ msgstr "Допомога"
+
+#~ msgid "Adjustments"
+#~ msgstr "Корекція"
+
+#~ msgid "Effects"
+#~ msgstr "Ефекти"
+
+#~ msgid "File"
+#~ msgstr "Файл"
+
+#~ msgid "Edit"
+#~ msgstr "Правка"
+
+#~ msgid "View"
+#~ msgstr "Перегляд"
+
+#~ msgid "Image"
+#~ msgstr "Зображення"
+
#~ msgid "%"
#~ msgstr "%"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Зберегти зміни в зображенні \"{0}\" перед створенням нового?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Продовжити без збереження"
+
#~ msgid "X :"
#~ msgstr "X :"
@@ -1457,5 +1636,24 @@ msgstr ""
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "Підказка: Клік правою клавішею миші видаляє контрольну точку"
+#~ msgid "RGB\r"
+#~ msgstr "RGB\r"
+
+#~ msgid "Antialiasing"
+#~ msgstr "Згладжування"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "Зберегти зміни в зображенні \"{0}\", перш ніж відкрити нове?"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "Нормальне змішування / Перекриваюче змішування"
+
+#~ msgid "Fill mode"
+#~ msgstr "Режим заливки"
+
#~ msgid "Show Pad"
#~ msgstr "Показати вікно"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "Зображення OpenRaster (*.ora)"
diff --git a/po/messages-vi.po b/po/messages-vi.po
index 4458f9a..d6d4a61 100644
--- a/po/messages-vi.po
+++ b/po/messages-vi.po
@@ -7,669 +7,638 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-14 18:28+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-10-28 01:52+0000\n"
"Last-Translator: Nguyen Quang Chien <Unknown>\n"
"Language-Team: Vietnamese <vi at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "Giới thiệu"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "Bút vẽ"
-
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "_File"
-
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "_Sửa"
-
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "_Xem"
-
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "Ả_nh"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr ""
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "_Lớp"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr ""
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "_Chỉnh"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr ""
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "_Hiệu ứng"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "Chỉnh cỡ nền vẽ"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "Cử_a sổ"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr ""
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "_Trợ giúp"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr ""
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
msgstr ""
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "Công cụ"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr ""
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "Bảng màu"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr ""
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "Tài liệu"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr ""
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "Lớp"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "Chỉnh cỡ hình"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "Quá trình"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "Ẩn"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "Neo được"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "Trôi"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr ""
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "Tự động ẩn"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr ""
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "Neo"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "Những người đóng góp vào bản phát hành này"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "Những người đóng góp trước đây"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
msgstr ""
-"Launchpad Contributions:\n"
-" Nguyen Quang Chien https://launchpad.net/~nguyenquangchien"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "Dịch bởi:"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "Dựa trên chương trình Paint.NET:"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "Dùng một số hình biểu tượng từ:"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "Giới thiệu Pinta"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr ""
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "Thông tin về phiên bản"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "Tựa đề"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "Phiên bản"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr ""
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "Đường dẫn"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "Giấy phép"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "Phát hành theo giấy phép MIT X11."
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "Bản quyền"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr ""
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "bởi nhóm đóng góp cho Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr ""
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "số tuyến được dùng để lên hình"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "Chỉnh cỡ hình"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "Theo phần trăm:"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "Theo kích thước tuyệt đối:"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "Bề rộng:"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "điểm ảnh"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "Độ cao:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "Duy trì tỷ lệ hình thể"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "Các thuộc tính lớp"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "Tên:"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "Có thể thấy được"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "Độ đục:"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "Chỉnh cỡ nền vẽ"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "Neo :"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "Hình mới"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr ""
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "Kích cỡ hình mới "
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr ""
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
msgstr ""
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
msgstr ""
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
msgstr ""
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
msgstr ""
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
msgstr ""
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "Giới thiệu"
+
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
msgstr ""
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
msgstr ""
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
msgstr ""
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
msgstr ""
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
msgstr ""
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
msgstr ""
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
msgstr ""
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
msgstr ""
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "Bảng màu"
+
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
msgstr ""
-#: Pinta.Tools/EllipseSelectTool.cs:44
-msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:60
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
msgstr ""
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
msgstr ""
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "Hình mới"
+
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
msgstr ""
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
msgstr ""
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
msgstr ""
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
msgstr ""
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
msgstr ""
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
msgstr ""
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
msgstr ""
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
msgstr ""
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
msgstr ""
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
msgstr ""
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
msgstr ""
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
msgstr ""
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
msgstr ""
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
msgstr ""
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
msgstr ""
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
msgstr ""
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
msgstr ""
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
msgstr ""
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
msgstr ""
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
msgstr ""
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
msgstr ""
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
msgstr ""
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
msgstr ""
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr ""
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr ""
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
msgstr ""
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
msgstr ""
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
msgstr ""
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
msgstr ""
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
msgstr ""
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr ""
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
@@ -677,18 +646,26 @@ msgid "Edge Detect"
msgstr ""
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr ""
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
msgstr ""
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr ""
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr ""
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
msgstr ""
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
@@ -703,542 +680,714 @@ msgstr ""
msgid "Clouds"
msgstr ""
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr ""
-
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
-msgid "Add Noise"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
msgstr ""
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
msgstr ""
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
msgstr ""
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
+msgid "Add Noise"
msgstr ""
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
msgstr ""
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr ""
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "Độ nhiễu ngẫu nhiên"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
msgstr ""
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "nhãn1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "nhãn"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
msgstr ""
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
msgstr ""
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
msgstr ""
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
msgstr ""
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
msgstr ""
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
msgstr ""
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
msgstr ""
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
msgstr ""
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
msgstr ""
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
msgstr ""
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
msgstr ""
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
msgstr ""
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
msgstr ""
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr ""
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "Vẽ biên ngoài của hình"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr ""
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "Tô đầy hình"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr ""
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "Tô đầy và vẽ biên ngoài của hình"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr ""
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "Chọn theo chế độ thòng lọng"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr ""
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "Nhấp chuột và kéo để vẽ đường biên ngoài cho vùng được chọn."
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr ""
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "Bề rộng nét chổi vẽ"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr ""
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "Giảm cỡ chổi vẽ"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr ""
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "Tăng cỡ chổi vẽ"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr ""
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "Bút vẽ"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr ""
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "Thu phóng"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
msgstr ""
+"Nhấp chuột trái để phóng to, chuột phải để thu nhỏ. Nhấp chuột và kéo để "
+"phóng to phần được chọn."
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
msgstr ""
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "Chọn màu"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
msgstr ""
+"Nhấn phím trái chuột để chọn màu cơ sở; phím phải chuột để chọn màu thứ cấp."
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "Sau khi lựa chọn"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "Không đổi công cụ"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "Chuyển về công cụ trước đó"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "Chuyển về công cụ bút chì"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr ""
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "Bút chì"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr ""
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "Dịch chuyển các điểm ảnh được chọn"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
msgstr ""
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr ""
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "Ẩn"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr ""
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "Neo"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr ""
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "Tự động ẩn"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr ""
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "Neo được"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr ""
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "Trôi"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
+#: Pinta/Options.cs:486
+msgid "OptionName"
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "Theo phần trăm:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "Theo kích thước tuyệt đối:"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "Bề rộng:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
+msgstr "điểm ảnh"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "Độ cao:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr ""
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "Duy trì tỷ lệ hình thể"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "Neo :"
+
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "Kích cỡ hình mới "
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "Các thuộc tính lớp"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "Tên:"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "Có thể thấy được"
+
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "Độ đục:"
+
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "_File"
+
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "_Sửa"
+
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "_Xem"
+
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "Ả_nh"
+
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "_Lớp"
+
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "_Chỉnh"
+
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "_Hiệu ứng"
+
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "Cử_a sổ"
+
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "_Trợ giúp"
+
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "Công cụ"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "Tài liệu"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
+msgstr "Lớp"
+
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "Quá trình"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
msgstr ""
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
msgstr ""
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "Nếu bạn không lưu lại, tất cả những thay đổi sẽ vĩnh viễn mất."
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "Độ mờ đục của lớp"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "Đổi tên lớp"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "Ẩn lớp"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "Hiện lớp"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
msgstr ""
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
msgstr ""
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
msgstr ""
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "số tuyến được dùng để lên hình"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "Phiên bản"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "Giấy phép"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "Phát hành theo giấy phép MIT X11."
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "Bản quyền"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "bởi nhóm đóng góp cho Pinta"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "Tựa đề"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "Đường dẫn"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
msgstr ""
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "Những người đóng góp vào bản phát hành này"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "Những người đóng góp trước đây"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
msgstr ""
+"Launchpad Contributions:\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" Nguyen Quang Chien https://launchpad.net/~nguyenquangchien"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "Dịch bởi:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "Dựa trên chương trình Paint.NET:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "Dùng một số hình biểu tượng từ:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "Giới thiệu Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "Thông tin về phiên bản"
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
@@ -1414,3 +1563,13 @@ msgstr ""
#: RedEyeRemoveEffect dialog
msgid "Hint: For best results, first use selection tools to select each eye."
msgstr ""
+
+#~ msgid "%"
+#~ msgstr "%"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "Lưu những thay đổi trên hình \"{0}\" trước khi tạo hình mới?"
+
+#~ msgid "Continue without saving"
+#~ msgstr "Tiếp tục mà không lưu lại"
diff --git a/po/messages-zh_CN.po b/po/messages-zh_CN.po
index d096a07..c1f3fa9 100644
--- a/po/messages-zh_CN.po
+++ b/po/messages-zh_CN.po
@@ -7,689 +7,668 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-09-21 12:35+0000\n"
-"Last-Translator: Xhacker Liu <liu.dongyuan at gmail.com>\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-16 06:28+0000\n"
+"Last-Translator: 英华 <wantinghard at gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "关于"
-
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "画笔"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "窗口"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "文件(_F)"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "图层"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "编辑(_E)"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "复制"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "视图(_V)"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "调整画布大小"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "图像(_I)"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "工具"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "图层(_L)"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "快捷键"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "调整(_A)"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "一般混合"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "效果(_C)"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "覆盖"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "窗口(_W)"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "开启抗锯齿"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "帮助(_H)"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "关闭抗锯齿"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr ""
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "缩放图像"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "工具"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "完成像素"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "调色板"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "旋转180°"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "文档"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "水平翻转图片"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "图层"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "垂直翻转图片"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "历史"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "顺时针旋转90°"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "隐藏"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "逆时针旋转90°"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "可停靠"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "水平翻转图层"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "浮动"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "垂直翻转图层"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "自动隐藏"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "常规"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "停靠"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} 图片 ({1})"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "这个版本的贡献者"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "裁剪到选择部分"
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "过去的贡献者"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "调整大小..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Xhacker Liu https://launchpad.net/~xhacker"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "画布大小..."
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "翻译者:"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "水平翻转"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "基于 Paint.NET 的工作:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "垂直翻转"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "使用了一些图标:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "平面化"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "关于 Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "放大"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "版本信息"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "缩小"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "标题"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "缩放适应窗口"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "版本"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "缩放至选择部分"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "路径"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "实际大小"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "许可"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "工具栏"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "以 MIT X11 许可证发行"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "像素网格"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "版权"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "标尺"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "由 Pinta 贡献者"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "像素"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "渲染使用的线程数"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "英寸"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "缩放图像"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "厘米"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "按百分比:"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "全屏"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "按绝对尺寸:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "尺度单位"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "宽度:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "添加新图层"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "像素"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "删除图层"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "高度:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "复制图层"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "保持宽高比"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "向下合并图层"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "图层属性"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "从文件导入..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "名称:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "旋转 / 缩放"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "可见"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "升高图层"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "透明度:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "降低图层"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "调整画布大小"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr ""
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "锚点:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "打开图像文件"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "新建图像"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "从文件导入"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "新图像尺寸 "
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "保存全部"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "在新建之前保存修改到图像“{0}”吗?"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "关闭全部"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "如果您不保存,所有修改 将会永久丢失。"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta 网站"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "不保存并继续"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "报告一个错误"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "图层透明度"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "翻译这个应用程序"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "重命名图层"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "关于"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "隐藏图层"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "新建..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "显示图层"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "新截图..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "标签1"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "打开..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "标签"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "打开最近的"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "随机杂色"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "关闭"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "变换"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "保存"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "颜色拾取器"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "另存为..."
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr "左击设置主颜色,右击设置副颜色。"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "打印"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "选择后"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "退出"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "不要切换工具"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "新建"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "切换到上一个工具"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "打开"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "切换到铅笔工具"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "撤销"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "铅笔"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "重做"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "套索选择"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "剪切"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "点击拖动以绘制选取的轮廓"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "复制"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "缩放"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "粘贴"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr "左击放大,右击缩小。点击并拖动以缩放选区。"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "粘贴到新图层"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "笔刷宽度"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "粘贴到新图像"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "减小笔刷尺寸"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "擦除选区"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "增大笔刷尺寸"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "填充选区"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "边框"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "反向选择"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "填充"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "全选"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "填充和边框"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "取消选择"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "移动选择的像素"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "重置到默认"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "拖动选区移动选择的内容。"
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "设置颜色数量"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "移动"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "调色板"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "点击拖动以浏览图片。"
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "打开调色板文件"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr "左击画出任意形状,线条宽度 1 像素,使用主颜色,右击使用副颜色。"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "调色板文件 (*.txt, *.gpl)"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "椭圆形选择"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "全部文件"
-#: Pinta.Tools/EllipseSelectTool.cs:44
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr "点击拖动以绘制椭圆形选取。按住 shift 键限制为圆形。"
-
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "渐变"
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"无法打开调色板文件:{0}。\n"
+"请确定您在尝试打开一个合法的 GIMP 或 Paint.NET 调色板。"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr "点击拖动以绘制一个从主颜色到副颜色的渐变。右击逆转颜色。"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "错误"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "线性渐变"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "保存调色板文件"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr ""
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET 调色板 (*.txt)"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "菱形渐变"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP 调色板 (*.gpl)"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "辐射渐变"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "未保存的图片 {0}"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "锥形渐变"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "背景"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "颜色模式"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "新建图像"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "透明模式"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "打开图像"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "圆角矩形。"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "无法打开文件:{0}"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr "点击拖动以绘制一个圆角矩形(右击以使用副颜色)。按住 shift 键进行约束。"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "渲染效果"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "半径"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "海报效果"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "减小矩形的圆角半径"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "反色"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "增大矩形的圆角半径"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "色阶"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr "左击使用主颜色绘制,右击使用副颜色绘制。"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "黑白"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "矩形选择"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "自动调整色阶"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr "点击拖动以绘制一个矩形选区。按住 shift 键约束为正方形。"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "色相 / 饱和度"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "油漆桶"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "亮度 / 对比度"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr "左击用主颜色填充一个区域,右击使用副颜色填充。"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "复古褐色"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "仿制图章"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "曲线"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "移动选区"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "转换图"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "拖动选区以移动选区的边框。"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "自由形狀"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "发光度"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "填充模式"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "Copy text \t (256, 256)"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "连续"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "红色 "
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr ""
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "绿色"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "允许偏差量"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "蓝色 "
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "椭圆"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "重置"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr "点击拖动以绘制一个椭圆(右击使用副颜色)。按住 shift 键约束为圆形。"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "提示:右击以移除控制点。"
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
-msgstr "文字"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "色阶调整"
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr "左击放置光标,然后键入所需的文本。文本颜色为主颜色。"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "输入直方图"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "字体"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "输入"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr "粗体"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "输出"
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr "斜体"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "输出直方图"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr "下划线"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "自动"
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr "左对齐"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "红色"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
-msgstr "居中对齐"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "蓝色"
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr "右对齐"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr ""
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "魔术棒选择"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "铅笔画"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "点击选取相似颜色的区域。"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "艺术效果"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "矩形"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "失去焦点"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr "点击拖动以绘制一个矩形(右击使用副颜色)。按住 shift 键约束为正方形。"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "模糊"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "线条"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "凸起"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "左击使用主颜色绘制,右击使用副颜色。"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "扭曲"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "重新着色"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "曼德勃罗分形"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "左击用主颜色取代副颜色。"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "渲染"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "橡皮擦"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "中值"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "点击拖动以擦除图像的一部分。"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "噪声"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "像素化"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "扭曲"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "去除红眼"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "锐化"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "照片"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "运动模糊"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "油画"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "模糊"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "高斯模糊"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "水墨素描"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "发光"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "艺术效果"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "软化肖像"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "辐射模糊"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "瓷砖效果"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "失去焦点"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "去除红眼"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "磨砂玻璃"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "边缘探测"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
msgstr "风格化"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "磨砂玻璃"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "朱莉娅分形"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "油画"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "运动模糊"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "浮雕"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "水墨素描"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
@@ -703,543 +682,712 @@ msgstr "极性反转"
msgid "Clouds"
msgstr "云团"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "渲染"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "碎片"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "发光"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "减少噪声"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "辐射模糊"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "扭曲"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "添加噪声"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "噪声"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "碎片"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "锐化"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "铅笔画"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "醒目"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "轮廓"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "高斯模糊"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "随机杂色"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "瓷砖效果"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "变换"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr ""
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "标签1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "浮雕"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "标签"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "曼德勃罗分形"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "选取主颜色"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "凸起"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "选取副颜色"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "扭曲"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "选取调色板颜色"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "软化肖像"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "移动"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "减少噪声"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "点击拖动以浏览图片。"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "朱莉娅分形"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "文字"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "中值"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr "左击放置光标,然后键入所需的文本。文本颜色为主颜色。"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "曲线"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "字体"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "色阶"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "粗体"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "自动调整色阶"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "斜体"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "反色"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "下划线"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "海报效果"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr "左对齐"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "黑白"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr "居中对齐"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "色相 / 饱和度"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr "右对齐"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "复古褐色"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "矩形"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "亮度 / 对比度"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr "点击拖动以绘制一个矩形(右击使用副颜色)。按住 shift 键约束为正方形。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "色阶调整"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "自由形狀"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "输入直方图"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr "左击使用主颜色绘制,右击使用副颜色绘制。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "输入"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "填充形式"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "输出"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "边框"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "输出直方图"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "填充"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "自动"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "填充和边框"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "重置"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "填充模式"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "红色"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "连续"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "绿色"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr ""
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "蓝色"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "允许偏差量"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr ""
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "线条"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "转换图"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "左击使用主颜色绘制,右击使用副颜色。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "移动选区"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "发光度"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "拖动选区以移动选区的边框。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "Copy text \t (256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "矩形选择"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "红色 "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr "点击拖动以绘制一个矩形选区。按住 shift 键约束为正方形。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "蓝色 "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "魔术棒选择"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr ""
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "点击选取相似颜色的区域。"
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "添加新图层"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "椭圆形选择"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "删除图层"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr "点击拖动以绘制椭圆形选取。按住 shift 键限制为圆形。"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "复制图层"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "套索选择"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "向下合并图层"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "点击拖动以绘制选取的轮廓"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "从文件导入..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "油漆桶"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "水平翻转"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr "左击用主颜色填充一个区域,右击使用副颜色填充。"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "垂直翻转"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "渐变"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "旋转 / 缩放"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr "点击拖动以绘制一个从主颜色到副颜色的渐变。右击逆转颜色。"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "升高图层"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "线性渐变"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "降低图层"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr ""
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "打开图像文件"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "菱形渐变"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "从文件导入"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "辐射渐变"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "新建..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "锥形渐变"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "打开..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "模式"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "打开最近的"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "颜色模式"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "关闭"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "透明模式"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "保存"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "笔刷宽度"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "另存为..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "减小笔刷尺寸"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "打印"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "增大笔刷尺寸"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "退出"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "画笔"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "新建"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "类型"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "打开"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "重新着色"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "背景"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "左击用主颜色取代副颜色。"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "打开图像"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "普通"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "无法打开文件:{0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "方形"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "错误"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "方块"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "在打开新的图像前将修改保存到图像“{0}”?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "泼洒"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "图像文件"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "网格"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "全部文件"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "椭圆"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "保存图像文件"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr "点击拖动以绘制一个椭圆(右击使用副颜色)。按住 shift 键约束为圆形。"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} 图片 ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "仿制图章"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster 图像 (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr ""
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "在关闭前将修改保存到图像“{0}”?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "缩放"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "不保存并关闭"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr "左击放大,右击缩小。点击并拖动以缩放选区。"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "裁剪到选择部分"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "圆角矩形。"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "调整大小..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr "点击拖动以绘制一个圆角矩形(右击以使用副颜色)。按住 shift 键进行约束。"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "画布大小..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "半径"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "顺时针旋转90°"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "减小矩形的圆角半径"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "逆时针旋转90°"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "增大矩形的圆角半径"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "旋转180°"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "颜色拾取器"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "平面化"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr "左击设置主颜色,右击设置副颜色。"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "撤销"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "选择后"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "重做"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "不要切换工具"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "剪切"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "切换到上一个工具"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "复制"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "切换到铅笔工具"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "粘贴"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "铅笔"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "粘贴到新图层"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "橡皮擦"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "粘贴到新图像"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "点击拖动以擦除图像的一部分。"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "擦除选区"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr "左击画出任意形状,线条宽度 1 像素,使用主颜色,右击使用副颜色。"
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "填充选区"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "移动选择的像素"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "反向选择"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "拖动选区移动选择的内容。"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "全选"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "隐藏"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "取消选择"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "停靠"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "放大"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "自动隐藏"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "放大"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "可停靠"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "缩放适应窗口"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "浮动"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "缩放至选择部分"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr ""
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "实际大小"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "按百分比:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "像素网格"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "按绝对尺寸:"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "标尺"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "宽度:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
msgstr "像素"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "英寸"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "高度:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "厘米"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "保持宽高比"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "全屏"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "锚点:"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "窗口"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "新图像尺寸 "
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta 网站"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "图层属性"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "报告一个错误"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "名称:"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "翻译这个应用程序"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "可见"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "常规"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "透明度:"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "工具"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "快捷键"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "文件(_F)"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "抗锯齿"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "编辑(_E)"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "正常混合 / 覆盖混合"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "视图(_V)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "水平翻转图片"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "图像(_I)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "垂直翻转图片"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "图层(_L)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "水平翻转图层"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "调整(_A)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "垂直翻转图层"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "效果(_C)"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "完成像素"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "窗口(_W)"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "渲染效果"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "工具窗口"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "复制"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "帮助(_H)"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "工具"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "文档"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
msgstr "图层"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "历史"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "屏幕截图"
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "截图前延迟(秒):"
+
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "在关闭前将修改保存到图像“{0}”?"
+
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "如果您不保存,所有修改 将会永久丢失。"
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "不保存并关闭"
+
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "调整调色板大小"
+
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "调色板大小:"
+
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "图层透明度"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "重命名图层"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "隐藏图层"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "显示图层"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "图像文件"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr ""
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "剪贴板不包含图像"
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "保存图像文件"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta 不支持储存这种类型的图片。"
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "名为“{0}”的文件已经存在。您想要覆盖吗?"
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "文件在“{1}”中已存在。替换将会覆盖它的内容。"
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "渲染使用的线程数"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "版本"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "许可"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "以 MIT X11 许可证发行"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "版权"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "由 Pinta 贡献者"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "标题"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "路径"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG 质量"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "质量: "
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "这个版本的贡献者"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "过去的贡献者"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Xhacker Liu https://launchpad.net/~xhacker\n"
+" 英华 https://launchpad.net/~wantinghard"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "翻译者:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "基于 Paint.NET 的工作:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "使用了一些图标:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "关于 Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "版本信息"
+
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
#: PolarInversionEffect dialog
@@ -1418,9 +1566,29 @@ msgstr "提示:为了获得最好的效果,先使用选择工具选择每只
#~ msgid "%"
#~ msgstr "%"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "在新建之前保存修改到图像“{0}”吗?"
+
+#~ msgid "Fill mode"
+#~ msgstr "填充模式"
+
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "提示:右击移除控制点。"
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "在打开新的图像前将修改保存到图像“{0}”?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster 图像 (*.ora)"
+
+#~ msgid "Continue without saving"
+#~ msgstr "不保存并继续"
+
+#~ msgid "Antialiasing"
+#~ msgstr "抗锯齿"
+
#~ msgid "X :"
#~ msgstr "X :"
@@ -1429,3 +1597,12 @@ msgstr "提示:为了获得最好的效果,先使用选择工具选择每只
#~ msgid "Show Pad"
#~ msgstr "显示面板"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "正常混合 / 覆盖混合"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages-zh_TW.po b/po/messages-zh_TW.po
index 1417a6f..6f38ecc 100644
--- a/po/messages-zh_TW.po
+++ b/po/messages-zh_TW.po
@@ -7,691 +7,668 @@ msgid ""
msgstr ""
"Project-Id-Version: pinta\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2010-06-20 21:05-0500\n"
-"PO-Revision-Date: 2010-10-24 07:47+0000\n"
+"POT-Creation-Date: 2010-10-31 12:19-0500\n"
+"PO-Revision-Date: 2010-12-11 14:16+0000\n"
"Last-Translator: taijuin lee <Unknown>\n"
"Language-Team: Chinese (Traditional) <zh_TW at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-10-26 20:06+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-01-10 23:16+0000\n"
+"X-Generator: Launchpad (build 12161)\n"
-#: Pinta/MainWindow.cs:103 Pinta.Core/Actions/HelpActions.cs:53
-msgid "About"
-msgstr "關於"
+#: Pinta.Core/Classes/DocumentWorkspace.cs:160
+#: Pinta.Core/Classes/DocumentWorkspace.cs:181
+#: Pinta.Core/Actions/ViewActions.cs:200
+msgid "Window"
+msgstr "視窗"
-#: Pinta/MainWindow.cs:214 Pinta.Tools/PaintBrushTool.cs:45
-msgid "Paintbrush"
-msgstr "畫筆"
+#: Pinta.Core/Classes/Document.cs:299
+msgid "Layer"
+msgstr "圖層"
-#: Pinta/MainWindow.cs:259
-msgid "_File"
-msgstr "檔案(_F)"
+#: Pinta.Core/Classes/Document.cs:367
+msgid "copy"
+msgstr "複製"
-#: Pinta/MainWindow.cs:260
-msgid "_Edit"
-msgstr "編輯(_E)"
+#: Pinta.Core/Classes/Document.cs:589
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
+msgid "Resize Canvas"
+msgstr "調整畫布尺寸"
-#: Pinta/MainWindow.cs:261
-msgid "_View"
-msgstr "檢視(_V)"
+#: Pinta.Core/Classes/BaseTool.cs:146
+msgid "Tool"
+msgstr "工具"
-#: Pinta/MainWindow.cs:262
-msgid "_Image"
-msgstr "圖片(_I)"
+#: Pinta.Core/Classes/BaseTool.cs:204
+msgid "Shortcut key"
+msgstr "快速鍵"
-#: Pinta/MainWindow.cs:263
-msgid "_Layers"
-msgstr "圖層(_L)"
+#: Pinta.Core/Classes/BaseTool.cs:227
+msgid "Normal Blending"
+msgstr "一般混合"
-#: Pinta/MainWindow.cs:264
-msgid "_Adjustments"
-msgstr "調整(_A)"
+#: Pinta.Core/Classes/BaseTool.cs:228
+msgid "Overwrite"
+msgstr "覆蓋"
-#: Pinta/MainWindow.cs:265
-msgid "Effe_cts"
-msgstr "效果(_C)"
+#: Pinta.Core/Classes/BaseTool.cs:242
+msgid "Antialiasing On"
+msgstr "反鋸齒開啟"
-#: Pinta/MainWindow.cs:266
-msgid "_Window"
-msgstr "視窗(_W)"
+#: Pinta.Core/Classes/BaseTool.cs:243
+msgid "Antialiasing Off"
+msgstr "反鋸齒關閉"
-#: Pinta/MainWindow.cs:267
-msgid "_Help"
-msgstr "說明(_H)"
+#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:43
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
+msgid "Resize Image"
+msgstr "縮放圖片"
-#: Pinta/MainWindow.cs:272
-msgid "Tool Windows"
-msgstr "工具視窗"
+#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
+msgid "Finish Pixels"
+msgstr "完成像素"
-#: Pinta/MainWindow.cs:345
-msgid "Tools"
-msgstr "工具"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
+#: Pinta.Core/Actions/ImageActions.cs:65
+msgid "Rotate 180°"
+msgstr "旋轉 180°"
-#: Pinta/MainWindow.cs:355
-msgid "Palette"
-msgstr "調色盤"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
+msgid "Flip Image Horizontal"
+msgstr "水平翻轉圖片"
-#: Pinta/MainWindow.cs:368
-msgid "Documents"
-msgstr "文件"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
+msgid "Flip Image Vertical"
+msgstr "垂直翻轉圖片"
-#: Pinta/MainWindow.cs:382
-msgid "Layers"
-msgstr "圖層"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
+#: Pinta.Core/Actions/ImageActions.cs:63
+msgid "Rotate 90° Clockwise"
+msgstr "順時針旋轉90°"
-#: Pinta/MainWindow.cs:398
-msgid "History"
-msgstr "復原紀錄"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:64
+msgid "Rotate 90° Counter-Clockwise"
+msgstr "逆時針旋轉90°"
-#: Pinta/DockLibrary/DockItem.cs:477 Pinta/DockLibrary/DockItemContainer.cs:90
-msgid "Hide"
-msgstr "隱藏"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
+msgid "Flip Layer Horizontal"
+msgstr "水平翻轉圖層"
-#: Pinta/DockLibrary/DockItem.cs:485
-msgid "Dockable"
-msgstr "停駐式"
+#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
+msgid "Flip Layer Vertical"
+msgstr "垂直翻轉圖層"
-#: Pinta/DockLibrary/DockItem.cs:493
-msgid "Floating"
-msgstr "浮動式"
+#: Pinta.Core/Effects/BaseEffect.cs:42
+msgid "General"
+msgstr "一般的"
-#: Pinta/DockLibrary/DockItem.cs:502
-#: Pinta/DockLibrary/DockItemContainer.cs:194
-msgid "Auto Hide"
-msgstr "自動隱藏"
+#: Pinta.Core/ImageFormats/FormatDescriptor.cs:67
+#, csharp-format
+msgid "{0} image ({1})"
+msgstr "{0} 圖片 ({1})"
-#: Pinta/DockLibrary/DockItemContainer.cs:190
-msgid "Dock"
-msgstr "停駐"
+#: Pinta.Core/Actions/ImageActions.cs:58
+#: Pinta.Core/Actions/ImageActions.cs:181
+msgid "Crop to Selection"
+msgstr "剪裁出選取區域"
-#: Pinta/Dialogs/AboutDialog.cs:97
-msgid "Contributors to this Release"
-msgstr "本軟體的貢獻人員"
+#: Pinta.Core/Actions/ImageActions.cs:59
+msgid "Resize..."
+msgstr "縮放圖片..."
-#: Pinta/Dialogs/AboutDialog.cs:107
-msgid "Previous Contributors"
-msgstr "過去版本的貢獻人員"
+#: Pinta.Core/Actions/ImageActions.cs:60
+msgid "Canvas Size..."
+msgstr "調整畫布尺寸..."
-#: Pinta/Dialogs/AboutDialog.cs:116
-msgid "translator-credits"
-msgstr ""
-"Launchpad Contributions:\n"
-" Eddie https://launchpad.net/~zx4636313\n"
-" Jonathan Pobst https://launchpad.net/~jpobst\n"
-" taijuin lee https://launchpad.net/~taijuin"
+#: Pinta.Core/Actions/ImageActions.cs:61 Pinta.Core/Actions/LayerActions.cs:69
+msgid "Flip Horizontal"
+msgstr "水平翻轉"
-#: Pinta/Dialogs/AboutDialog.cs:119
-msgid "Translated by:"
-msgstr "翻譯者:"
+#: Pinta.Core/Actions/ImageActions.cs:62 Pinta.Core/Actions/LayerActions.cs:70
+msgid "Flip Vertical"
+msgstr "垂直翻轉"
-#: Pinta/Dialogs/AboutDialog.cs:126
-msgid "Based on the work of Paint.NET:"
-msgstr "基於Paint.NET專案:"
+#: Pinta.Core/Actions/ImageActions.cs:66
+#: Pinta.Core/Actions/ImageActions.cs:127
+msgid "Flatten"
+msgstr "影像平面化"
-#: Pinta/Dialogs/AboutDialog.cs:133
-msgid "Using some icons from:"
-msgstr "由此取用一些圖示:"
+#: Pinta.Core/Actions/ViewActions.cs:62
+msgid "Zoom In"
+msgstr "放大"
-#: Pinta/Dialogs/AboutDialog.cs:245
-msgid "About Pinta"
-msgstr "關於 Pinta"
+#: Pinta.Core/Actions/ViewActions.cs:63
+msgid "Zoom Out"
+msgstr "縮小"
-#: Pinta/Dialogs/AboutDialog.cs:263
-msgid "Version Info"
-msgstr "版本信息"
+#: Pinta.Core/Actions/ViewActions.cs:64
+msgid "Zoom to Window"
+msgstr "符合視窗大小"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:44
-msgid "Title"
-msgstr "標題"
+#: Pinta.Core/Actions/ViewActions.cs:65
+msgid "Zoom to Selection"
+msgstr "放大成自選區域"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:50
-#: Pinta/Dialogs/AboutPintaTabPage.cs:41
-msgid "Version"
-msgstr "版本"
+#: Pinta.Core/Actions/ViewActions.cs:66
+msgid "Actual Size"
+msgstr "實際大小"
-#: Pinta/Dialogs/VersionInformationTabPage.cs:53
-msgid "Path"
-msgstr "路徑"
+#: Pinta.Core/Actions/ViewActions.cs:67
+msgid "Toolbar"
+msgstr "工具列"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "License"
-msgstr "授權許可"
+#: Pinta.Core/Actions/ViewActions.cs:68
+msgid "Pixel Grid"
+msgstr "像素格線"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:50
-msgid "Released under the MIT X11 License."
-msgstr "以 MIT X11 許可證發行"
+#: Pinta.Core/Actions/ViewActions.cs:69
+msgid "Rulers"
+msgstr "尺規"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "Copyright"
-msgstr "版權所有"
+#: Pinta.Core/Actions/ViewActions.cs:70
+msgid "Pixels"
+msgstr "像素"
-#: Pinta/Dialogs/AboutPintaTabPage.cs:57
-msgid "by Pinta contributors"
-msgstr "屬於開發Pinta程式的貢獻者"
+#: Pinta.Core/Actions/ViewActions.cs:71
+msgid "Inches"
+msgstr "英吋"
-#: Pinta/Main.cs:67
-msgid "number of threads to use for rendering"
-msgstr "用於渲染的線程數"
+#: Pinta.Core/Actions/ViewActions.cs:72
+msgid "Centimeters"
+msgstr "公分"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:56
-#: Pinta.Core/HistoryItems/ResizeHistoryItem.cs:44
-msgid "Resize Image"
-msgstr "縮放圖片"
+#: Pinta.Core/Actions/ViewActions.cs:73
+msgid "Fullscreen"
+msgstr "全螢幕"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
-msgid "By percentage:"
-msgstr "按百分比:"
+#: Pinta.Core/Actions/ViewActions.cs:111
+msgid "Ruler Units"
+msgstr "尺規單位"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
-msgid "By absolute size:"
-msgstr "按絕對大小:"
-
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
-msgid "Width:"
-msgstr "寬度:"
+#: Pinta.Core/Actions/LayerActions.cs:64
+#: Pinta.Core/Actions/LayerActions.cs:283
+msgid "Add New Layer"
+msgstr "新增圖層"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
-msgid "pixels"
-msgstr "像素"
+#: Pinta.Core/Actions/LayerActions.cs:65
+#: Pinta.Core/Actions/LayerActions.cs:266
+msgid "Delete Layer"
+msgstr "刪除圖層"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
-msgid "Height:"
-msgstr "高度:"
+#: Pinta.Core/Actions/LayerActions.cs:66
+#: Pinta.Core/Actions/LayerActions.cs:257
+msgid "Duplicate Layer"
+msgstr "複製圖層"
-#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
-msgid "Maintain aspect ratio"
-msgstr "保持長寬比"
+#: Pinta.Core/Actions/LayerActions.cs:67
+#: Pinta.Core/Actions/LayerActions.cs:235
+msgid "Merge Layer Down"
+msgstr "將目前所選圖層及它下一層圖層合併"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:193
-#: Pinta.Core/Actions/LayerActions.cs:74
-msgid "Layer Properties"
-msgstr "圖層屬性"
+#: Pinta.Core/Actions/LayerActions.cs:68
+msgid "Import from File..."
+msgstr "匯入圖片檔..."
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
-msgid "Name:"
-msgstr "名稱:"
+#: Pinta.Core/Actions/LayerActions.cs:71
+msgid "Rotate / Zoom"
+msgstr "旋轉 /縮放"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
-msgid "Visible"
-msgstr "顯示的"
+#: Pinta.Core/Actions/LayerActions.cs:72
+#: Pinta.Core/Actions/LayerActions.cs:213
+msgid "Move Layer Up"
+msgstr "圖層上移"
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
-msgid "Opacity:"
-msgstr "不透明度:"
+#: Pinta.Core/Actions/LayerActions.cs:73
+#: Pinta.Core/Actions/LayerActions.cs:224
+msgid "Move Layer Down"
+msgstr "圖層下移"
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:86
-#: Pinta.Core/Managers/WorkspaceManager.cs:218
-msgid "Resize Canvas"
-msgstr "調整畫布尺寸"
+#: Pinta.Core/Actions/LayerActions.cs:74
+msgid "Layer Properties..."
+msgstr "圖層屬性..."
-#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
-msgid "Anchor:"
-msgstr "定位點:"
+#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
+msgid "Open Image File"
+msgstr "開啟圖片檔"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
-#: Pinta.Core/Actions/FileActions.cs:133
-msgid "New Image"
-msgstr "新增圖片"
+#: Pinta.Core/Actions/LayerActions.cs:179
+msgid "Import From File"
+msgstr "匯入圖片檔"
-#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
-msgid "New Image Size "
-msgstr "新的圖片尺寸 "
+#: Pinta.Core/Actions/WindowActions.cs:45
+msgid "Save All"
+msgstr "儲存所有圖片"
-#: Pinta/DialogHandlers.cs:57
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before creating a new one?"
-msgstr "在開啟新檔案前,儲存變更到圖片檔 \"{0}\" 中?"
+#: Pinta.Core/Actions/WindowActions.cs:46
+msgid "Close All"
+msgstr "關閉所有圖片"
-#: Pinta/DialogHandlers.cs:58 Pinta.Core/Actions/FileActions.cs:208
-#: Pinta.Core/Actions/FileActions.cs:249 Pinta.Core/Actions/FileActions.cs:393
-msgid "If you don't save, all changes will be permanently lost."
-msgstr "如果不儲存,所有的變更將會永久地遺失。"
+#: Pinta.Core/Actions/HelpActions.cs:50
+msgid "Pinta Website"
+msgstr "Pinta 的官方網站"
-#: Pinta/DialogHandlers.cs:67 Pinta.Core/Actions/FileActions.cs:216
-#: Pinta.Core/Actions/FileActions.cs:258
-msgid "Continue without saving"
-msgstr "繼續而不儲存"
+#: Pinta.Core/Actions/HelpActions.cs:51
+msgid "File a Bug"
+msgstr "瑕疵報告"
-#: Pinta/DialogHandlers.cs:178
-msgid "Layer Opacity"
-msgstr "圖層不透明度"
+#: Pinta.Core/Actions/HelpActions.cs:52
+msgid "Translate This Application"
+msgstr "翻譯本軟體"
-#: Pinta/DialogHandlers.cs:183
-msgid "Rename Layer"
-msgstr "更改圖層名稱"
+#: Pinta.Core/Actions/HelpActions.cs:53 Pinta/MainWindow.cs:141
+msgid "About"
+msgstr "關於"
-#: Pinta/DialogHandlers.cs:188
-msgid "Hide Layer"
-msgstr "隱藏圖層"
+#: Pinta.Core/Actions/FileActions.cs:54
+msgid "New..."
+msgstr "新增..."
-#: Pinta/DialogHandlers.cs:188
-msgid "Show Layer"
-msgstr "顯示圖層"
+#: Pinta.Core/Actions/FileActions.cs:55
+msgid "New Screenshot..."
+msgstr "新增螢幕截圖 ..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
-msgid "label1"
-msgstr "標籤1"
+#: Pinta.Core/Actions/FileActions.cs:56 Pinta.Core/Actions/EditActions.cs:78
+msgid "Open..."
+msgstr "開啟..."
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
-msgid "label"
-msgstr "標籤"
+#: Pinta.Core/Actions/FileActions.cs:57
+msgid "Open Recent"
+msgstr "最近開啟的檔案"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
-msgid "Random Noise"
-msgstr "不規則雜訊"
+#: Pinta.Core/Actions/FileActions.cs:64
+msgid "Close"
+msgstr "關閉"
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
-msgid "Reseed"
-msgstr "變換"
+#: Pinta.Core/Actions/FileActions.cs:65
+msgid "Save"
+msgstr "儲存"
-#: Pinta.Tools/ColorPickerTool.cs:44
-msgid "Color Picker"
-msgstr "顏色拾取器"
+#: Pinta.Core/Actions/FileActions.cs:66 Pinta.Core/Actions/EditActions.cs:79
+msgid "Save As..."
+msgstr "另存新檔..."
-#: Pinta.Tools/ColorPickerTool.cs:50
-msgid "Left click to set primary color. Right click to set secondary color."
-msgstr "按滑鼠左鍵設置主要顏色,按滑鼠右鍵設置第二顏色。"
+#: Pinta.Core/Actions/FileActions.cs:67
+msgid "Print"
+msgstr "列印"
-#: Pinta.Tools/ColorPickerTool.cs:62
-msgid "After select"
-msgstr "選色之後"
+#: Pinta.Core/Actions/FileActions.cs:68
+msgid "Quit"
+msgstr "結束"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Do not switch tool"
-msgstr "不要切換工具"
+#: Pinta.Core/Actions/FileActions.cs:70
+msgid "New"
+msgstr "新增"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to previous tool"
-msgstr "切換到上一個工具"
+#: Pinta.Core/Actions/FileActions.cs:71
+msgid "Open"
+msgstr "開啟"
-#: Pinta.Tools/ColorPickerTool.cs:68
-msgid "Switch to Pencil tool"
-msgstr "切換到鉛筆工具"
+#: Pinta.Core/Actions/EditActions.cs:65
+msgid "Undo"
+msgstr "復原"
-#: Pinta.Tools/ColorPickerTool.cs:116 Pinta.Tools/PencilTool.cs:48
-msgid "Pencil"
-msgstr "鉛筆"
+#: Pinta.Core/Actions/EditActions.cs:66
+msgid "Redo"
+msgstr "取消復原"
-#: Pinta.Tools/LassoSelectTool.cs:45
-msgid "Lasso Select"
-msgstr "自由選取工具"
+#: Pinta.Core/Actions/EditActions.cs:67
+msgid "Cut"
+msgstr "剪下"
-#: Pinta.Tools/LassoSelectTool.cs:47
-msgid "Click and drag to draw the outline for a selection area."
-msgstr "按住滑鼠並拖動畫出選取區域的邊框"
+#: Pinta.Core/Actions/EditActions.cs:68
+msgid "Copy"
+msgstr "複製"
-#: Pinta.Tools/ZoomTool.cs:49
-#: MandelbrotFractalEffect dialog
-#: FragmentEffect dialog
-msgid "Zoom"
-msgstr "縮放"
+#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:251
+msgid "Paste"
+msgstr "貼上"
-#: Pinta.Tools/ZoomTool.cs:55
-msgid ""
-"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
-"selection."
-msgstr "按滑鼠左鍵以放大,按滑鼠右鍵以縮小。另外,可以用滑鼠左鍵選取一個區域來放大。"
+#: Pinta.Core/Actions/EditActions.cs:70 Pinta/DialogHandlers.cs:204
+msgid "Paste Into New Layer"
+msgstr "貼到新圖層"
-#: Pinta.Tools/ShapeTool.cs:91 Pinta.Tools/BaseBrushTool.cs:68
-msgid "Brush width"
-msgstr "筆刷寬度"
+#: Pinta.Core/Actions/EditActions.cs:71
+msgid "Paste Into New Image"
+msgstr "貼到新圖片"
-#: Pinta.Tools/ShapeTool.cs:96 Pinta.Tools/BaseBrushTool.cs:73
-msgid "Decrease brush size"
-msgstr "減小筆刷大小"
+#: Pinta.Core/Actions/EditActions.cs:72 Pinta.Core/Actions/EditActions.cs:199
+#: Pinta.Core/Actions/EditActions.cs:296
+msgid "Erase Selection"
+msgstr "清除選取區域"
-#: Pinta.Tools/ShapeTool.cs:110 Pinta.Tools/BaseBrushTool.cs:87
-msgid "Increase brush size"
-msgstr "增大筆刷"
+#: Pinta.Core/Actions/EditActions.cs:73 Pinta.Core/Actions/EditActions.cs:163
+msgid "Fill Selection"
+msgstr "填充選取區域"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Outline Shape"
-msgstr "邊框"
+#: Pinta.Core/Actions/EditActions.cs:74
+msgid "Invert Selection"
+msgstr "反向選取"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill Shape"
-msgstr "填充"
+#: Pinta.Core/Actions/EditActions.cs:75 Pinta.Core/Actions/EditActions.cs:172
+msgid "Select All"
+msgstr "全選"
-#: Pinta.Tools/ShapeTool.cs:133 Pinta.Tools/FreeformShapeTool.cs:82
-msgid "Fill and Outline Shape"
-msgstr "填充和邊框"
+#: Pinta.Core/Actions/EditActions.cs:76 Pinta.Core/Actions/EditActions.cs:208
+msgid "Deselect"
+msgstr "取消選取"
-#: Pinta.Tools/MoveSelectedTool.cs:42
-msgid "Move Selected Pixels"
-msgstr "移動選取的像素"
+#: Pinta.Core/Actions/EditActions.cs:80
+msgid "Reset to Default"
+msgstr "重置為預設"
-#: Pinta.Tools/MoveSelectedTool.cs:48
-msgid "Drag the selection to move selected content."
-msgstr "拖動選取區域,以移動選定內容。"
+#: Pinta.Core/Actions/EditActions.cs:81
+msgid "Set Number of Colors"
+msgstr "設置顏色數量"
-#: Pinta.Tools/PanTool.cs:38
-msgid "Pan"
-msgstr "平移"
+#: Pinta.Core/Actions/EditActions.cs:105 Pinta/MainWindow.cs:562
+#: Pinta/MainWindow.cs:569
+msgid "Palette"
+msgstr "調色盤"
-#: Pinta.Tools/PanTool.cs:44
-msgid "Click and drag to navigate image."
-msgstr "按住滑鼠並拖動以瀏覽圖片"
+#: Pinta.Core/Actions/EditActions.cs:313
+msgid "Open Palette File"
+msgstr "開啟調色盤檔案"
-#: Pinta.Tools/PencilTool.cs:50
-msgid ""
-"Left click to draw freeform, one-pixel wide lines with the primary color, "
-"right click to use the secondary color."
-msgstr "按滑鼠左鍵畫出任意形狀,線條寬為1像素而顏色為主要顏色,按滑鼠右鍵使用第二顏色。"
+#: Pinta.Core/Actions/EditActions.cs:320
+msgid "Palette files (*.txt, *.gpl)"
+msgstr "調色盤檔案 (*.txt, *.gpl)"
-#: Pinta.Tools/EllipseSelectTool.cs:38
-msgid "Ellipse Select"
-msgstr "橢圓形選取工具"
+#: Pinta.Core/Actions/EditActions.cs:324 Pinta/DialogHandlers.cs:408
+msgid "All files"
+msgstr "所有檔案"
-#: Pinta.Tools/EllipseSelectTool.cs:44
+#: Pinta.Core/Actions/EditActions.cs:340
+#, csharp-format
msgid ""
-"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
-"circle."
-msgstr "按住滑鼠並拖動畫出一個橢圓選取區域。另外,按住\"Shift\"鍵以限制畫出來的是圓形。"
-
-#: Pinta.Tools/GradientTool.cs:52
-msgid "Gradient"
-msgstr "漸層"
+"Could not open palette file: {0}.\n"
+"Please verify that you are trying to open a valid GIMP or Paint.NET palette."
+msgstr ""
+"無法開啟調色盤檔案: {0}。\n"
+"請驗證您正嘗試開啟的是有效的 GIMP 或 Paint.NET 調色盤。"
-#: Pinta.Tools/GradientTool.cs:60
-msgid ""
-"Click and drag to draw gradient from primary to secondary color. Right "
-"click to reverse."
-msgstr "按住滑鼠左鍵並拖動畫出從主要顏色到第二顏色的漸層顏色,按住滑鼠右鍵則相反。"
+#: Pinta.Core/Actions/EditActions.cs:341
+#: Pinta.Core/Managers/WorkspaceManager.cs:184 Pinta/DialogHandlers.cs:576
+msgid "Error"
+msgstr "錯誤"
-#: Pinta.Tools/GradientTool.cs:158
-msgid "Linear Gradient"
-msgstr "線性漸變填充"
+#: Pinta.Core/Actions/EditActions.cs:353
+msgid "Save Palette File"
+msgstr "儲存調色盤檔案"
-#: Pinta.Tools/GradientTool.cs:166
-msgid "Linear Reflected Gradient"
-msgstr "雙線性漸變填充"
+#: Pinta.Core/Actions/EditActions.cs:359
+msgid "Paint.NET palette (*.txt)"
+msgstr "Paint.NET 調色盤 (*.txt)"
-#: Pinta.Tools/GradientTool.cs:173
-msgid "Linear Diamond Gradient"
-msgstr "鑽石形漸變填充"
+#: Pinta.Core/Actions/EditActions.cs:364
+msgid "GIMP palette (*.gpl)"
+msgstr "GIMP 調色盤 (*.gpl)"
-#: Pinta.Tools/GradientTool.cs:180
-msgid "Radial Gradient"
-msgstr "放射漸變填充"
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr "未儲存的圖片{0}"
-#: Pinta.Tools/GradientTool.cs:187
-msgid "Conical Gradient"
-msgstr "圓錐形漸變填充"
+#: Pinta.Core/Managers/WorkspaceManager.cs:151
+msgid "Background"
+msgstr "背景"
-#: Pinta.Tools/GradientTool.cs:198
-msgid "Color Mode"
-msgstr "色彩模式"
+#: Pinta.Core/Managers/WorkspaceManager.cs:158
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:48
+msgid "New Image"
+msgstr "新增圖片"
-#: Pinta.Tools/GradientTool.cs:206
-msgid "Transparency Mode"
-msgstr "透明模式"
+#: Pinta.Core/Managers/WorkspaceManager.cs:176
+msgid "Open Image"
+msgstr "開啟圖片"
-#: Pinta.Tools/RoundedRectangleTool.cs:43
-msgid "Rounded Rectangle"
-msgstr "圓角矩形"
+#: Pinta.Core/Managers/WorkspaceManager.cs:183
+#, csharp-format
+msgid "Could not open file: {0}"
+msgstr "不能開啟檔案:{0}"
-#: Pinta.Tools/RoundedRectangleTool.cs:49
-msgid ""
-"Click and drag to draw a rounded rectangle (right click for secondary "
-"color). Hold shift to constrain."
-msgstr "按住滑鼠左鍵並拖動畫出一圓角矩形(若用滑鼠右鍵則使用的是第二顏色)。按住\"Shift\"鍵以限制畫出來的是正圓角矩形。"
+#: Pinta.Core/Managers/LivePreviewManager.cs:220
+msgid "Rendering Effect"
+msgstr "渲染效果"
-#: Pinta.Tools/RoundedRectangleTool.cs:77
-#: UnfocusEffect dialog
-#: MedianEffect dialog
-#: ReduceNoiseEffect dialog
-#: GlowEffect dialog
-#: FragmentEffect dialog
-msgid "Radius"
-msgstr "半徑"
+#: Pinta.Effects/Adjustments/PosterizeEffect.cs:26
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
+msgid "Posterize"
+msgstr "色調分離"
-#: Pinta.Tools/RoundedRectangleTool.cs:82
-msgid "Decrease rectangle's corner radius"
-msgstr "減少矩形的圓角半徑"
+#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
+msgid "Invert Colors"
+msgstr "反轉顏色和亮度"
-#: Pinta.Tools/RoundedRectangleTool.cs:96
-msgid "Increase rectangle's corner radius"
-msgstr "增加矩形的圓角半徑"
+#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
+msgid "Levels"
+msgstr "色階"
-#: Pinta.Tools/PaintBrushTool.cs:47 Pinta.Tools/FreeformShapeTool.cs:56
-msgid ""
-"Left click to draw with primary color, right click to draw with secondary "
-"color."
-msgstr "畫圖時,按滑鼠左鍵畫出來的顏色是主要顏色,按滑鼠右鍵畫出來的顏色是第二顏色。"
+#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
+msgid "Black and White"
+msgstr "去除色彩"
-#: Pinta.Tools/RectangleSelectTool.cs:38
-msgid "Rectangle Select"
-msgstr "矩形選取工具"
+#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
+msgid "Auto Level"
+msgstr "自動調整色階"
-#: Pinta.Tools/RectangleSelectTool.cs:44
-msgid ""
-"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
-"square."
-msgstr "點選並拖動畫出一個矩形選取區域。按住\"Shift\"鍵以限制畫出來的是正方形。"
+#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
+msgid "Hue / Saturation"
+msgstr "色相 / 飽和度"
-#: Pinta.Tools/PaintBucketTool.cs:40
-msgid "Paint Bucket"
-msgstr "油漆桶"
+#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:30
+msgid "Brightness / Contrast"
+msgstr "亮度/對比"
-#: Pinta.Tools/PaintBucketTool.cs:46
-msgid ""
-"Left click to fill a region with the primary color, right click to fill with "
-"the secondary color."
-msgstr "點擊滑鼠左鍵,用主要顏色填滿一區域。點擊滑鼠右鍵,則用的是第二顏色。"
+#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
+msgid "Sepia"
+msgstr "復古褐色"
-#: Pinta.Tools/UnimplementedTools.cs:40
-msgid "Clone Stamp"
-msgstr "橡皮圖章"
+#: Pinta.Effects/Adjustments/CurvesEffect.cs:28
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
+msgid "Curves"
+msgstr "曲線"
-#: Pinta.Tools/MoveSelectionTool.cs:42
-msgid "Move Selection"
-msgstr "移動選取區域"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
+msgid "Transfer Map"
+msgstr "轉換圖"
-#: Pinta.Tools/MoveSelectionTool.cs:48
-msgid "Drag the selection to move selection outline."
-msgstr "拖動選取區域,以移動選取區域的邊框。"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
+msgid "RGB"
+msgstr "RGB"
-#: Pinta.Tools/FreeformShapeTool.cs:54
-msgid "Freeform Shape"
-msgstr "自由形態形狀"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
+msgid "Luminosity"
+msgstr "亮度"
-#: Pinta.Tools/FloodTool.cs:71
-msgid "Fill mode"
-msgstr "填充模式"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
+msgid "(256, 256)"
+msgstr "(256, 256)"
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Contiguous"
-msgstr "相似顏色的連續區域"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
+msgid "Red "
+msgstr "紅色 "
-#: Pinta.Tools/FloodTool.cs:76
-msgid "Global"
-msgstr "整個選取區域"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
+msgid "Green"
+msgstr "綠色"
-#: Pinta.Tools/FloodTool.cs:81 Pinta.Tools/RecolorTool.cs:73
-#: SoftenPortraitData dialog
-msgid "Tolerance"
-msgstr "容許偏差量"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
+msgid "Blue "
+msgstr "藍色 "
-#: Pinta.Tools/EllipseTool.cs:38
-msgid "Ellipse"
-msgstr "橢圓形"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
+msgid "Reset"
+msgstr "重設"
-#: Pinta.Tools/EllipseTool.cs:44
-msgid ""
-"Click and drag to draw an ellipse (right click for secondary color). Hold "
-"shift to constrain to a circle."
-msgstr "按住滑鼠左鍵並拖動畫出一橢圓(若用滑鼠右鍵則使用的是第二顏色)。按住\"Shift\"鍵以限制畫出來的是圓形。"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
+msgid "Tip: Right-click to remove control points."
+msgstr "提示:按右鍵以刪除控制點。"
-#: Pinta.Tools/TextTool.cs:37
-msgid "Text"
-msgstr "文字"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
+msgid "Levels Adjustment"
+msgstr "色階調整"
-#: Pinta.Tools/TextTool.cs:44
-msgid ""
-"Left click to place cursor, then type desired text. Text color is primary "
-"color."
-msgstr "點擊滑鼠左鍵,輸入想要的文字。(文字顏色是主要顏色!)"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
+msgid "Input Histogram"
+msgstr "輸入直方圖"
-#: Pinta.Tools/TextTool.cs:131
-msgid "Font"
-msgstr "字型"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
+msgid "Input"
+msgstr "輸入"
-#: Pinta.Tools/TextTool.cs:186
-msgid "Bold"
-msgstr "粗體"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
+msgid "Output"
+msgstr "輸出"
-#: Pinta.Tools/TextTool.cs:193
-msgid "Italic"
-msgstr "斜體"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
+msgid "Output Histogram"
+msgstr "輸出直方圖"
-#: Pinta.Tools/TextTool.cs:201
-msgid "Underline"
-msgstr "底線"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
+msgid "Auto"
+msgstr "自動"
-#: Pinta.Tools/TextTool.cs:210
-msgid "Left Align"
-msgstr "置左"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
+msgid "Red"
+msgstr "紅色"
-#: Pinta.Tools/TextTool.cs:219
-msgid "Center Align"
-msgstr "置中"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
+msgid "Blue"
+msgstr "藍色"
-#: Pinta.Tools/TextTool.cs:227
-msgid "Right Align"
-msgstr "置右"
+#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
+msgid "Linked"
+msgstr "連鎖變更"
-#: Pinta.Tools/MagicWandTool.cs:46
-msgid "Magic Wand Select"
-msgstr "魔術棒選取工具"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
+msgid "Pencil Sketch"
+msgstr "鉛筆素描"
-#: Pinta.Tools/MagicWandTool.cs:54
-msgid "Click to select region of similar color."
-msgstr "點擊以選取一相同顏色的區域。"
+#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
+#: Pinta.Effects/Effects/InkSketchEffect.cs:42
+msgid "Artistic"
+msgstr "藝術效果"
-#: Pinta.Tools/RectangleTool.cs:38
-msgid "Rectangle"
-msgstr "矩形"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:28
+msgid "Unfocus"
+msgstr "失去聚焦"
-#: Pinta.Tools/RectangleTool.cs:44
-msgid ""
-"Click and drag to draw a rectangle (right click for secondary color). Hold "
-"shift to constrain to a square."
-msgstr "按住滑鼠左鍵並拖動畫出一矩形(若用滑鼠右鍵則使用的是第二顏色)。按住\"Shift\"鍵以限制畫出來的是正方形。"
+#: Pinta.Effects/Effects/UnfocusEffect.cs:36
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
+#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
+#: Pinta.Effects/Effects/FragmentEffect.cs:34
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
+msgid "Blurs"
+msgstr "模糊"
-#: Pinta.Tools/LineCurveTool.cs:38
-msgid "Line"
-msgstr "直線"
+#: Pinta.Effects/Effects/BulgeEffect.cs:26
+msgid "Bulge"
+msgstr "凸起"
-#: Pinta.Tools/LineCurveTool.cs:44
-msgid ""
-"Left click to draw with primary color, right click for secondary color."
-msgstr "按滑鼠左鍵繪圖用的是主要顏色,按滑鼠右鍵則是使用第二顏色。"
+#: Pinta.Effects/Effects/BulgeEffect.cs:34
+#: Pinta.Effects/Effects/PixelateEffect.cs:38
+#: Pinta.Effects/Effects/TileEffect.cs:34
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
+#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
+#: Pinta.Effects/Effects/TwistEffect.cs:34
+msgid "Distort"
+msgstr "扭曲"
-#: Pinta.Tools/RecolorTool.cs:59
-msgid "Recolor"
-msgstr "重新著色"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
+msgid "Mandelbrot Fractal"
+msgstr "曼德勃羅不規則碎片形"
-#: Pinta.Tools/RecolorTool.cs:61
-msgid "Left click to replace the secondary color with the primary color."
-msgstr "按滑鼠左鍵,用主要顏色取代第二顏色。"
+#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
+#: Pinta.Effects/Effects/CloudsEffect.cs:38
+msgid "Render"
+msgstr "渲染"
-#: Pinta.Tools/EraserTool.cs:45
-msgid "Eraser"
-msgstr "橡皮擦"
+#: Pinta.Effects/Effects/MedianEffect.cs:29
+msgid "Median"
+msgstr "中間值"
-#: Pinta.Tools/EraserTool.cs:47
-msgid "Click and drag to erase a portion of the image."
-msgstr "按住並拖動滑鼠以擦掉一部分的圖片顏色。"
+#: Pinta.Effects/Effects/MedianEffect.cs:37
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
+#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
+msgid "Noise"
+msgstr "雜訊"
#: Pinta.Effects/Effects/PixelateEffect.cs:26
msgid "Pixelate"
msgstr "像素化"
-#: Pinta.Effects/Effects/PixelateEffect.cs:38
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:34
-#: Pinta.Effects/Effects/PolarInversionEffect.cs:39
-#: Pinta.Effects/Effects/TileEffect.cs:34
-#: Pinta.Effects/Effects/BulgeEffect.cs:34
-#: Pinta.Effects/Effects/TwistEffect.cs:34
-msgid "Distort"
-msgstr "扭曲"
-
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
-msgid "Red Eye Removal"
-msgstr "去除紅眼"
+#: Pinta.Effects/Effects/SharpenEffect.cs:26
+msgid "Sharpen"
+msgstr "銳利化"
-#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
-#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SharpenEffect.cs:34
+#: Pinta.Effects/Effects/GlowEffect.cs:39
#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:67
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:37
msgid "Photo"
msgstr "照片"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
-msgid "Motion Blur"
-msgstr "動感模糊"
+#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
+msgid "Oil Painting"
+msgstr "油畫"
-#: Pinta.Effects/Effects/MotionBlurEffect.cs:34
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:34
-#: Pinta.Effects/Effects/UnfocusEffect.cs:36
-#: Pinta.Effects/Effects/ZoomBlurEffect.cs:34
-#: Pinta.Effects/Effects/FragmentEffect.cs:34
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:34
-msgid "Blurs"
-msgstr "模糊"
+#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
+msgid "Gaussian Blur"
+msgstr "高斯模糊"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:34
-msgid "Ink Sketch"
-msgstr "水墨素描"
+#: Pinta.Effects/Effects/GlowEffect.cs:31
+msgid "Glow"
+msgstr "美白效果"
-#: Pinta.Effects/Effects/InkSketchEffect.cs:42
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:34
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:41
-msgid "Artistic"
-msgstr "藝術效果"
+#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
+msgid "Soften Portrait"
+msgstr "柔化處理"
-#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
-msgid "Radial Blur"
-msgstr "放射狀模糊"
+#: Pinta.Effects/Effects/TileEffect.cs:26
+msgid "Tile Reflection"
+msgstr "瓷磚效果"
-#: Pinta.Effects/Effects/UnfocusEffect.cs:28
-msgid "Unfocus"
-msgstr "失去聚焦"
+#: Pinta.Effects/Effects/RedEyeRemoveEffect.cs:29
+msgid "Red Eye Removal"
+msgstr "去除紅眼"
+
+#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
+msgid "Frosted Glass"
+msgstr "磨砂玻璃"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:29
msgid "Edge Detect"
msgstr "邊緣偵測"
#: Pinta.Effects/Effects/EdgeDetectEffect.cs:37
-#: Pinta.Effects/Effects/OutlineEffect.cs:37
-#: Pinta.Effects/Effects/ReliefEffect.cs:33
#: Pinta.Effects/Effects/EmbossEffect.cs:34
+#: Pinta.Effects/Effects/ReliefEffect.cs:33
+#: Pinta.Effects/Effects/OutlineEffect.cs:37
msgid "Stylize"
-msgstr "樣式化"
+msgstr "風格化"
-#: Pinta.Effects/Effects/FrostedGlassEffect.cs:26
-msgid "Frosted Glass"
-msgstr "磨砂玻璃"
+#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
+msgid "Julia Fractal"
+msgstr "茱莉亞不規則碎片形"
-#: Pinta.Effects/Effects/OilPaintingEffect.cs:26
-msgid "Oil Painting"
-msgstr "油畫"
+#: Pinta.Effects/Effects/MotionBlurEffect.cs:26
+msgid "Motion Blur"
+msgstr "動感模糊"
+
+#: Pinta.Effects/Effects/EmbossEffect.cs:26
+msgid "Emboss"
+msgstr "浮雕"
+
+#: Pinta.Effects/Effects/InkSketchEffect.cs:34
+msgid "Ink Sketch"
+msgstr "水墨素描"
#: Pinta.Effects/Effects/ZoomBlurEffect.cs:26
msgid "Zoom Blur"
@@ -705,543 +682,713 @@ msgstr "極性反轉"
msgid "Clouds"
msgstr "雲"
-#: Pinta.Effects/Effects/CloudsEffect.cs:38
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:34
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:34
-msgid "Render"
-msgstr "粉刷"
+#: Pinta.Effects/Effects/FragmentEffect.cs:26
+msgid "Fragment"
+msgstr "碎片"
-#: Pinta.Effects/Effects/GlowEffect.cs:31
-msgid "Glow"
-msgstr "美白效果"
+#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
+msgid "Reduce Noise"
+msgstr "減少雜訊"
+
+#: Pinta.Effects/Effects/RadialBlurEffect.cs:26
+msgid "Radial Blur"
+msgstr "放射狀模糊"
+
+#: Pinta.Effects/Effects/TwistEffect.cs:26
+msgid "Twist"
+msgstr "扭曲"
#: Pinta.Effects/Effects/AddNoiseEffect.cs:30
msgid "Add Noise"
msgstr "加入雜訊"
-#: Pinta.Effects/Effects/AddNoiseEffect.cs:38
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:37
-#: Pinta.Effects/Effects/MedianEffect.cs:37
-msgid "Noise"
-msgstr "雜訊"
-
-#: Pinta.Effects/Effects/FragmentEffect.cs:26
-msgid "Fragment"
-msgstr "碎片"
-
-#: Pinta.Effects/Effects/SharpenEffect.cs:26
-msgid "Sharpen"
-msgstr "銳利化"
-
-#: Pinta.Effects/Effects/PencilSketchEffect.cs:33
-msgid "Pencil Sketch"
-msgstr "鉛筆素描"
+#: Pinta.Effects/Effects/ReliefEffect.cs:45
+msgid "Relief"
+msgstr "醒目效果"
#: Pinta.Effects/Effects/OutlineEffect.cs:29
msgid "Outline"
msgstr "邊框"
-#: Pinta.Effects/Effects/GaussianBlurEffect.cs:26
-msgid "Gaussian Blur"
-msgstr "高斯模糊"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:38
+msgid "Random Noise"
+msgstr "不規則雜訊"
-#: Pinta.Effects/Effects/TileEffect.cs:26
-msgid "Tile Reflection"
-msgstr "瓷磚效果"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ReseedButtonWidget.cs:65
+msgid "Reseed"
+msgstr "變換"
-#: Pinta.Effects/Effects/ReliefEffect.cs:45
-msgid "Relief"
-msgstr "醒目效果"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.HScaleSpinButtonWidget.cs:48
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.AnglePickerWidget.cs:52
+msgid "label1"
+msgstr "標籤1"
-#: Pinta.Effects/Effects/EmbossEffect.cs:26
-msgid "Emboss"
-msgstr "浮雕"
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:58
+#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.ComboBoxWidget.cs:42
+msgid "label"
+msgstr "標籤"
-#: Pinta.Effects/Effects/MandelbrotFractalEffect.cs:26
-msgid "Mandelbrot Fractal"
-msgstr "曼德勃羅不規則碎片形"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr "選擇主要顏色"
-#: Pinta.Effects/Effects/BulgeEffect.cs:26
-msgid "Bulge"
-msgstr "凸起"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
+msgstr "選擇第二顏色"
-#: Pinta.Effects/Effects/TwistEffect.cs:26
-msgid "Twist"
-msgstr "扭曲"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
+msgstr "選擇調色盤顏色"
-#: Pinta.Effects/Effects/SoftenPortraitEffect.cs:59
-msgid "Soften Portrait"
-msgstr "柔化人像"
+#: Pinta.Tools/PanTool.cs:38
+msgid "Pan"
+msgstr "平移"
-#: Pinta.Effects/Effects/ReduceNoiseEffect.cs:29
-msgid "Reduce Noise"
-msgstr "減少雜訊"
+#: Pinta.Tools/PanTool.cs:44
+msgid "Click and drag to navigate image."
+msgstr "按住滑鼠並拖動以瀏覽圖片"
-#: Pinta.Effects/Effects/JuliaFractalEffect.cs:26
-msgid "Julia Fractal"
-msgstr "茱莉亞不規則碎片形"
+#: Pinta.Tools/TextTool.cs:37
+msgid "Text"
+msgstr "文字"
-#: Pinta.Effects/Effects/MedianEffect.cs:29
-msgid "Median"
-msgstr "中間值"
+#: Pinta.Tools/TextTool.cs:44
+msgid ""
+"Left click to place cursor, then type desired text. Text color is primary "
+"color."
+msgstr "點擊滑鼠左鍵,輸入想要的文字。(文字顏色是主要顏色!)"
-#: Pinta.Effects/Adjustments/CurvesEffect.cs:26
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:46
-msgid "Curves"
-msgstr "曲線"
+#: Pinta.Tools/TextTool.cs:144
+msgid "Font"
+msgstr "字型"
-#: Pinta.Effects/Adjustments/LevelsEffect.cs:24
-msgid "Levels"
-msgstr "色階"
+#: Pinta.Tools/TextTool.cs:205
+msgid "Bold"
+msgstr "粗體"
-#: Pinta.Effects/Adjustments/AutoLevelEffect.cs:26
-msgid "Auto Level"
-msgstr "自動調整色階"
+#: Pinta.Tools/TextTool.cs:212
+msgid "Italic"
+msgstr "斜體"
-#: Pinta.Effects/Adjustments/InvertColorsEffect.cs:26
-#: SoftenPortraitData dialog
-msgid "Invert Colors"
-msgstr "反相"
+#: Pinta.Tools/TextTool.cs:220
+msgid "Underline"
+msgstr "底線"
-#: Pinta.Effects/Adjustments/PosterizeEffect.cs:24
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:26
-msgid "Posterize"
-msgstr "色調分離"
+#: Pinta.Tools/TextTool.cs:229
+msgid "Left Align"
+msgstr "置左"
-#: Pinta.Effects/Adjustments/BlackAndWhiteEffect.cs:26
-msgid "Black and White"
-msgstr "黑白化"
+#: Pinta.Tools/TextTool.cs:238
+msgid "Center Align"
+msgstr "置中"
-#: Pinta.Effects/Adjustments/HueSaturationEffect.cs:27
-msgid "Hue / Saturation"
-msgstr "色相 / 飽和度"
+#: Pinta.Tools/TextTool.cs:246
+msgid "Right Align"
+msgstr "置右"
-#: Pinta.Effects/Adjustments/SepiaEffect.cs:27
-msgid "Sepia"
-msgstr "變成復古褐色"
+#: Pinta.Tools/RectangleTool.cs:38
+msgid "Rectangle"
+msgstr "矩形"
-#: Pinta.Effects/Adjustments/BrightnessContrastEffect.cs:29
-msgid "Brightness / Contrast"
-msgstr "亮度/對比"
+#: Pinta.Tools/RectangleTool.cs:44
+msgid ""
+"Click and drag to draw a rectangle (right click for secondary color). Hold "
+"shift to constrain to a square."
+msgstr "按住滑鼠左鍵並拖動畫出一矩形(若用滑鼠右鍵則使用的是第二顏色)。按住\"Shift\"鍵以限制畫出來的是正方形。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:103
-msgid "Levels Adjustment"
-msgstr "色階調整"
+#: Pinta.Tools/FreeformShapeTool.cs:53
+msgid "Freeform Shape"
+msgstr "自由形態形狀"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:130
-msgid "Input Histogram"
-msgstr "輸入直方圖"
+#: Pinta.Tools/FreeformShapeTool.cs:55 Pinta.Tools/PaintBrushTool.cs:43
+msgid ""
+"Left click to draw with primary color, right click to draw with secondary "
+"color."
+msgstr "畫圖時,按滑鼠左鍵畫出來的顏色是主要顏色,按滑鼠右鍵畫出來的顏色是第二顏色。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:172
-msgid "Input"
-msgstr "輸入"
+#: Pinta.Tools/FreeformShapeTool.cs:71 Pinta.Tools/ShapeTool.cs:131
+msgid "Fill Style"
+msgstr "填充形式"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:285
-msgid "Output"
-msgstr "輸出"
+#: Pinta.Tools/FreeformShapeTool.cs:78 Pinta.Tools/ShapeTool.cs:138
+msgid "Outline Shape"
+msgstr "邊框"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:413
-msgid "Output Histogram"
-msgstr "輸出直方圖"
+#: Pinta.Tools/FreeformShapeTool.cs:79 Pinta.Tools/ShapeTool.cs:139
+msgid "Fill Shape"
+msgstr "填充"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:456
-msgid "Auto"
-msgstr "自動"
+#: Pinta.Tools/FreeformShapeTool.cs:80 Pinta.Tools/ShapeTool.cs:140
+msgid "Fill and Outline Shape"
+msgstr "填充和邊框"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:468
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:173
-msgid "Reset"
-msgstr "重設"
+#: Pinta.Tools/FloodTool.cs:72
+msgid "Flood Mode"
+msgstr "泛濫模式"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:478
-msgid "Red"
-msgstr "紅色"
+#: Pinta.Tools/FloodTool.cs:79
+msgid "Contiguous"
+msgstr "相似顏色的連續區域"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:489
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:142
-msgid "Green"
-msgstr "綠色"
+#: Pinta.Tools/FloodTool.cs:80
+msgid "Global"
+msgstr "整個選取區域"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.LevelsDialog.cs:528
-msgid "Blue"
-msgstr "藍色"
+#: Pinta.Tools/FloodTool.cs:91 Pinta.Tools/RecolorTool.cs:73
+msgid "Tolerance"
+msgstr "容許偏差量"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.PosterizeDialog.cs:93
-msgid "Linked"
-msgstr "連鎖變更"
+#: Pinta.Tools/LineCurveTool.cs:38
+msgid "Line"
+msgstr "直線"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:62
-msgid "Transfer Map"
-msgstr "轉換圖"
+#: Pinta.Tools/LineCurveTool.cs:44
+msgid ""
+"Left click to draw with primary color, right click for secondary color."
+msgstr "按滑鼠左鍵繪圖用的是主要顏色,按滑鼠右鍵則是使用第二顏色。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:85
-msgid "RGB"
-msgstr "RGB"
+#: Pinta.Tools/MoveSelectionTool.cs:42
+msgid "Move Selection"
+msgstr "移動選取區域"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:86
-msgid "Luminosity"
-msgstr "亮度"
+#: Pinta.Tools/MoveSelectionTool.cs:48
+msgid "Drag the selection to move selection outline."
+msgstr "拖動選取區域,以移動選取區域的邊框。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:100
-msgid "(256, 256)"
-msgstr "(256, 256)"
+#: Pinta.Tools/RectangleSelectTool.cs:38
+msgid "Rectangle Select"
+msgstr "矩形選取工具"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:131
-msgid "Red "
-msgstr "紅色 "
+#: Pinta.Tools/RectangleSelectTool.cs:44
+msgid ""
+"Click and drag to draw a rectangular selection. Hold shift to constrain to a "
+"square."
+msgstr "點選並拖動畫出一個矩形選取區域。按住\"Shift\"鍵以限制畫出來的是正方形。"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:153
-msgid "Blue "
-msgstr "藍色 "
+#: Pinta.Tools/MagicWandTool.cs:46
+msgid "Magic Wand Select"
+msgstr "魔術棒選取工具"
-#: Pinta.Effects/gtk-gui/Pinta.Effects.CurvesDialog.cs:187
-msgid "Tip: Right-click to remove control points."
-msgstr "提示:按右鍵以刪除控制點。"
+#: Pinta.Tools/MagicWandTool.cs:54
+msgid "Click to select region of similar color."
+msgstr "點擊以選取一相同顏色的區域。"
-#: Pinta.Core/Actions/LayerActions.cs:64
-#: Pinta.Core/Actions/LayerActions.cs:271
-msgid "Add New Layer"
-msgstr "新增圖層"
+#: Pinta.Tools/EllipseSelectTool.cs:38
+msgid "Ellipse Select"
+msgstr "橢圓形選取工具"
-#: Pinta.Core/Actions/LayerActions.cs:65
-#: Pinta.Core/Actions/LayerActions.cs:255
-msgid "Delete Layer"
-msgstr "刪除圖層"
+#: Pinta.Tools/EllipseSelectTool.cs:44
+msgid ""
+"Click and drag to draw an elliptical selection. Hold shift to constrain to a "
+"circle."
+msgstr "按住滑鼠並拖動畫出一個橢圓選取區域。另外,按住\"Shift\"鍵以限制畫出來的是圓形。"
-#: Pinta.Core/Actions/LayerActions.cs:66
-#: Pinta.Core/Actions/LayerActions.cs:247
-msgid "Duplicate Layer"
-msgstr "複製圖層"
+#: Pinta.Tools/LassoSelectTool.cs:45
+msgid "Lasso Select"
+msgstr "自由選取工具"
-#: Pinta.Core/Actions/LayerActions.cs:67
-#: Pinta.Core/Actions/LayerActions.cs:226
-msgid "Merge Layer Down"
-msgstr "將目前所選圖層及它下一層圖層合併"
+#: Pinta.Tools/LassoSelectTool.cs:47
+msgid "Click and drag to draw the outline for a selection area."
+msgstr "按住滑鼠並拖動畫出選取區域的邊框"
-#: Pinta.Core/Actions/LayerActions.cs:68
-msgid "Import from File..."
-msgstr "匯入圖片檔..."
+#: Pinta.Tools/PaintBucketTool.cs:40
+msgid "Paint Bucket"
+msgstr "油漆桶"
-#: Pinta.Core/Actions/LayerActions.cs:69 Pinta.Core/Actions/ImageActions.cs:61
-msgid "Flip Horizontal"
-msgstr "水平翻轉"
+#: Pinta.Tools/PaintBucketTool.cs:46
+msgid ""
+"Left click to fill a region with the primary color, right click to fill with "
+"the secondary color."
+msgstr "點擊滑鼠左鍵,用主要顏色填滿一區域。點擊滑鼠右鍵,則用的是第二顏色。"
-#: Pinta.Core/Actions/LayerActions.cs:70 Pinta.Core/Actions/ImageActions.cs:62
-msgid "Flip Vertical"
-msgstr "垂直翻轉"
+#: Pinta.Tools/GradientTool.cs:65 Pinta.Tools/GradientTool.cs:176
+msgid "Gradient"
+msgstr "漸層"
-#: Pinta.Core/Actions/LayerActions.cs:71
-msgid "Rotate / Zoom"
-msgstr "旋轉 /縮放"
+#: Pinta.Tools/GradientTool.cs:73
+msgid ""
+"Click and drag to draw gradient from primary to secondary color. Right "
+"click to reverse."
+msgstr "按住滑鼠左鍵並拖動畫出從主要顏色到第二顏色的漸層顏色,按住滑鼠右鍵則相反。"
-#: Pinta.Core/Actions/LayerActions.cs:72
-#: Pinta.Core/Actions/LayerActions.cs:206
-msgid "Move Layer Up"
-msgstr "圖層上移"
+#: Pinta.Tools/GradientTool.cs:183
+msgid "Linear Gradient"
+msgstr "線性漸變填充"
-#: Pinta.Core/Actions/LayerActions.cs:73
-#: Pinta.Core/Actions/LayerActions.cs:216
-msgid "Move Layer Down"
-msgstr "圖層下移"
+#: Pinta.Tools/GradientTool.cs:184
+msgid "Linear Reflected Gradient"
+msgstr "雙線性漸變填充"
-#: Pinta.Core/Actions/LayerActions.cs:155
-#: Pinta.Core/Actions/FileActions.cs:276
-msgid "Open Image File"
-msgstr "開啟圖片檔"
+#: Pinta.Tools/GradientTool.cs:185
+msgid "Linear Diamond Gradient"
+msgstr "鑽石形漸變填充"
-#: Pinta.Core/Actions/LayerActions.cs:177
-msgid "Import From File"
-msgstr "匯入圖片檔"
+#: Pinta.Tools/GradientTool.cs:186
+msgid "Radial Gradient"
+msgstr "放射漸變填充"
-#: Pinta.Core/Actions/FileActions.cs:54
-msgid "New..."
-msgstr "新增..."
+#: Pinta.Tools/GradientTool.cs:187
+msgid "Conical Gradient"
+msgstr "圓錐形漸變填充"
-#: Pinta.Core/Actions/FileActions.cs:55
-msgid "Open..."
-msgstr "開啟..."
+#: Pinta.Tools/GradientTool.cs:195
+msgid "Mode"
+msgstr "模式"
-#: Pinta.Core/Actions/FileActions.cs:56
-msgid "Open Recent"
-msgstr "最近開啟的檔案"
+#: Pinta.Tools/GradientTool.cs:202
+msgid "Color Mode"
+msgstr "色彩模式"
-#: Pinta.Core/Actions/FileActions.cs:70
-msgid "Close"
-msgstr "關閉"
+#: Pinta.Tools/GradientTool.cs:203
+msgid "Transparency Mode"
+msgstr "透明模式"
-#: Pinta.Core/Actions/FileActions.cs:71
-msgid "Save"
-msgstr "儲存"
+#: Pinta.Tools/ShapeTool.cs:99 Pinta.Tools/BaseBrushTool.cs:70
+msgid "Brush width"
+msgstr "筆刷寬度"
-#: Pinta.Core/Actions/FileActions.cs:72
-msgid "Save As..."
-msgstr "另存新檔..."
+#: Pinta.Tools/ShapeTool.cs:104 Pinta.Tools/BaseBrushTool.cs:75
+msgid "Decrease brush size"
+msgstr "減小筆刷大小"
-#: Pinta.Core/Actions/FileActions.cs:73
-msgid "Print"
-msgstr "列印"
+#: Pinta.Tools/ShapeTool.cs:118 Pinta.Tools/BaseBrushTool.cs:89
+msgid "Increase brush size"
+msgstr "增大筆刷"
-#: Pinta.Core/Actions/FileActions.cs:74
-msgid "Quit"
-msgstr "結束"
+#: Pinta.Tools/PaintBrushTool.cs:41 Pinta/MainWindow.cs:393
+msgid "Paintbrush"
+msgstr "畫筆"
-#: Pinta.Core/Actions/FileActions.cs:76
-msgid "New"
-msgstr "新增"
+#: Pinta.Tools/PaintBrushTool.cs:63
+msgid "Type"
+msgstr "類型"
-#: Pinta.Core/Actions/FileActions.cs:77
-msgid "Open"
-msgstr "開啟"
+#: Pinta.Tools/RecolorTool.cs:59
+msgid "Recolor"
+msgstr "重新著色"
-#: Pinta.Core/Actions/FileActions.cs:125
-msgid "Background"
-msgstr "背景"
+#: Pinta.Tools/RecolorTool.cs:61
+msgid "Left click to replace the secondary color with the primary color."
+msgstr "按滑鼠左鍵,用主要顏色取代第二顏色。"
-#: Pinta.Core/Actions/FileActions.cs:170
-msgid "Open Image"
-msgstr "開啟圖片"
+#: Pinta.Tools/Brushes/PlainBrush.cs:38
+msgid "Normal"
+msgstr "一般"
-#: Pinta.Core/Actions/FileActions.cs:177
-#, csharp-format
-msgid "Could not open file: {0}"
-msgstr "不能開啟檔案:{0}"
+#: Pinta.Tools/Brushes/CircleBrush.cs:38
+msgid "Circles"
+msgstr "圓圈"
-#: Pinta.Core/Actions/FileActions.cs:178
-msgid "Error"
-msgstr "錯誤"
+#: Pinta.Tools/Brushes/SquaresBrush.cs:40
+msgid "Squares"
+msgstr "方塊"
-#: Pinta.Core/Actions/FileActions.cs:207 Pinta.Core/Actions/FileActions.cs:248
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before opening a new image?"
-msgstr "在開啟新圖片檔前,儲存變更到圖片檔 \"{0}\" 中?"
+#: Pinta.Tools/Brushes/SplatterBrush.cs:38
+msgid "Splatter"
+msgstr "噴灑"
-#: Pinta.Core/Actions/FileActions.cs:284
-msgid "Image files"
-msgstr "圖片檔案"
+#: Pinta.Tools/Brushes/GridBrush.cs:38
+msgid "Grid"
+msgstr "網格"
-#: Pinta.Core/Actions/FileActions.cs:288
-msgid "All files"
-msgstr "所有檔案"
+#: Pinta.Tools/EllipseTool.cs:38
+msgid "Ellipse"
+msgstr "橢圓形"
-#: Pinta.Core/Actions/FileActions.cs:320
-msgid "Save Image File"
-msgstr "儲存圖片檔"
+#: Pinta.Tools/EllipseTool.cs:44
+msgid ""
+"Click and drag to draw an ellipse (right click for secondary color). Hold "
+"shift to constrain to a circle."
+msgstr "按住滑鼠左鍵並拖動畫出一橢圓(若用滑鼠右鍵則使用的是第二顏色)。按住\"Shift\"鍵以限制畫出來的是圓形。"
-#: Pinta.Core/Actions/FileActions.cs:345 Pinta.Core/Actions/FileActions.cs:349
-#, csharp-format
-msgid "{0} image ({1})"
-msgstr "{0} 圖片 ({1})"
+#: Pinta.Tools/CloneStampTool.cs:43
+msgid "Clone Stamp"
+msgstr "橡皮圖章"
-#: Pinta.Core/Actions/FileActions.cs:365
-msgid "OpenRaster image (*.ora)"
-msgstr "OpenRaster格式的圖片 (*.ora)"
+#: Pinta.Tools/CloneStampTool.cs:48
+msgid "Ctrl-left click to set origin, left click to paint."
+msgstr "按著左邊的 \"ctrl鍵\",然後用滑鼠點選要複製像素的中心點!然後放開鍵盤,按滑鼠左鍵當筆刷塗抹。"
-#: Pinta.Core/Actions/FileActions.cs:392
-#, csharp-format
-msgid "Save the changes to image \"{0}\" before closing?"
-msgstr "在關閉之前,儲存變更到圖片檔 \"{0}\" 中?"
+#: Pinta.Tools/ZoomTool.cs:49
+msgid "Zoom"
+msgstr "縮放"
-#: Pinta.Core/Actions/FileActions.cs:402
-msgid "Close without saving"
-msgstr "關閉而不儲存"
+#: Pinta.Tools/ZoomTool.cs:55
+msgid ""
+"Left click to zoom in. Right click to zoom out. Click and drag to zoom in "
+"selection."
+msgstr "按滑鼠左鍵以放大,按滑鼠右鍵以縮小。另外,可以用滑鼠左鍵選取一個區域來放大。"
-#: Pinta.Core/Actions/ImageActions.cs:58
-#: Pinta.Core/Actions/ImageActions.cs:168
-msgid "Crop to Selection"
-msgstr "剪裁出選取區域"
+#: Pinta.Tools/RoundedRectangleTool.cs:44
+msgid "Rounded Rectangle"
+msgstr "圓角矩形"
-#: Pinta.Core/Actions/ImageActions.cs:59
-msgid "Resize..."
-msgstr "縮放圖片..."
+#: Pinta.Tools/RoundedRectangleTool.cs:50
+msgid ""
+"Click and drag to draw a rounded rectangle (right click for secondary "
+"color). Hold shift to constrain."
+msgstr "按住滑鼠左鍵並拖動畫出一圓角矩形(若用滑鼠右鍵則使用的是第二顏色)。按住\"Shift\"鍵以限制畫出來的是正圓角矩形。"
-#: Pinta.Core/Actions/ImageActions.cs:60
-msgid "Canvas Size..."
-msgstr "調整畫布尺寸..."
+#: Pinta.Tools/RoundedRectangleTool.cs:83
+msgid "Radius"
+msgstr "半徑"
-#: Pinta.Core/Actions/ImageActions.cs:63
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:62
-msgid "Rotate 90° Clockwise"
-msgstr "順時針旋轉90°"
+#: Pinta.Tools/RoundedRectangleTool.cs:88
+msgid "Decrease rectangle's corner radius"
+msgstr "減少矩形的圓角半徑"
-#: Pinta.Core/Actions/ImageActions.cs:64
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:66
-msgid "Rotate 90° Counter-Clockwise"
-msgstr "逆時針旋轉90°"
+#: Pinta.Tools/RoundedRectangleTool.cs:102
+msgid "Increase rectangle's corner radius"
+msgstr "增加矩形的圓角半徑"
-#: Pinta.Core/Actions/ImageActions.cs:65
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:50
-msgid "Rotate 180°"
-msgstr "旋轉 180°"
+#: Pinta.Tools/ColorPickerTool.cs:44
+msgid "Color Picker"
+msgstr "顏色拾取器"
-#: Pinta.Core/Actions/ImageActions.cs:66
-#: Pinta.Core/Actions/ImageActions.cs:121
-msgid "Flatten"
-msgstr "影像平面化"
+#: Pinta.Tools/ColorPickerTool.cs:50
+msgid "Left click to set primary color. Right click to set secondary color."
+msgstr "按滑鼠左鍵設置主要顏色,按滑鼠右鍵設置第二顏色。"
-#: Pinta.Core/Actions/EditActions.cs:59
-msgid "Undo"
-msgstr "復原"
+#: Pinta.Tools/ColorPickerTool.cs:62
+msgid "After select"
+msgstr "選色之後"
-#: Pinta.Core/Actions/EditActions.cs:60
-msgid "Redo"
-msgstr "取消復原"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Do not switch tool"
+msgstr "不要切換工具"
-#: Pinta.Core/Actions/EditActions.cs:61
-msgid "Cut"
-msgstr "剪下"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to previous tool"
+msgstr "切換到上一個工具"
-#: Pinta.Core/Actions/EditActions.cs:62
-msgid "Copy"
-msgstr "複製"
+#: Pinta.Tools/ColorPickerTool.cs:68
+msgid "Switch to Pencil tool"
+msgstr "切換到鉛筆工具"
-#: Pinta.Core/Actions/EditActions.cs:63 Pinta.Core/Actions/EditActions.cs:233
-msgid "Paste"
-msgstr "貼上"
+#: Pinta.Tools/ColorPickerTool.cs:120 Pinta.Tools/PencilTool.cs:48
+msgid "Pencil"
+msgstr "鉛筆"
-#: Pinta.Core/Actions/EditActions.cs:64 Pinta.Core/Actions/EditActions.cs:205
-msgid "Paste Into New Layer"
-msgstr "貼到新圖層"
+#: Pinta.Tools/EraserTool.cs:45
+msgid "Eraser"
+msgstr "橡皮擦"
-#: Pinta.Core/Actions/EditActions.cs:65
-msgid "Paste Into New Image"
-msgstr "貼到新圖片"
+#: Pinta.Tools/EraserTool.cs:47
+msgid "Click and drag to erase a portion of the image."
+msgstr "按住並拖動滑鼠以擦掉一部分的圖片顏色。"
-#: Pinta.Core/Actions/EditActions.cs:66 Pinta.Core/Actions/EditActions.cs:168
-#: Pinta.Core/Actions/EditActions.cs:276
-msgid "Erase Selection"
-msgstr "刪除選取區域"
+#: Pinta.Tools/PencilTool.cs:50
+msgid ""
+"Left click to draw freeform, one-pixel wide lines with the primary color, "
+"right click to use the secondary color."
+msgstr "按滑鼠左鍵畫出任意形狀,線條寬為1像素而顏色為主要顏色,按滑鼠右鍵使用第二顏色。"
-#: Pinta.Core/Actions/EditActions.cs:67 Pinta.Core/Actions/EditActions.cs:137
-msgid "Fill Selection"
-msgstr "填充選取區域"
+#: Pinta.Tools/MoveSelectedTool.cs:42
+msgid "Move Selected Pixels"
+msgstr "移動選取的像素"
-#: Pinta.Core/Actions/EditActions.cs:68
-msgid "Invert Selection"
-msgstr "反向選取"
+#: Pinta.Tools/MoveSelectedTool.cs:48
+msgid "Drag the selection to move selected content."
+msgstr "拖動選取區域,以移動選定內容。"
-#: Pinta.Core/Actions/EditActions.cs:69 Pinta.Core/Actions/EditActions.cs:144
-msgid "Select All"
-msgstr "全選"
+#: Pinta/DockLibrary/DockItemContainer.cs:90 Pinta/DockLibrary/DockItem.cs:477
+msgid "Hide"
+msgstr "隱藏"
-#: Pinta.Core/Actions/EditActions.cs:70 Pinta.Core/Actions/EditActions.cs:175
-msgid "Deselect"
-msgstr "取消選取"
+#: Pinta/DockLibrary/DockItemContainer.cs:190
+msgid "Dock"
+msgstr "停駐"
-#: Pinta.Core/Actions/ViewActions.cs:62
-msgid "Zoom In"
-msgstr "放大"
+#: Pinta/DockLibrary/DockItemContainer.cs:194
+#: Pinta/DockLibrary/DockItem.cs:502
+msgid "Auto Hide"
+msgstr "自動隱藏"
-#: Pinta.Core/Actions/ViewActions.cs:63
-msgid "Zoom Out"
-msgstr "縮小"
+#: Pinta/DockLibrary/DockItem.cs:485
+msgid "Dockable"
+msgstr "停駐式"
-#: Pinta.Core/Actions/ViewActions.cs:64
-msgid "Zoom to Window"
-msgstr "符合視窗大小"
+#: Pinta/DockLibrary/DockItem.cs:493
+msgid "Floating"
+msgstr "浮動式"
-#: Pinta.Core/Actions/ViewActions.cs:65
-msgid "Zoom to Selection"
-msgstr "放大成自選區域"
+#: Pinta/Options.cs:486
+msgid "OptionName"
+msgstr "選項名稱"
-#: Pinta.Core/Actions/ViewActions.cs:66
-msgid "Actual Size"
-msgstr "實際大小"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:105
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:75
+msgid "By percentage:"
+msgstr "按百分比:"
-#: Pinta.Core/Actions/ViewActions.cs:67
-msgid "Pixel Grid"
-msgstr "像素格線"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:146
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:117
+msgid "By absolute size:"
+msgstr "按絕對大小:"
-#: Pinta.Core/Actions/ViewActions.cs:68
-msgid "Rulers"
-msgstr "尺規"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:167
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:148
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:138
+msgid "Width:"
+msgstr "寬度:"
-#: Pinta.Core/Actions/ViewActions.cs:69 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Pixels"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:189
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:229
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:123
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:135
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:160
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:200
+msgid "pixels"
msgstr "像素"
-#: Pinta.Core/Actions/ViewActions.cs:70 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Inches"
-msgstr "英吋"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:207
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:161
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:178
+msgid "Height:"
+msgstr "高度:"
-#: Pinta.Core/Actions/ViewActions.cs:71 Pinta.Core/Actions/ViewActions.cs:75
-msgid "Centimeters"
-msgstr "公分"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:245
+#: Pinta/gtk-gui/Pinta.ResizeImageDialog.cs:216
+msgid "Maintain aspect ratio"
+msgstr "保持長寬比"
-#: Pinta.Core/Actions/ViewActions.cs:72
-msgid "Fullscreen"
-msgstr "全螢幕"
+#: Pinta/gtk-gui/Pinta.ResizeCanvasDialog.cs:530
+msgid "Anchor:"
+msgstr "定位點:"
-#: Pinta.Core/Actions/ViewActions.cs:190
-#: Pinta.Core/Managers/WorkspaceManager.cs:126
-#: Pinta.Core/Managers/WorkspaceManager.cs:147
-msgid "Window"
-msgstr "視窗"
+#: Pinta/gtk-gui/Pinta.NewImageDialog.cs:58
+msgid "New Image Size "
+msgstr "新的圖片尺寸 "
-#: Pinta.Core/Actions/HelpActions.cs:50
-msgid "Pinta Website"
-msgstr "Pinta 的官方網站"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr "圖層屬性"
-#: Pinta.Core/Actions/HelpActions.cs:51
-msgid "File a Bug"
-msgstr "瑕疵報告"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
+msgid "Name:"
+msgstr "名稱:"
-#: Pinta.Core/Actions/HelpActions.cs:52
-msgid "Translate This Application"
-msgstr "翻譯本軟體"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:86
+msgid "Visible"
+msgstr "顯示的"
-#: Pinta.Core/Effects/BaseEffect.cs:42
-msgid "General"
-msgstr "一般的"
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:109
+msgid "Opacity:"
+msgstr "不透明度:"
-#: Pinta.Core/Classes/BaseTool.cs:135
-msgid "Tool"
-msgstr "工具"
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr "..."
-#: Pinta.Core/Classes/BaseTool.cs:193
-msgid "Shortcut key"
-msgstr "快速鍵"
+#: Pinta/MainWindow.cs:450
+msgid "_File"
+msgstr "檔案(_F)"
-#: Pinta.Core/Classes/BaseTool.cs:217 Pinta.Core/Classes/BaseTool.cs:238
-#: Pinta.Core/Classes/BaseTool.cs:239
-msgid "Antialiasing"
-msgstr "反鋸齒"
+#: Pinta/MainWindow.cs:449
+msgid "_Edit"
+msgstr "編輯(_E)"
-#: Pinta.Core/Classes/BaseTool.cs:218
-msgid "Normal blending / Overwrite blending"
-msgstr "正常混合/覆蓋混合"
+#: Pinta/MainWindow.cs:451
+msgid "_View"
+msgstr "檢視(_V)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:54
-msgid "Flip Image Horizontal"
-msgstr "水平翻轉圖片"
+#: Pinta/MainWindow.cs:454
+msgid "_Image"
+msgstr "圖片(_I)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:58
-msgid "Flip Image Vertical"
-msgstr "垂直翻轉圖片"
+#: Pinta/MainWindow.cs:455
+msgid "_Layers"
+msgstr "圖層(_L)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:79
-msgid "Flip Layer Horizontal"
-msgstr "水平翻轉圖層"
+#: Pinta/MainWindow.cs:456
+msgid "_Adjustments"
+msgstr "調整(_A)"
-#: Pinta.Core/HistoryItems/InvertHistoryItem.cs:83
-msgid "Flip Layer Vertical"
-msgstr "垂直翻轉圖層"
+#: Pinta/MainWindow.cs:457
+msgid "Effe_cts"
+msgstr "效果(_C)"
-#: Pinta.Core/HistoryItems/FinishPixelsHistoryItem.cs:43
-msgid "Finish Pixels"
-msgstr "完成像素"
+#: Pinta/MainWindow.cs:459
+msgid "_Window"
+msgstr "視窗(_W)"
-#: Pinta.Core/Managers/LivePreviewManager.cs:220
-msgid "Rendering Effect"
-msgstr "渲染效果"
+#: Pinta/MainWindow.cs:463
+msgid "Tool Windows"
+msgstr "工具視窗"
-#: Pinta.Core/Managers/LayerManager.cs:283
-msgid "copy"
-msgstr "複製"
+#: Pinta/MainWindow.cs:467
+msgid "_Help"
+msgstr "說明(_H)"
-#: Pinta.Core/Managers/LayerManager.cs:538
-msgid "Layer"
+#: Pinta/MainWindow.cs:549 Pinta/MainWindow.cs:555
+msgid "Tools"
+msgstr "工具"
+
+#: Pinta/MainWindow.cs:578
+msgid "Documents"
+msgstr "文件"
+
+#: Pinta/MainWindow.cs:628 Pinta/MainWindow.cs:639
+msgid "Layers"
msgstr "圖層"
+#: Pinta/MainWindow.cs:647 Pinta/MainWindow.cs:655
+msgid "History"
+msgstr "步驟記錄"
+
+#: Pinta/DialogHandlers.cs:99
+msgid "Take Screenshot"
+msgstr "拍下螢幕截圖"
+
+#: Pinta/DialogHandlers.cs:100
+msgid "Delay before taking a screenshot (seconds):"
+msgstr "在多少秒後,拍下螢幕截圖:"
+
+#: Pinta/DialogHandlers.cs:139
+#, csharp-format
+msgid "Save the changes to image \"{0}\" before closing?"
+msgstr "在關閉之前,儲存變更到圖片檔 \"{0}\" 中?"
+
+#: Pinta/DialogHandlers.cs:140
+msgid "If you don't save, all changes will be permanently lost."
+msgstr "如果不儲存,所有的變更將會永久地遺失。"
+
+#: Pinta/DialogHandlers.cs:147
+msgid "Close without saving"
+msgstr "關閉而不儲存"
+
+#: Pinta/DialogHandlers.cs:174
+msgid "Resize Palette"
+msgstr "調整調色盤大小"
+
+#: Pinta/DialogHandlers.cs:175
+msgid "New palette size:"
+msgstr "新調色盤大小:"
+
+#: Pinta/DialogHandlers.cs:301
+msgid "Layer Opacity"
+msgstr "圖層不透明度"
+
+#: Pinta/DialogHandlers.cs:306
+msgid "Rename Layer"
+msgstr "更改圖層名稱"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Hide Layer"
+msgstr "隱藏圖層"
+
+#: Pinta/DialogHandlers.cs:311
+msgid "Show Layer"
+msgstr "顯示圖層"
+
+#: Pinta/DialogHandlers.cs:404
+msgid "Image files"
+msgstr "圖片檔案"
+
+#: Pinta/DialogHandlers.cs:461
+msgid "Paste cancelled"
+msgstr "貼上取消"
+
+#: Pinta/DialogHandlers.cs:462
+msgid "The clipboard does not contain an image"
+msgstr "剪貼簿不包含圖片"
+
+#: Pinta/DialogHandlers.cs:495
+msgid "Save Image File"
+msgstr "儲存圖片檔"
+
+#: Pinta/DialogHandlers.cs:575
+msgid "Pinta does not support saving images in this file format."
+msgstr "Pinta 不支援儲存這個檔案格式的圖片"
+
+#: Pinta/DialogHandlers.cs:593
+#, csharp-format
+msgid "A file named \"{0}\" already exists. Do you want to replace it?"
+msgstr "檔名 \"{0}\" 已經存在。 你想取代它嗎?"
+
+#: Pinta/DialogHandlers.cs:594
+#, csharp-format
+msgid ""
+"The file already exists in \"{1}\". Replacing it will overwrite its contents."
+msgstr "檔案已經存在於 \"{1}\"。取代它會覆蓋其內容。"
+
+#: Pinta/Main.cs:68
+msgid "number of threads to use for rendering"
+msgstr "用於渲染的線程數"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:41
+#: Pinta/Dialogs/VersionInformationTabPage.cs:50
+msgid "Version"
+msgstr "版本"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "License"
+msgstr "授權許可"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:50
+msgid "Released under the MIT X11 License."
+msgstr "以 MIT X11 許可證發行"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "Copyright"
+msgstr "版權所有"
+
+#: Pinta/Dialogs/AboutPintaTabPage.cs:57
+msgid "by Pinta contributors"
+msgstr "屬於開發Pinta程式的貢獻者"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:44
+msgid "Title"
+msgstr "標題"
+
+#: Pinta/Dialogs/VersionInformationTabPage.cs:53
+msgid "Path"
+msgstr "路徑"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:38
+msgid "JPEG Quality"
+msgstr "JPEG 品質"
+
+#: Pinta/Dialogs/JpegCompressionDialog.cs:46
+msgid "Quality: "
+msgstr "品質: "
+
+#: Pinta/Dialogs/AboutDialog.cs:101
+msgid "Contributors to this Release"
+msgstr "本軟體的貢獻人員"
+
+#: Pinta/Dialogs/AboutDialog.cs:111
+msgid "Previous Contributors"
+msgstr "過去版本的貢獻人員"
+
+#: Pinta/Dialogs/AboutDialog.cs:120
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Eddie https://launchpad.net/~zx4636313\n"
+" Jonathan Pobst https://launchpad.net/~jpobst\n"
+" taijuin lee https://launchpad.net/~taijuin"
+
+#: Pinta/Dialogs/AboutDialog.cs:123
+msgid "Translated by:"
+msgstr "翻譯者:"
+
+#: Pinta/Dialogs/AboutDialog.cs:130
+msgid "Based on the work of Paint.NET:"
+msgstr "基於Paint.NET專案:"
+
+#: Pinta/Dialogs/AboutDialog.cs:137
+msgid "Using some icons from:"
+msgstr "由此取用一些圖示:"
+
+#: Pinta/Dialogs/AboutDialog.cs:249
+msgid "About Pinta"
+msgstr "關於 Pinta"
+
+#: Pinta/Dialogs/AboutDialog.cs:267
+msgid "Version Info"
+msgstr "版本信息"
+
#: BulgeEffect dialog
#: FrostedGlassEffect dialog
#: PolarInversionEffect dialog
@@ -1423,6 +1570,9 @@ msgstr "提示:要獲得最佳效果,首先使用選取工具選取每隻眼
#~ msgid "%"
#~ msgstr "%"
+#~ msgid "Continue without saving"
+#~ msgstr "繼續而不儲存"
+
#~ msgid "X :"
#~ msgstr "X:"
@@ -1431,3 +1581,29 @@ msgstr "提示:要獲得最佳效果,首先使用選取工具選取每隻眼
#~ msgid "Tip : Right-click to remove control points."
#~ msgstr "提示:按滑鼠右鍵刪除控制點。"
+
+#~ msgid "Fill mode"
+#~ msgstr "填充模式"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before creating a new one?"
+#~ msgstr "在開啟新檔案前,儲存變更到圖片檔 \"{0}\" 中?"
+
+#, csharp-format
+#~ msgid "Save the changes to image \"{0}\" before opening a new image?"
+#~ msgstr "在開啟新圖片檔前,儲存變更到圖片檔 \"{0}\" 中?"
+
+#~ msgid "OpenRaster image (*.ora)"
+#~ msgstr "OpenRaster格式的圖片 (*.ora)"
+
+#~ msgid "Normal blending / Overwrite blending"
+#~ msgstr "正常混合/覆蓋混合"
+
+#~ msgid "Antialiasing"
+#~ msgstr "反鋸齒"
+
+#~ msgid "X:"
+#~ msgstr "X:"
+
+#~ msgid "Y:"
+#~ msgstr "Y:"
diff --git a/po/messages.pot b/po/messages.pot
index 8ea8d21..1c54383 100644
--- a/po/messages.pot
+++ b/po/messages.pot
@@ -225,8 +225,7 @@ msgid "Move Layer Down"
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:74
-#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
-msgid "Layer Properties"
+msgid "Layer Properties..."
msgstr ""
#: Pinta.Core/Actions/LayerActions.cs:156 Pinta/DialogHandlers.cs:396
@@ -403,6 +402,11 @@ msgstr ""
msgid "GIMP palette (*.gpl)"
msgstr ""
+#: Pinta.Core/Managers/WorkspaceManager.cs:91
+#, csharp-format
+msgid "Unsaved Image {0}"
+msgstr ""
+
#: Pinta.Core/Managers/WorkspaceManager.cs:151
msgid "Background"
msgstr ""
@@ -721,12 +725,16 @@ msgstr ""
msgid "label"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:146
-msgid "X:"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:75
+msgid "Choose Primary Color"
+msgstr ""
+
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:89
+msgid "Choose Secondary Color"
msgstr ""
-#: Pinta.Gui.Widgets/gtk-gui/Pinta.Gui.Widgets.PointPickerWidget.cs:154
-msgid "Y:"
+#: Pinta.Gui.Widgets/Widgets/ColorPaletteWidget.cs:112
+msgid "Choose Palette Color"
msgstr ""
#: Pinta.Tools/PanTool.cs:38
@@ -1148,6 +1156,10 @@ msgstr ""
msgid "New Image Size "
msgstr ""
+#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:44 Pinta/DialogHandlers.cs:316
+msgid "Layer Properties"
+msgstr ""
+
#: Pinta/gtk-gui/Pinta.LayerPropertiesDialog.cs:62
msgid "Name:"
msgstr ""
@@ -1160,7 +1172,11 @@ msgstr ""
msgid "Opacity:"
msgstr ""
-#: Pinta/MainWindow.cs:448
+#: Pinta/MainWindow.cs:365 Pinta/MainWindow.cs:381
+msgid "..."
+msgstr ""
+
+#: Pinta/MainWindow.cs:450
msgid "_File"
msgstr ""
diff --git a/readme.txt b/readme.txt
index ae16f8b..3619cf9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -31,7 +31,7 @@ Linux Build and Installation Instructions:
Building Pinta requires the follow software:
mono mono-xbuild automake autoconf libmono-cairo2.0-cil gtk-sharp2
-Pinta only supports version 2.4 or higher of Mono. For Ubuntu, this means 10.04 or higher is required.
+Pinta only supports version 2.8 or higher of Mono.
To build Pinta, run:
./autogen.sh
--
pinta
More information about the Pkg-cli-apps-commits
mailing list