summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--COPYING674
-rw-r--r--ChangeLog1
-rw-r--r--INSTALL365
-rw-r--r--Makefile.am17
-rw-r--r--Makefile.in716
-rw-r--r--NEWS230
-rw-r--r--README1
-rw-r--r--aclocal.m42153
-rwxr-xr-xautogen.sh21
-rwxr-xr-xconfigure8161
-rw-r--r--configure.ac67
-rw-r--r--data/Makefile.am23
-rw-r--r--data/Makefile.in721
-rw-r--r--data/icons/Makefile.am27
-rw-r--r--data/icons/Makefile.in383
-rw-r--r--data/icons/hicolor_actions_16x16_object-crop.pngbin0 -> 789 bytes
-rw-r--r--data/icons/hicolor_actions_22x22_object-crop.pngbin0 -> 1132 bytes
-rw-r--r--data/icons/hicolor_actions_24x24_object-crop.pngbin0 -> 1171 bytes
-rw-r--r--data/icons/hicolor_actions_48x48_object-crop.pngbin0 -> 3271 bytes
-rw-r--r--data/icons/hicolor_actions_scalable_object-crop.svg826
-rw-r--r--data/simple-scan.163
-rw-r--r--data/simple-scan.desktop.in10
-rw-r--r--data/simple-scan.schemas.in199
-rw-r--r--data/simple-scan.ui973
-rwxr-xr-xdepcomp630
-rw-r--r--gnome-doc-utils.make655
-rw-r--r--help/C/adf.page18
-rw-r--r--help/C/crop.page24
-rw-r--r--help/C/dpi.page15
-rw-r--r--help/C/edit.page15
-rw-r--r--help/C/email.page21
-rw-r--r--help/C/index.page26
-rw-r--r--help/C/legal.xml9
-rw-r--r--help/C/print.page14
-rw-r--r--help/C/rotate.page15
-rw-r--r--help/C/save.page32
-rw-r--r--help/C/scanner.page19
-rw-r--r--help/C/scanning.page50
-rw-r--r--help/Makefile.am23
-rw-r--r--help/Makefile.in934
-rwxr-xr-xinstall-sh520
-rwxr-xr-xmissing376
-rwxr-xr-xmkinstalldirs162
-rw-r--r--po/LINGUAS40
-rw-r--r--po/Makefile.in.in217
-rw-r--r--po/POTFILES.in9
-rw-r--r--po/af.po579
-rw-r--r--po/ar.po597
-rw-r--r--po/ast.po603
-rw-r--r--po/bg.po583
-rw-r--r--po/ca.po591
-rw-r--r--po/cs.po580
-rw-r--r--po/da.po581
-rw-r--r--po/de.po646
-rw-r--r--po/el.po633
-rw-r--r--po/en_GB.po622
-rw-r--r--po/es.po640
-rw-r--r--po/eu.po579
-rw-r--r--po/fi.po585
-rw-r--r--po/fr.po622
-rw-r--r--po/gl.po616
-rw-r--r--po/he.po619
-rw-r--r--po/hr.po579
-rw-r--r--po/hu.po620
-rw-r--r--po/it.po641
-rw-r--r--po/ja.po582
-rw-r--r--po/lt.po580
-rw-r--r--po/ms.po579
-rw-r--r--po/nb.po581
-rw-r--r--po/nl.po638
-rw-r--r--po/pl.po607
-rw-r--r--po/pt.po579
-rw-r--r--po/pt_BR.po628
-rw-r--r--po/ro.po606
-rw-r--r--po/ru.po603
-rw-r--r--po/sk.po616
-rw-r--r--po/sl.po623
-rw-r--r--po/sr.po602
-rw-r--r--po/sv.po625
-rw-r--r--po/te.po579
-rw-r--r--po/tr.po591
-rw-r--r--po/uk.po619
-rw-r--r--po/vi.po590
-rw-r--r--po/zh_CN.po608
-rw-r--r--simple-scan.doap21
-rw-r--r--src/Makefile.am35
-rw-r--r--src/Makefile.in661
-rw-r--r--src/book-view.c743
-rw-r--r--src/book-view.h65
-rw-r--r--src/book.c466
-rw-r--r--src/book.h60
-rw-r--r--src/page-view.c1170
-rw-r--r--src/page-view.h79
-rw-r--r--src/page.c951
-rw-r--r--src/page.h121
-rw-r--r--src/scanner.c1630
-rw-r--r--src/scanner.h134
-rw-r--r--src/simple-scan.c633
-rw-r--r--src/ui.c1648
-rw-r--r--src/ui.h71
101 files changed, 50896 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..c2fc527
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Robert Ancell <robert.ancell@canonical.com>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..3b9700e
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1 @@
+See bzr+ssh://bazaar.launchpad.net/~robert-ancell/simple-scan/trunk/ for the revision history \ No newline at end of file
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..7d1c323
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,365 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..0599e22
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,17 @@
+SUBDIRS = src data help po
+
+EXTRA_DIST = \
+ autogen.sh \
+ simple-scan.doap
+
+DISTCLEANFILES = \
+ Makefile.in \
+ aclocal.m4 \
+ configure \
+ depcomp \
+ gnome-doc-utils.make \
+ install-sh \
+ missing \
+ mkinstalldirs \
+ omf.make \
+ xmldocs.make
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..5cdac61
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,716 @@
+# 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.
+
+@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 = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
+ ChangeLog INSTALL NEWS depcomp install-sh missing \
+ mkinstalldirs
+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 = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+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)"; }; }
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DOC_USER_FORMATS = @DOC_USER_FORMATS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HELP_DIR = @HELP_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OMF_DIR = @OMF_DIR@
+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@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMPLE_SCAN_CFLAGS = @SIMPLE_SCAN_CFLAGS@
+SIMPLE_SCAN_LIBS = @SIMPLE_SCAN_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+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@
+SUBDIRS = src data help po
+EXTRA_DIST = \
+ autogen.sh \
+ simple-scan.doap
+
+DISTCLEANFILES = \
+ Makefile.in \
+ aclocal.m4 \
+ configure \
+ depcomp \
+ gnome-doc-utils.make \
+ install-sh \
+ missing \
+ mkinstalldirs \
+ omf.make \
+ xmldocs.make
+
+all: all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu 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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+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
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || 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-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+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)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -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-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
+ distclean distclean-generic distclean-tags 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 installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# 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/NEWS b/NEWS
new file mode 100644
index 0000000..f084054
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,230 @@
+Overview of changes in simple-scan 0.9.10
+
+ * Change default scan direction to top-to-bottom
+ * Call sane_cancel after each document, not duing multi page scans
+ * Set X-GNOME-Gettext-Domain in .desktop file
+ * Fix memory leak in page_set_scan_area()
+ * Fix read buffering when reading large images
+ * Fix moving crop on pages after first
+ * Load color profiles for scanner and save them in output files
+ * Fix broken logic in picking nearest supported scan resolution
+ * Add save button back into toolbar
+ * Put text beside crop toolbutton
+ * Merge document type into scan menu
+
+Overview of changes in simple-scan 0.9.9
+
+ * Fix crop rotation
+ * Improve crop outline so visible on more scanned documents
+ * Make preferences window fixed size
+ * Add page size selection
+
+Overview of changes in simple-scan 0.9.8
+
+ * Open page in image viewer when double clicking on it
+ * Use custom crop icon for crop toolbutton
+ * Use Gtk theme when painting focus on selected page
+ * Added scan sources seen on propietary brother3 driver
+ * Explicitly set flatbed source as not all drivers support automatic sources
+ * Add preferences options for which page side to scan
+ * Reduce shading on crop overlay
+ * Remove save and preferences buttons from toolbar
+ * Make crop toolbar button a toggle
+ * Fix bugs in crop resizing
+ * Compress PDF images
+
+Overview of changes in simple-scan 0.9.7
+
+ * Fix crash when deleting page from multi-page document
+ * Add icon into help dialog
+ * Update misleading description of PNG in help file
+
+Overview of changes in simple-scan 0.9.6
+
+ * Show PDF files by default in save dialog
+ * Set default save location to Documents directory
+ * Remember save location
+ * Attach JPEG files when emailing photos
+ * Make stop button only sensitive when scanning
+ * Correctly store default page orientation for first page
+ * Optimise rendering
+ * Show page throbber for pages following the first one
+ * Fix bug where selecting scan before devices are detected would sometime fail
+ * Don't move focus to selected page when moving the scrollbar
+ * Make sure USB scanners are automatically selected when plugging in
+
+Overview of changes in simple-scan 0.9.5
+
+ * Fix crash when scanning with no detected scanners
+ * Make Ctrl+N shortcut for New Document
+ * Made Help>Contents menu translatable
+ * Change resolution options in settings to 75, 150, 300, 600, 1200, 2400 dpi
+ * Change text default resolution to 150 dpi, photo to 300 dpi
+ * Set minimum window document display height
+ * Pick nearest available DPI setting for drivers that only support fixed DPIs
+ * Fix crash selecting scanner from command line
+ * Scale pages in preview so they match physical size, not pixel size
+
+Overview of changes in simple-scan 0.9.4
+
+ * Disable compression in scanner when supported
+ * Improved scan mode tooltip (Jeroen Hoek)
+ * Log to ~/.cache/simple-scan/simple-scan.log
+
+Overview of changes in simple-scan 0.9.3
+
+ * Default to photo scanning mode
+ * Rotate crop with page
+ * Clip crop when rotating it
+ * Set crop menu radio buttons when enabling crop from the toolbar
+ * Add tooltips for preference,rotate,crop toolbar buttons
+ * Added a stop toolbutton
+
+Overview of changes in simple-scan 0.9.2
+
+ * Add "ADF Front" to the list of possible ADF sources
+ * Always scan using maximum available area
+ * Call sane_cancel() after each page
+ * Don't start new pages when already scanning
+
+Overview of changes in simple-scan 0.9.1
+
+ * Fix distorted scans when require more than one read per line
+
+Overview of changes in simple-scan 0.9.0
+
+ * Fixed some bugs where blank pages were left after failed scans, pages
+ were incorrectly replaced
+ * Removed replace document on each scan from preferences (always append)
+ * Make scan resolution configurable in preferences dialog
+ * Show list of supported formats in save dialog and update extension based on
+ them
+ * Add Document>Email menuitem (Ctrl+E)
+ * Add Ctrl+F short cut to scan from feeder
+ * Added help
+
+Overview of changes in simple-scan 0.8.2
+
+ * Make toolbar scan button "important" so it shows button text
+ * Add crop toolbar button
+ * Compile with standard SANE, not Debian modified SANE
+ * Select ADF source when doing ADF scan
+ * Only rescan for devices when USB add/remove events occur
+ * Don't cache list of devices (can lead to duplicate entries as devices can
+ change names as they change USB ports)
+ * Remember page dimensions between application instances
+ * Improved debug logging
+ * Make build process use AM_SILENT_RULES
+ * Added man page from Alessio Treglia
+
+Overview of changes in simple-scan 0.8.1
+
+ * Connect scan from feeder button in toolbar
+ * Support custom crop
+ * Show page with animation while waiting for scan data
+ * Fix scrolling to new page when page added
+ * Save JPEG images as foo.jpg not foo.jpeg
+ * Check for libsane in build system
+ * Added Launchpad translations: eu, fi, gl, he, pt, te, uk, vi
+ * Updated Luanchpad translations: (many)
+
+Overview of changes in simple-scan 0.8.0
+
+ * Remember page rotation
+ * Add new document button
+ * Added Launchpad translations: af, ar, cs, da, el, en_GB, es, hr, hu, it, ja,
+ lt, ms, nb, pl, pt_BR, ru, sk, sl, sr, sv, tr,
+ zh_CN
+ * Updated Launchpad translations: fr, ro
+ * Added scrollbar for page navigation
+ * Try alternative names for scan mode to handle non-standard drivers
+
+Overview of changes in simple-scan 0.7.6
+
+ * Remember window size
+ * Made .desktop file translatable
+ * Added gconf schema
+ * Added Launchpad translations: ast, nl
+
+Overview of changes in simple-scan 0.7.5
+
+ * When displaying a scan error have a button to open preferences to change
+ scanner
+ * Connect both Ctrl+Q and Ctrl+W to close window
+ * Add tooltips to the menubar
+ * Install translations correctly
+
+Overview of changes in simple-scan 0.7.4
+
+ * Connect toolbar scan button
+ * Save multi page documents as multiple jpeg or png images
+ * Move document type into menubar
+ * Add cancel scan menu item (escape key)
+ * Add shortcut for single page scan (ctrl+1)
+ * Disable debugging by default, run with --debug to see the messages
+ * Pick locally connected scanners by default (and only use webcams as a last
+ resort)
+ * Added Launchpad translations: bg, ca, de
+ * Updated Launchpad translations: fr, ro
+
+Overview of changes in simple-scan 0.7.3
+
+ * Redesigned UI
+ * Removed test code that triggered authorization on each scan
+ * Add email action
+ * Added Launchpad translations: ro, fr
+
+Overview of changes in simple-scan 0.7.2
+
+ * Detect remote scanners
+ * Show authorization dialog for scanners
+
+Overview of changes in simple-scan 0.7.1
+
+ * Fix rotation and scaling when printing
+
+Overview of changes in simple-scan 0.7.0
+
+ * Scan text document in "Lineart" mode
+ * Add crop support
+ * Make default window larger
+ * Add page navigation buttons
+ * Zooming disabled - needs more work
+
+Overview of changes in simple-scan 0.6.4
+
+ * Support multi-pass scanners
+ * Show white page on startup
+ * Add border around scanned page
+ * Add menu bar
+ * Support multiple page scanning
+ * Allow page deletion
+ * Add page zooming and panning
+ * Use standard scanner icon
+
+Overview of changes in simple-scan 0.6.3
+
+ * Support non-8 bit scanners
+ * Fix DPI setting for various scanner types
+ * Center non-scaled scans
+ * Abort if cannot load UI
+
+Overview of changes in simple-scan 0.6.2
+
+ * Add command-line arguments
+ * Warn if no scanners detected on startup
+ * Report errors when failing to scan
+ * Support .ps output format
+ * Choose dpi and default output format based on document type
+ * Remember document type setting
+ * Make translatable
+
+Overview of changes in simple-scan 0.6.1
+
+ * Install .desktop file
+ * Close output streams when finished writing
+ * Handle not being able to open scan device
+
+Overview of changes in simple-scan 0.6.0
+
+ * Initial release
diff --git a/README b/README
new file mode 100644
index 0000000..f97127b
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+https://launchpad.net/simple-scan
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..828bdf5
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,2153 @@
+# 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'.])])
+
+dnl AM_GCONF_SOURCE_2
+dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
+dnl (i.e. pass to gconftool-2
+dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
+dnl you should install foo.schemas files
+dnl
+
+AC_DEFUN([AM_GCONF_SOURCE_2],
+[
+ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+ else
+ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+ fi
+
+ AC_ARG_WITH([gconf-source],
+ AC_HELP_STRING([--with-gconf-source=sourceaddress],
+ [Config database for installing schema files.]),
+ [GCONF_SCHEMA_CONFIG_SOURCE="$withval"],)
+
+ AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
+ AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
+
+ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+ fi
+
+ AC_ARG_WITH([gconf-schema-file-dir],
+ AC_HELP_STRING([--with-gconf-schema-file-dir=dir],
+ [Directory for installing schema files.]),
+ [GCONF_SCHEMA_FILE_DIR="$withval"],)
+
+ AC_SUBST(GCONF_SCHEMA_FILE_DIR)
+ AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
+
+ AC_ARG_ENABLE(schemas-install,
+ AC_HELP_STRING([--disable-schemas-install],
+ [Disable the schemas installation]),
+ [case ${enableval} in
+ yes|no) ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-install]) ;;
+ esac])
+ AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
+])
+
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl.
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+ [AC_CHECK_HEADERS([locale.h])
+ if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+ dnl NLS is obligatory
+ [USE_NLS=yes
+ AC_SUBST(USE_NLS)
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ AC_CHECK_HEADER(libintl.h,
+ [gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return !ngettext ("","", 1)],
+ gt_cv_func_ngettext_libc=yes,
+ gt_cv_func_ngettext_libc=no)
+ ])
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return !dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes,
+ gt_cv_func_dgettext_libc=no)
+ ])
+ fi
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$gt_cv_func_ngettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CHECK_LIB(intl, ngettext,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes)])])
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ AC_MSG_CHECKING([if -liconv is needed to use gettext])
+ AC_MSG_RESULT([])
+ AC_CHECK_LIB(intl, ngettext,
+ [AC_CHECK_LIB(intl, dcgettext,
+ [gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv],
+ :,-liconv)],
+ :,-liconv)
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext and ngettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT,1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ AC_CHECK_FUNCS(dcgettext)
+ MSGFMT_OPTS=
+ AC_MSG_CHECKING([if msgfmt accepts -c])
+ GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+ AC_SUBST(MSGFMT_OPTS)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share and
+ dnl and CATOBJEXT=.gmo in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac])
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+ ])
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [always defined to indicate that i18n is enabled])
+ fi
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is not GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.in.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(PO_IN_DATADIR_TRUE)
+ AC_SUBST(PO_IN_DATADIR_FALSE)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+ [AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+
+ GLIB_LC_MESSAGES
+ GLIB_WITH_NLS
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+ localedir=`eval echo "${libdir}/locale"`
+else
+ localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+ [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
+#
+# Create a temporary file with TEST-FILE as its contents and pass the
+# file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with
+# 0 and perform ACTION-IF-FAIL for any other exit status.
+AC_DEFUN([GLIB_RUN_PROG],
+[cat >conftest.foo <<_ACEOF
+$2
+_ACEOF
+if AC_RUN_LOG([$1 conftest.foo]); then
+ m4_ifval([$3], [$3], [:])
+m4_ifvaln([$4], [else $4])dnl
+echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
+sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
+fi])
+
+
+# gnome-common.m4
+#
+
+dnl GNOME_COMMON_INIT
+
+AC_DEFUN([GNOME_COMMON_INIT],
+[
+ dnl this macro should come after AC_CONFIG_MACRO_DIR
+ AC_BEFORE([AC_CONFIG_MACRO_DIR], [$0])
+
+ dnl ensure that when the Automake generated makefile calls aclocal,
+ dnl it honours the $ACLOCAL_FLAGS environment variable
+ ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}"
+ if test -n "$ac_macro_dir"; then
+ ACLOCAL_AMFLAGS="-I $ac_macro_dir $ACLOCAL_AMFLAGS"
+ fi
+
+ AC_SUBST([ACLOCAL_AMFLAGS])
+])
+
+AC_DEFUN([GNOME_DEBUG_CHECK],
+[
+ AC_ARG_ENABLE([debug],
+ AC_HELP_STRING([--enable-debug],
+ [turn on debugging]),,
+ [enable_debug=no])
+
+ if test x$enable_debug = xyes ; then
+ AC_DEFINE(GNOME_ENABLE_DEBUG, 1,
+ [Enable additional debugging at the expense of performance and size])
+ fi
+])
+
+dnl GNOME_MAINTAINER_MODE_DEFINES ()
+dnl define DISABLE_DEPRECATED
+dnl
+AC_DEFUN([GNOME_MAINTAINER_MODE_DEFINES],
+[
+ AC_REQUIRE([AM_MAINTAINER_MODE])
+
+ DISABLE_DEPRECATED=""
+ if test $USE_MAINTAINER_MODE = yes; then
+ DOMAINS="G ATK PANGO GDK GDK_PIXBUF GTK GCONF BONOBO BONOBO_UI GNOME LIBGLADE VTE GNOME_VFS WNCK LIBSOUP"
+ for DOMAIN in $DOMAINS; do
+ DISABLE_DEPRECATED="$DISABLE_DEPRECATED -D${DOMAIN}_DISABLE_DEPRECATED -D${DOMAIN}_DISABLE_SINGLE_INCLUDES"
+ done
+ fi
+
+ AC_SUBST(DISABLE_DEPRECATED)
+])
+
+dnl GNOME_COMPILE_WARNINGS
+dnl Turn on many useful compiler warnings
+dnl For now, only works on GCC
+AC_DEFUN([GNOME_COMPILE_WARNINGS],[
+ dnl ******************************
+ dnl More compiler warnings
+ dnl ******************************
+
+ AC_ARG_ENABLE(compile-warnings,
+ AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
+ [Turn on compiler warnings]),,
+ [enable_compile_warnings="m4_default([$1],[yes])"])
+
+ warnCFLAGS=
+ if test "x$GCC" != xyes; then
+ enable_compile_warnings=no
+ fi
+
+ warning_flags=
+ realsave_CFLAGS="$CFLAGS"
+
+ case "$enable_compile_warnings" in
+ no)
+ warning_flags=
+ ;;
+ minimum)
+ warning_flags="-Wall"
+ ;;
+ yes)
+ warning_flags="-Wall -Wmissing-prototypes"
+ ;;
+ maximum|error)
+ warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+ CFLAGS="$warning_flags $CFLAGS"
+ for option in -Wno-sign-compare; do
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $option"
+ AC_MSG_CHECKING([whether gcc understands $option])
+ AC_TRY_COMPILE([], [],
+ has_option=yes,
+ has_option=no,)
+ CFLAGS="$SAVE_CFLAGS"
+ AC_MSG_RESULT($has_option)
+ if test $has_option = yes; then
+ warning_flags="$warning_flags $option"
+ fi
+ unset has_option
+ unset SAVE_CFLAGS
+ done
+ unset option
+ if test "$enable_compile_warnings" = "error" ; then
+ warning_flags="$warning_flags -Werror"
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
+ ;;
+ esac
+ CFLAGS="$realsave_CFLAGS"
+ AC_MSG_CHECKING(what warning flags to pass to the C compiler)
+ AC_MSG_RESULT($warning_flags)
+
+ AC_ARG_ENABLE(iso-c,
+ AC_HELP_STRING([--enable-iso-c],
+ [Try to warn if code is not ISO C ]),,
+ [enable_iso_c=no])
+
+ AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
+ complCFLAGS=
+ if test "x$enable_iso_c" != "xno"; then
+ if test "x$GCC" = "xyes"; then
+ case " $CFLAGS " in
+ *[\ \ ]-ansi[\ \ ]*) ;;
+ *) complCFLAGS="$complCFLAGS -ansi" ;;
+ esac
+ case " $CFLAGS " in
+ *[\ \ ]-pedantic[\ \ ]*) ;;
+ *) complCFLAGS="$complCFLAGS -pedantic" ;;
+ esac
+ fi
+ fi
+ AC_MSG_RESULT($complCFLAGS)
+
+ WARN_CFLAGS="$warning_flags $complCFLAGS"
+ AC_SUBST(WARN_CFLAGS)
+])
+
+dnl For C++, do basically the same thing.
+
+AC_DEFUN([GNOME_CXX_WARNINGS],[
+ AC_ARG_ENABLE(cxx-warnings,
+ AC_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
+ [Turn on compiler warnings.]),,
+ [enable_cxx_warnings="m4_default([$1],[minimum])"])
+
+ AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
+ warnCXXFLAGS=
+ if test "x$GXX" != xyes; then
+ enable_cxx_warnings=no
+ fi
+ if test "x$enable_cxx_warnings" != "xno"; then
+ if test "x$GXX" = "xyes"; then
+ case " $CXXFLAGS " in
+ *[\ \ ]-Wall[\ \ ]*) ;;
+ *) warnCXXFLAGS="-Wall -Wno-unused" ;;
+ esac
+
+ ## -W is not all that useful. And it cannot be controlled
+ ## with individual -Wno-xxx flags, unlike -Wall
+ if test "x$enable_cxx_warnings" = "xyes"; then
+ warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
+ fi
+ fi
+ fi
+ AC_MSG_RESULT($warnCXXFLAGS)
+
+ AC_ARG_ENABLE(iso-cxx,
+ AC_HELP_STRING([--enable-iso-cxx],
+ [Try to warn if code is not ISO C++ ]),,
+ [enable_iso_cxx=no])
+
+ AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
+ complCXXFLAGS=
+ if test "x$enable_iso_cxx" != "xno"; then
+ if test "x$GXX" = "xyes"; then
+ case " $CXXFLAGS " in
+ *[\ \ ]-ansi[\ \ ]*) ;;
+ *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
+ esac
+
+ case " $CXXFLAGS " in
+ *[\ \ ]-pedantic[\ \ ]*) ;;
+ *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
+ esac
+ fi
+ fi
+ AC_MSG_RESULT($complCXXFLAGS)
+
+ WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
+ AC_SUBST(WARN_CXXFLAGS)
+])
+
+dnl Do not call GNOME_DOC_DEFINES directly. It is split out from
+dnl GNOME_DOC_INIT to allow gnome-doc-utils to bootstrap off itself.
+AC_DEFUN([GNOME_DOC_DEFINES],
+[
+AC_ARG_WITH([help-dir],
+ AC_HELP_STRING([--with-help-dir=DIR], [path to help docs]),,
+ [with_help_dir='${datadir}/gnome/help'])
+HELP_DIR="$with_help_dir"
+AC_SUBST(HELP_DIR)
+
+AC_ARG_WITH([omf-dir],
+ AC_HELP_STRING([--with-omf-dir=DIR], [path to OMF files]),,
+ [with_omf_dir='${datadir}/omf'])
+OMF_DIR="$with_omf_dir"
+AC_SUBST(OMF_DIR)
+
+AC_ARG_WITH([help-formats],
+ AC_HELP_STRING([--with-help-formats=FORMATS], [list of formats]),,
+ [with_help_formats=''])
+DOC_USER_FORMATS="$with_help_formats"
+AC_SUBST(DOC_USER_FORMATS)
+
+AC_ARG_ENABLE([scrollkeeper],
+ [AC_HELP_STRING([--disable-scrollkeeper],
+ [do not make updates to the scrollkeeper database])],,
+ enable_scrollkeeper=yes)
+AM_CONDITIONAL([ENABLE_SK],[test "$gdu_cv_have_gdu" = "yes" -a "$enable_scrollkeeper" = "yes"])
+
+dnl disable scrollkeeper automatically for distcheck
+DISTCHECK_CONFIGURE_FLAGS="--disable-scrollkeeper $DISTCHECK_CONFIGURE_FLAGS"
+AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
+
+AM_CONDITIONAL([HAVE_GNOME_DOC_UTILS],[test "$gdu_cv_have_gdu" = "yes"])
+])
+
+# GNOME_DOC_INIT ([MINIMUM-VERSION],[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
+#
+AC_DEFUN([GNOME_DOC_INIT],
+[AC_REQUIRE([AC_PROG_LN_S])dnl
+
+ifelse([$1],,[gdu_cv_version_required=0.3.2],[gdu_cv_version_required=$1])
+
+AC_MSG_CHECKING([gnome-doc-utils >= $gdu_cv_version_required])
+PKG_CHECK_EXISTS([gnome-doc-utils >= $gdu_cv_version_required],
+ [gdu_cv_have_gdu=yes],[gdu_cv_have_gdu=no])
+
+if test "$gdu_cv_have_gdu" = "yes"; then
+ AC_MSG_RESULT([yes])
+ ifelse([$2],,[:],[$2])
+else
+ AC_MSG_RESULT([no])
+ ifelse([$3],,[AC_MSG_ERROR([gnome-doc-utils >= $gdu_cv_version_required not found])],[$3])
+fi
+
+GNOME_DOC_DEFINES
+])
+
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 40 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL], [
+AC_PREREQ([2.50])dnl
+AC_REQUIRE([AM_NLS])dnl
+
+case "$am__api_version" in
+ 1.[01234])
+ AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
+ ;;
+ *)
+ ;;
+esac
+
+if test -n "$1"; then
+ AC_MSG_CHECKING([for intltool >= $1])
+
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+ [INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ ]
+ AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+ test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+ AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.])
+fi
+
+AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update])
+AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge])
+AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract])
+if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
+ AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.])
+fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+ INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+
+_IT_SUBST(INTLTOOL_DESKTOP_RULE)
+_IT_SUBST(INTLTOOL_DIRECTORY_RULE)
+_IT_SUBST(INTLTOOL_KEYS_RULE)
+_IT_SUBST(INTLTOOL_PROP_RULE)
+_IT_SUBST(INTLTOOL_OAF_RULE)
+_IT_SUBST(INTLTOOL_PONG_RULE)
+_IT_SUBST(INTLTOOL_SERVER_RULE)
+_IT_SUBST(INTLTOOL_SHEET_RULE)
+_IT_SUBST(INTLTOOL_SOUNDLIST_RULE)
+_IT_SUBST(INTLTOOL_UI_RULE)
+_IT_SUBST(INTLTOOL_XAM_RULE)
+_IT_SUBST(INTLTOOL_KBD_RULE)
+_IT_SUBST(INTLTOOL_XML_RULE)
+_IT_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+_IT_SUBST(INTLTOOL_CAVES_RULE)
+_IT_SUBST(INTLTOOL_SCHEMAS_RULE)
+_IT_SUBST(INTLTOOL_THEME_RULE)
+_IT_SUBST(INTLTOOL_SERVICE_RULE)
+_IT_SUBST(INTLTOOL_POLICY_RULE)
+
+# Check the gettext tools to make sure they are GNU
+AC_PATH_PROG(XGETTEXT, xgettext)
+AC_PATH_PROG(MSGMERGE, msgmerge)
+AC_PATH_PROG(MSGFMT, msgfmt)
+AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
+ AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+fi
+xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
+mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
+mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
+if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
+ AC_MSG_ERROR([GNU gettext tools not found; required for intltool])
+fi
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+ AC_MSG_ERROR([perl not found])
+fi
+AC_MSG_CHECKING([for perl >= 5.8.1])
+$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+if test $? -ne 0; then
+ AC_MSG_ERROR([perl 5.8.1 is required for intltool])
+else
+ IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+ AC_MSG_RESULT([$IT_PERL_VERSION])
+fi
+if test "x$2" != "xno-xml"; then
+ AC_MSG_CHECKING([for XML::Parser])
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+ AC_MSG_RESULT([ok])
+ else
+ AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+ fi
+fi
+
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+AC_SUBST(ALL_LINGUAS)
+
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[]],
+ [[extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr]])],
+ [DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share
+ dnl in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [DATADIRNAME=share], [DATADIRNAME=lib])
+ ;;
+ *)
+ [DATADIRNAME=lib]
+ ;;
+ esac])
+fi
+AC_SUBST(DATADIRNAME)
+
+IT_PO_SUBDIR([po])
+
+])
+
+
+# IT_PO_SUBDIR(DIRNAME)
+# ---------------------
+# All po subdirs have to be declared with this macro; the subdir "po" is
+# declared by IT_PROG_INTLTOOL.
+#
+AC_DEFUN([IT_PO_SUBDIR],
+[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
+dnl
+dnl The following CONFIG_COMMANDS should be exetuted at the very end
+dnl of config.status.
+AC_CONFIG_COMMANDS_PRE([
+ AC_CONFIG_COMMANDS([$1/stamp-it], [
+ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then
+ AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.])
+ fi
+ rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
+ >"$1/stamp-it.tmp"
+ [sed '/^#/d
+ s/^[[].*] *//
+ /^[ ]*$/d
+ '"s|^| $ac_top_srcdir/|" \
+ "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
+ ]
+ [sed '/^POTFILES =/,/[^\\]$/ {
+ /^POTFILES =/!d
+ r $1/POTFILES
+ }
+ ' "$1/Makefile.in" >"$1/Makefile"]
+ rm -f "$1/Makefile.tmp"
+ mv "$1/stamp-it.tmp" "$1/stamp-it"
+ ])
+])dnl
+])
+
+# _IT_SUBST(VARIABLE)
+# -------------------
+# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
+#
+AC_DEFUN([_IT_SUBST],
+[
+AC_SUBST([$1])
+m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
+]
+)
+
+# deprecated macros
+AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+# A hint is needed for aclocal from Automake <= 1.9.4:
+# AC_DEFUN([AC_PROG_INTLTOOL], ...)
+
+
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([AM_NLS],
+[
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE(nls,
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT($USE_NLS)
+ AC_SUBST(USE_NLS)
+])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott@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`
+])
+
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 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 4
+
+# This was merged into AC_PROG_CC in Autoconf.
+
+AU_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+AC_DIAGNOSE([obsolete], [$0:
+ your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
+ `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when
+ you adjust the code. You can also remove the above call to
+ AC_PROG_CC if you already called it elsewhere.])
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+])
+AU_DEFUN([fp_PROG_CC_STDC])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 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 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 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 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 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 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# 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])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 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 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 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 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# 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])])
+
+# 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) 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 1
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# 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
new file mode 100755
index 0000000..8f3fc0d
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+PKG_NAME="simple_scan"
+REQUIRED_AUTOMAKE_VERSION=1.7
+
+(test -f $srcdir/configure.ac \
+ && test -d $srcdir/src) || {
+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+ echo " top-level simple-scan directory"
+ exit 1
+}
+
+which gnome-autogen.sh || {
+ echo "You need to install gnome-common from the GNOME CVS"
+ exit 1
+}
+USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
diff --git a/configure b/configure
new file mode 100755
index 0000000..1389a79
--- /dev/null
+++ b/configure
@@ -0,0 +1,8161 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.65.
+#
+#
+# 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
+test \$(( 1 + 1 )) = 2 || 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@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=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="configure.ac"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+MKINSTALLDIRS
+POSUB
+POFILES
+PO_IN_DATADIR_FALSE
+PO_IN_DATADIR_TRUE
+INTLLIBS
+INSTOBJEXT
+GMOFILES
+CATOBJEXT
+CATALOGS
+MSGFMT_OPTS
+GETTEXT_PACKAGE
+DATADIRNAME
+ALL_LINGUAS
+INTLTOOL_PERL
+GMSGFMT
+MSGFMT
+MSGMERGE
+XGETTEXT
+INTLTOOL_POLICY_RULE
+INTLTOOL_SERVICE_RULE
+INTLTOOL_THEME_RULE
+INTLTOOL_SCHEMAS_RULE
+INTLTOOL_CAVES_RULE
+INTLTOOL_XML_NOMERGE_RULE
+INTLTOOL_XML_RULE
+INTLTOOL_KBD_RULE
+INTLTOOL_XAM_RULE
+INTLTOOL_UI_RULE
+INTLTOOL_SOUNDLIST_RULE
+INTLTOOL_SHEET_RULE
+INTLTOOL_SERVER_RULE
+INTLTOOL_PONG_RULE
+INTLTOOL_OAF_RULE
+INTLTOOL_PROP_RULE
+INTLTOOL_KEYS_RULE
+INTLTOOL_DIRECTORY_RULE
+INTLTOOL_DESKTOP_RULE
+INTLTOOL_EXTRACT
+INTLTOOL_MERGE
+INTLTOOL_UPDATE
+USE_NLS
+HAVE_GNOME_DOC_UTILS_FALSE
+HAVE_GNOME_DOC_UTILS_TRUE
+DISTCHECK_CONFIGURE_FLAGS
+ENABLE_SK_FALSE
+ENABLE_SK_TRUE
+DOC_USER_FORMATS
+OMF_DIR
+HELP_DIR
+LN_S
+SIMPLE_SCAN_LIBS
+SIMPLE_SCAN_CFLAGS
+PKG_CONFIG
+WARN_CFLAGS
+GCONF_SCHEMAS_INSTALL_FALSE
+GCONF_SCHEMAS_INSTALL_TRUE
+GCONF_SCHEMA_FILE_DIR
+GCONF_SCHEMA_CONFIG_SOURCE
+EGREP
+GREP
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+DISABLE_DEPRECATED
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+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
+enable_maintainer_mode
+enable_silent_rules
+enable_dependency_tracking
+with_gconf_source
+with_gconf_schema_file_dir
+enable_schemas_install
+enable_compile_warnings
+enable_iso_c
+with_help_dir
+with_omf_dir
+with_help_formats
+enable_scrollkeeper
+enable_nls
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PKG_CONFIG
+SIMPLE_SCAN_CFLAGS
+SIMPLE_SCAN_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}'
+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 this package 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/PACKAGE]
+ --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
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-schemas-install
+ Disable the schemas installation
+ --enable-compile-warnings=[no/minimum/yes/maximum/error]
+ Turn on compiler warnings
+ --enable-iso-c Try to warn if code is not ISO C
+ --disable-scrollkeeper do not make updates to the scrollkeeper database
+ --disable-nls do not use Native Language Support
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gconf-source=sourceaddress
+ Config database for installing schema files.
+ --with-gconf-schema-file-dir=dir
+ Directory for installing schema files.
+ --with-help-dir=DIR path to help docs
+ --with-omf-dir=DIR path to OMF files
+ --with-help-formats=FORMATS
+ list of formats
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ PKG_CONFIG path to pkg-config utility
+ SIMPLE_SCAN_CFLAGS
+ C compiler flags for SIMPLE_SCAN, overriding pkg-config
+ SIMPLE_SCAN_LIBS
+ linker flags for SIMPLE_SCAN, 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
+configure
+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. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+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 $as_me, 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=simple-scan
+ VERSION=0.9.10
+
+
+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"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+
+
+ DISABLE_DEPRECATED=""
+ if test $USE_MAINTAINER_MODE = yes; then
+ DOMAINS="G ATK PANGO GDK GDK_PIXBUF GTK GCONF BONOBO BONOBO_UI GNOME LIBGLADE VTE GNOME_VFS WNCK LIBSOUP"
+ for DOMAIN in $DOMAINS; do
+ DISABLE_DEPRECATED="$DISABLE_DEPRECATED -D${DOMAIN}_DISABLE_DEPRECATED -D${DOMAIN}_DISABLE_SINGLE_INCLUDES"
+ done
+ fi
+
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=0;;
+esac
+AM_BACKSLASH='\'
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+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
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc"
+ $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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="gcc"
+ $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_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ 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
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}cc"
+ $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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+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
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $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
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+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_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="$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
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ 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
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+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
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if test "${ac_cv_search_strerror+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_strerror=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if test "${ac_cv_search_strerror+set}" = set; then :
+ break
+fi
+done
+if test "${ac_cv_search_strerror+set}" = set; then :
+
+else
+ ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; 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; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+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
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc"
+ $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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="gcc"
+ $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_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ 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
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}cc"
+ $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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; 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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+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
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $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
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$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_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+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_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="$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
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ 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
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+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
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+
+ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+ else
+ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+ fi
+
+
+# Check whether --with-gconf-source was given.
+if test "${with_gconf_source+set}" = set; then :
+ withval=$with_gconf_source; GCONF_SCHEMA_CONFIG_SOURCE="$withval"
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&5
+$as_echo "Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6; }
+
+ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+ fi
+
+
+# Check whether --with-gconf-schema-file-dir was given.
+if test "${with_gconf_schema_file_dir+set}" = set; then :
+ withval=$with_gconf_schema_file_dir; GCONF_SCHEMA_FILE_DIR="$withval"
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&5
+$as_echo "Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&6; }
+
+ # Check whether --enable-schemas-install was given.
+if test "${enable_schemas_install+set}" = set; then :
+ enableval=$enable_schemas_install; case ${enableval} in
+ yes|no) ;;
+ *) as_fn_error "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5 ;;
+ esac
+fi
+
+ if test "$enable_schemas_install" != no; then
+ GCONF_SCHEMAS_INSTALL_TRUE=
+ GCONF_SCHEMAS_INSTALL_FALSE='#'
+else
+ GCONF_SCHEMAS_INSTALL_TRUE='#'
+ GCONF_SCHEMAS_INSTALL_FALSE=
+fi
+
+
+
+
+
+ # Check whether --enable-compile-warnings was given.
+if test "${enable_compile_warnings+set}" = set; then :
+ enableval=$enable_compile_warnings;
+else
+ enable_compile_warnings="yes"
+fi
+
+
+ warnCFLAGS=
+ if test "x$GCC" != xyes; then
+ enable_compile_warnings=no
+ fi
+
+ warning_flags=
+ realsave_CFLAGS="$CFLAGS"
+
+ case "$enable_compile_warnings" in
+ no)
+ warning_flags=
+ ;;
+ minimum)
+ warning_flags="-Wall"
+ ;;
+ yes)
+ warning_flags="-Wall -Wmissing-prototypes"
+ ;;
+ maximum|error)
+ warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+ CFLAGS="$warning_flags $CFLAGS"
+ for option in -Wno-sign-compare; do
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $option"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc understands $option" >&5
+$as_echo_n "checking whether gcc understands $option... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ has_option=yes
+else
+ has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$SAVE_CFLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_option" >&5
+$as_echo "$has_option" >&6; }
+ if test $has_option = yes; then
+ warning_flags="$warning_flags $option"
+ fi
+ unset has_option
+ unset SAVE_CFLAGS
+ done
+ unset option
+ if test "$enable_compile_warnings" = "error" ; then
+ warning_flags="$warning_flags -Werror"
+ fi
+ ;;
+ *)
+ as_fn_error "Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" "$LINENO" 5
+ ;;
+ esac
+ CFLAGS="$realsave_CFLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what warning flags to pass to the C compiler" >&5
+$as_echo_n "checking what warning flags to pass to the C compiler... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $warning_flags" >&5
+$as_echo "$warning_flags" >&6; }
+
+ # Check whether --enable-iso-c was given.
+if test "${enable_iso_c+set}" = set; then :
+ enableval=$enable_iso_c;
+else
+ enable_iso_c=no
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what language compliance flags to pass to the C compiler" >&5
+$as_echo_n "checking what language compliance flags to pass to the C compiler... " >&6; }
+ complCFLAGS=
+ if test "x$enable_iso_c" != "xno"; then
+ if test "x$GCC" = "xyes"; then
+ case " $CFLAGS " in
+ *\ \ -ansi\ \ *) ;;
+ *) complCFLAGS="$complCFLAGS -ansi" ;;
+ esac
+ case " $CFLAGS " in
+ *\ \ -pedantic\ \ *) ;;
+ *) complCFLAGS="$complCFLAGS -pedantic" ;;
+ esac
+ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $complCFLAGS" >&5
+$as_echo "$complCFLAGS" >&6; }
+
+ WARN_CFLAGS="$warning_flags $complCFLAGS"
+
+
+
+
+
+
+
+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 SIMPLE_SCAN" >&5
+$as_echo_n "checking for SIMPLE_SCAN... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$SIMPLE_SCAN_CFLAGS"; then
+ pkg_cv_SIMPLE_SCAN_CFLAGS="$SIMPLE_SCAN_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_SIMPLE_SCAN_CFLAGS=`$PKG_CONFIG --cflags "
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$SIMPLE_SCAN_LIBS"; then
+ pkg_cv_SIMPLE_SCAN_LIBS="$SIMPLE_SCAN_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_SIMPLE_SCAN_LIBS=`$PKG_CONFIG --libs "
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.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
+ SIMPLE_SCAN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+"`
+ else
+ SIMPLE_SCAN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$SIMPLE_SCAN_PKG_ERRORS" >&5
+
+ as_fn_error "Package requirements (
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+) were not met:
+
+$SIMPLE_SCAN_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 SIMPLE_SCAN_CFLAGS
+and SIMPLE_SCAN_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 SIMPLE_SCAN_CFLAGS
+and SIMPLE_SCAN_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
+ SIMPLE_SCAN_CFLAGS=$pkg_cv_SIMPLE_SCAN_CFLAGS
+ SIMPLE_SCAN_LIBS=$pkg_cv_SIMPLE_SCAN_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ :
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sane/sane.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sane/sane.h" "ac_cv_header_sane_sane_h" "$ac_includes_default"
+if test "x$ac_cv_header_sane_sane_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SANE_SANE_H 1
+_ACEOF
+
+else
+ as_fn_error "SANE not found" "$LINENO" 5
+fi
+
+done
+
+for ac_header in sane/saneopts.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sane/saneopts.h" "ac_cv_header_sane_saneopts_h" "$ac_includes_default"
+if test "x$ac_cv_header_sane_saneopts_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SANE_SANEOPTS_H 1
+_ACEOF
+
+else
+ as_fn_error "SANE not found" "$LINENO" 5
+fi
+
+done
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; 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, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+gdu_cv_version_required=0.3.2
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking gnome-doc-utils >= $gdu_cv_version_required" >&5
+$as_echo_n "checking gnome-doc-utils >= $gdu_cv_version_required... " >&6; }
+if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-doc-utils >= \$gdu_cv_version_required\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gnome-doc-utils >= $gdu_cv_version_required") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ gdu_cv_have_gdu=yes
+else
+ gdu_cv_have_gdu=no
+fi
+
+if test "$gdu_cv_have_gdu" = "yes"; 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; }
+ as_fn_error "gnome-doc-utils >= $gdu_cv_version_required not found" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-help-dir was given.
+if test "${with_help_dir+set}" = set; then :
+ withval=$with_help_dir;
+else
+ with_help_dir='${datadir}/gnome/help'
+fi
+
+HELP_DIR="$with_help_dir"
+
+
+
+# Check whether --with-omf-dir was given.
+if test "${with_omf_dir+set}" = set; then :
+ withval=$with_omf_dir;
+else
+ with_omf_dir='${datadir}/omf'
+fi
+
+OMF_DIR="$with_omf_dir"
+
+
+
+# Check whether --with-help-formats was given.
+if test "${with_help_formats+set}" = set; then :
+ withval=$with_help_formats;
+else
+ with_help_formats=''
+fi
+
+DOC_USER_FORMATS="$with_help_formats"
+
+
+# Check whether --enable-scrollkeeper was given.
+if test "${enable_scrollkeeper+set}" = set; then :
+ enableval=$enable_scrollkeeper;
+else
+ enable_scrollkeeper=yes
+fi
+
+ if test "$gdu_cv_have_gdu" = "yes" -a "$enable_scrollkeeper" = "yes"; then
+ ENABLE_SK_TRUE=
+ ENABLE_SK_FALSE='#'
+else
+ ENABLE_SK_TRUE='#'
+ ENABLE_SK_FALSE=
+fi
+
+
+DISTCHECK_CONFIGURE_FLAGS="--disable-scrollkeeper $DISTCHECK_CONFIGURE_FLAGS"
+
+
+ if test "$gdu_cv_have_gdu" = "yes"; then
+ HAVE_GNOME_DOC_UTILS_TRUE=
+ HAVE_GNOME_DOC_UTILS_FALSE='#'
+else
+ HAVE_GNOME_DOC_UTILS_TRUE='#'
+ HAVE_GNOME_DOC_UTILS_FALSE=
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+ # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+ enableval=$enable_nls; USE_NLS=$enableval
+else
+ USE_NLS=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+case "$am__api_version" in
+ 1.01234)
+ as_fn_error "Automake 1.5 or newer is required to use intltool" "$LINENO" 5
+ ;;
+ *)
+ ;;
+esac
+
+if test -n "0.35.0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.35.0" >&5
+$as_echo_n "checking for intltool >= 0.35.0... " >&6; }
+
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+ INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3`
+ INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5
+$as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; }
+ test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+ as_fn_error "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5
+fi
+
+# Extract the first word of "intltool-update", so it can be a program name with args.
+set dummy intltool-update; 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_INTLTOOL_UPDATE+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_UPDATE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # 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_INTLTOOL_UPDATE="$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
+INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE
+if test -n "$INTLTOOL_UPDATE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5
+$as_echo "$INTLTOOL_UPDATE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "intltool-merge", so it can be a program name with args.
+set dummy intltool-merge; 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_INTLTOOL_MERGE+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_MERGE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # 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_INTLTOOL_MERGE="$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
+INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE
+if test -n "$INTLTOOL_MERGE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5
+$as_echo "$INTLTOOL_MERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "intltool-extract", so it can be a program name with args.
+set dummy intltool-extract; 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_INTLTOOL_EXTRACT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_EXTRACT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # 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_INTLTOOL_EXTRACT="$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
+INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT
+if test -n "$INTLTOOL_EXTRACT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5
+$as_echo "$INTLTOOL_EXTRACT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then
+ as_fn_error "The intltool scripts were not found. Please install intltool." "$LINENO" 5
+fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
+ INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check the gettext tools to make sure they are GNU
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; 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_XGETTEXT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XGETTEXT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # 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_XGETTEXT="$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
+XGETTEXT=$ac_cv_path_XGETTEXT
+if test -n "$XGETTEXT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; 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_MSGMERGE+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MSGMERGE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # 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_MSGMERGE="$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
+MSGMERGE=$ac_cv_path_MSGMERGE
+if test -n "$MSGMERGE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; 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_MSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGFMT="$MSGFMT" # 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_MSGFMT="$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
+MSGFMT=$ac_cv_path_MSGFMT
+if test -n "$MSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then
+ as_fn_error "GNU gettext tools not found; required for intltool" "$LINENO" 5
+fi
+xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`"
+mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`"
+mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`"
+if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then
+ as_fn_error "GNU gettext tools not found; required for intltool" "$LINENO" 5
+fi
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; 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_INTLTOOL_PERL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $INTLTOOL_PERL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # 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_INTLTOOL_PERL="$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
+INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
+if test -n "$INTLTOOL_PERL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5
+$as_echo "$INTLTOOL_PERL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$INTLTOOL_PERL"; then
+ as_fn_error "perl not found" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5
+$as_echo_n "checking for perl >= 5.8.1... " >&6; }
+$INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1
+if test $? -ne 0; then
+ as_fn_error "perl 5.8.1 is required for intltool" "$LINENO" 5
+else
+ IT_PERL_VERSION="`$INTLTOOL_PERL -e \"printf '%vd', $^V\"`"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5
+$as_echo "$IT_PERL_VERSION" >&6; }
+fi
+if test "x" != "xno-xml"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5
+$as_echo_n "checking for XML::Parser... " >&6; }
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ else
+ as_fn_error "XML::Parser perl module is required for intltool" "$LINENO" 5
+ fi
+fi
+
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+
+
+# Set DATADIRNAME correctly if it is not set yet
+# (copied from glib-gettext.m4)
+if test -z "$DATADIRNAME"; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ DATADIRNAME=share
+else
+ case $host in
+ *-*-solaris*)
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+ DATADIRNAME=share
+else
+ DATADIRNAME=lib
+fi
+
+ ;;
+ *)
+ DATADIRNAME=lib
+ ;;
+ esac
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+
+
+
+GETTEXT_PACKAGE=simple-scan
+
+
+ for ac_header in locale.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LOCALE_H 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_locale_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_val_LC_MESSAGES=yes
+else
+ am_cv_val_LC_MESSAGES=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
+$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+
+ fi
+ fi
+ USE_NLS=yes
+
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = x""yes; then :
+ gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
+$as_echo_n "checking for ngettext in libc... " >&6; }
+if test "${gt_cv_func_ngettext_libc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_ngettext_libc=yes
+else
+ gt_cv_func_ngettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
+$as_echo "$gt_cv_func_ngettext_libc" >&6; }
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
+$as_echo_n "checking for dgettext in libc... " >&6; }
+if test "${gt_cv_func_dgettext_libc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !dgettext ("","")
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_dgettext_libc=yes
+else
+ gt_cv_func_dgettext_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
+$as_echo "$gt_cv_func_dgettext_libc" >&6; }
+ fi
+
+ if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+ for ac_func in bind_textdomain_codeset
+do :
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$gt_cv_func_ngettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
+$as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char bindtextdomain ();
+int
+main ()
+{
+return bindtextdomain ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_bindtextdomain=yes
+else
+ ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
+$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
+if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_ngettext=yes
+else
+ ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = x""yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
+$as_echo_n "checking for dgettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dgettext ();
+int
+main ()
+{
+return dgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_dgettext=yes
+else
+ ac_cv_lib_intl_dgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
+$as_echo "$ac_cv_lib_intl_dgettext" >&6; }
+if test "x$ac_cv_lib_intl_dgettext" = x""yes; then :
+ gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
+$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
+$as_echo_n "checking for ngettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngettext ();
+int
+main ()
+{
+return ngettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_ngettext=yes
+else
+ ac_cv_lib_intl_ngettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
+$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
+if test "x$ac_cv_lib_intl_ngettext" = x""yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
+$as_echo_n "checking for dcgettext in -lintl... " >&6; }
+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dcgettext ();
+int
+main ()
+{
+return dcgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_intl_dcgettext=yes
+else
+ ac_cv_lib_intl_dcgettext=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
+$as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
+if test "x$ac_cv_lib_intl_dcgettext" = x""yes; then :
+ gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv
+else
+ :
+fi
+
+else
+ :
+fi
+
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext and ngettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ for ac_func in bind_textdomain_codeset
+do :
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ && test "$gt_cv_func_ngettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; 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_MSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGFMT" in
+ /*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ for ac_func in dcgettext
+do :
+ ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
+if test "x$ac_cv_func_dcgettext" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DCGETTEXT 1
+_ACEOF
+
+fi
+done
+
+ MSGFMT_OPTS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
+$as_echo_n "checking if msgfmt accepts -c... " >&6; }
+ cat >conftest.foo <<_ACEOF
+
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+_ACEOF
+if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
+ ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ MSGFMT_OPTS=-c; { $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; }
+echo "$as_me: failed input was:" >&5
+sed 's/^/| /' conftest.foo >&5
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; 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_XGETTEXT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ /*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ case $host in
+ *-*-solaris*)
+ ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+fi
+
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+
+fi
+
+
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+ fi
+
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ ac_config_commands="$ac_config_commands default-1"
+
+
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
+$as_echo_n "checking for catalogs to be installed... " >&6; }
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
+$as_echo "$LINGUAS" >&6; }
+ fi
+
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+
+
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+
+
+
+ac_config_files="$ac_config_files Makefile data/Makefile data/icons/Makefile help/Makefile po/Makefile.in src/Makefile"
+
+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
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then
+ as_fn_error "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_SK_TRUE}" && test -z "${ENABLE_SK_FALSE}"; then
+ as_fn_error "conditional \"ENABLE_SK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_GNOME_DOC_UTILS_TRUE}" && test -z "${HAVE_GNOME_DOC_UTILS_FALSE}"; then
+ as_fn_error "conditional \"HAVE_GNOME_DOC_UTILS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+ ac_config_commands="$ac_config_commands po/stamp-it"
+
+
+
+: ${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 $as_me, 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"
+config_commands="$ac_config_commands"
+
+_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
+
+Configuration commands:
+$config_commands
+
+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="\\
+config.status
+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
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+_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
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
+ "data/icons/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/Makefile" ;;
+ "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;;
+ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
+
+ *) 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
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+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 :C $CONFIG_COMMANDS"
+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
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac ;;
+ "po/stamp-it":C)
+ if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then
+ as_fn_error "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5
+ fi
+ rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp"
+ >"po/stamp-it.tmp"
+ sed '/^#/d
+ s/^[[].*] *//
+ /^[ ]*$/d
+ '"s|^| $ac_top_srcdir/|" \
+ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES"
+
+ sed '/^POTFILES =/,/[^\\]$/ {
+ /^POTFILES =/!d
+ r po/POTFILES
+ }
+ ' "po/Makefile.in" >"po/Makefile"
+ rm -f "po/Makefile.tmp"
+ mv "po/stamp-it.tmp" "po/stamp-it"
+ ;;
+
+ 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
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..cf3b00f
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,67 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT(configure.ac)
+AM_INIT_AUTOMAKE(simple-scan, 0.9.10)
+AM_MAINTAINER_MODE
+GNOME_MAINTAINER_MODE_DEFINES
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+
+AC_ISC_POSIX
+AC_PROG_CC_C_O
+AM_PROG_CC_STDC
+AC_HEADER_STDC
+
+AM_GCONF_SOURCE_2
+
+GNOME_COMPILE_WARNINGS(yes)
+
+dnl ###########################################################################
+dnl Dependencies
+dnl ###########################################################################
+
+dnl Run-time dependencies:
+dnl * gnome-icon-theme
+dnl * xdg-utils (for xdg-email)
+
+PKG_CHECK_MODULES(SIMPLE_SCAN, [
+ gtk+-2.0
+ gconf-2.0
+ gmodule-export-2.0
+ gthread-2.0
+ cairo
+ gdk-pixbuf-2.0
+ cairo-pdf
+ dbus-glib-1
+ gudev-1.0
+])
+
+AC_CHECK_HEADERS([sane/sane.h],[],[AC_MSG_ERROR([SANE not found])])
+AC_CHECK_HEADERS([sane/saneopts.h],[],[AC_MSG_ERROR([SANE not found])])
+
+dnl ###########################################################################
+dnl Documentation
+dnl ###########################################################################
+
+GNOME_DOC_INIT
+
+dnl ###########################################################################
+dnl Internationalization
+dnl ###########################################################################
+
+IT_PROG_INTLTOOL([0.35.0])
+GETTEXT_PACKAGE=simple-scan
+AC_SUBST(GETTEXT_PACKAGE)
+AM_GLIB_GNU_GETTEXT
+
+dnl ###########################################################################
+dnl Files to generate
+dnl ###########################################################################
+
+AC_OUTPUT([
+Makefile
+data/Makefile
+data/icons/Makefile
+help/Makefile
+po/Makefile.in
+src/Makefile
+])
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..d406905
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,23 @@
+SUBDIRS = icons
+
+uidir = $(datadir)/simple-scan
+ui_DATA = simple-scan.ui
+
+utilitiesdir = $(datadir)/applications
+utilities_in_files = simple-scan.desktop.in
+utilities_DATA = $(utilities_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+schemadir = @GCONF_SCHEMA_FILE_DIR@
+schema_in_files = simple-scan.schemas.in
+schema_DATA = $(schema_in_files:.schemas.in=.schemas)
+@INTLTOOL_SCHEMAS_RULE@
+
+man1_MANS = simple-scan.1
+
+EXTRA_DIST = $(ui_DATA) $(utilities_in_files) $(schema_in_files) $(man1_MANS)
+
+DISTCLEANFILES = \
+ Makefile.in \
+ $(schema_DATA) \
+ $(utilities_DATA)
diff --git a/data/Makefile.in b/data/Makefile.in
new file mode 100644
index 0000000..1f1c98c
--- /dev/null
+++ b/data/Makefile.in
@@ -0,0 +1,721 @@
+# 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.
+
+@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 = data
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+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)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(schemadir)" \
+ "$(DESTDIR)$(uidir)" "$(DESTDIR)$(utilitiesdir)"
+NROFF = nroff
+MANS = $(man1_MANS)
+DATA = $(schema_DATA) $(ui_DATA) $(utilities_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DOC_USER_FORMATS = @DOC_USER_FORMATS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HELP_DIR = @HELP_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OMF_DIR = @OMF_DIR@
+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@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMPLE_SCAN_CFLAGS = @SIMPLE_SCAN_CFLAGS@
+SIMPLE_SCAN_LIBS = @SIMPLE_SCAN_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+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@
+SUBDIRS = icons
+uidir = $(datadir)/simple-scan
+ui_DATA = simple-scan.ui
+utilitiesdir = $(datadir)/applications
+utilities_in_files = simple-scan.desktop.in
+utilities_DATA = $(utilities_in_files:.desktop.in=.desktop)
+schemadir = @GCONF_SCHEMA_FILE_DIR@
+schema_in_files = simple-scan.schemas.in
+schema_DATA = $(schema_in_files:.schemas.in=.schemas)
+man1_MANS = simple-scan.1
+EXTRA_DIST = $(ui_DATA) $(utilities_in_files) $(schema_in_files) $(man1_MANS)
+DISTCLEANFILES = \
+ Makefile.in \
+ $(schema_DATA) \
+ $(utilities_DATA)
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu data/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-man1: $(man1_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+install-schemaDATA: $(schema_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(schemadir)" || $(MKDIR_P) "$(DESTDIR)$(schemadir)"
+ @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(schemadir)" || exit $$?; \
+ done
+
+uninstall-schemaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(schemadir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(schemadir)" && rm -f $$files
+install-uiDATA: $(ui_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(uidir)" || $(MKDIR_P) "$(DESTDIR)$(uidir)"
+ @list='$(ui_DATA)'; test -n "$(uidir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(uidir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(uidir)" || exit $$?; \
+ done
+
+uninstall-uiDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(ui_DATA)'; test -n "$(uidir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(uidir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(uidir)" && rm -f $$files
+install-utilitiesDATA: $(utilities_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(utilitiesdir)" || $(MKDIR_P) "$(DESTDIR)$(utilitiesdir)"
+ @list='$(utilities_DATA)'; test -n "$(utilitiesdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(utilitiesdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(utilitiesdir)" || exit $$?; \
+ done
+
+uninstall-utilitiesDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(utilities_DATA)'; test -n "$(utilitiesdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(utilitiesdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(utilitiesdir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
+ @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
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(MANS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(uidir)" "$(DESTDIR)$(utilitiesdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+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)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-man install-schemaDATA install-uiDATA \
+ install-utilitiesDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-man uninstall-schemaDATA uninstall-uiDATA \
+ uninstall-utilitiesDATA
+
+uninstall-man: uninstall-man1
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-schemaDATA install-strip install-uiDATA \
+ install-utilitiesDATA installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am uninstall-man \
+ uninstall-man1 uninstall-schemaDATA uninstall-uiDATA \
+ uninstall-utilitiesDATA
+
+@INTLTOOL_DESKTOP_RULE@
+@INTLTOOL_SCHEMAS_RULE@
+
+# 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/data/icons/Makefile.am b/data/icons/Makefile.am
new file mode 100644
index 0000000..89fcfab
--- /dev/null
+++ b/data/icons/Makefile.am
@@ -0,0 +1,27 @@
+icons = \
+ hicolor_actions_16x16_object-crop.png \
+ hicolor_actions_22x22_object-crop.png \
+ hicolor_actions_24x24_object-crop.png \
+ hicolor_actions_48x48_object-crop.png \
+ hicolor_actions_scalable_object-crop.svg
+
+install-data-local:
+ for icon in $(icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ $(mkdir_p) $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \
+ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done
+
+uninstall-local:
+ for icon in $(icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ rm -f $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done
+
+EXTRA_DIST = $(icons)
diff --git a/data/icons/Makefile.in b/data/icons/Makefile.in
new file mode 100644
index 0000000..5e05c94
--- /dev/null
+++ b/data/icons/Makefile.in
@@ -0,0 +1,383 @@
+# 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.
+
+@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 = data/icons
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+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)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DOC_USER_FORMATS = @DOC_USER_FORMATS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HELP_DIR = @HELP_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OMF_DIR = @OMF_DIR@
+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@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMPLE_SCAN_CFLAGS = @SIMPLE_SCAN_CFLAGS@
+SIMPLE_SCAN_LIBS = @SIMPLE_SCAN_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+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@
+icons = \
+ hicolor_actions_16x16_object-crop.png \
+ hicolor_actions_22x22_object-crop.png \
+ hicolor_actions_24x24_object-crop.png \
+ hicolor_actions_48x48_object-crop.png \
+ hicolor_actions_scalable_object-crop.svg
+
+EXTRA_DIST = $(icons)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/icons/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu data/icons/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @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
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-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: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+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-data-local
+
+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 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: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-data-local 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 uninstall-local
+
+
+install-data-local:
+ for icon in $(icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ $(mkdir_p) $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \
+ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done
+
+uninstall-local:
+ for icon in $(icons); do \
+ THEME=`echo $$icon | cut -d_ -f1`; \
+ CONTEXT=`echo $$icon | cut -d_ -f2`; \
+ SIZE=`echo $$icon | cut -d_ -f3`; \
+ ICONFILE=`echo $$icon | cut -d_ -f4`; \
+ rm -f $(DESTDIR)$(pkgdatadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \
+ done
+
+# 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/data/icons/hicolor_actions_16x16_object-crop.png b/data/icons/hicolor_actions_16x16_object-crop.png
new file mode 100644
index 0000000..48bcd12
--- /dev/null
+++ b/data/icons/hicolor_actions_16x16_object-crop.png
Binary files differ
diff --git a/data/icons/hicolor_actions_22x22_object-crop.png b/data/icons/hicolor_actions_22x22_object-crop.png
new file mode 100644
index 0000000..4dedd93
--- /dev/null
+++ b/data/icons/hicolor_actions_22x22_object-crop.png
Binary files differ
diff --git a/data/icons/hicolor_actions_24x24_object-crop.png b/data/icons/hicolor_actions_24x24_object-crop.png
new file mode 100644
index 0000000..0e46708
--- /dev/null
+++ b/data/icons/hicolor_actions_24x24_object-crop.png
Binary files differ
diff --git a/data/icons/hicolor_actions_48x48_object-crop.png b/data/icons/hicolor_actions_48x48_object-crop.png
new file mode 100644
index 0000000..e410183
--- /dev/null
+++ b/data/icons/hicolor_actions_48x48_object-crop.png
Binary files differ
diff --git a/data/icons/hicolor_actions_scalable_object-crop.svg b/data/icons/hicolor_actions_scalable_object-crop.svg
new file mode 100644
index 0000000..42c4605
--- /dev/null
+++ b/data/icons/hicolor_actions_scalable_object-crop.svg
@@ -0,0 +1,826 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="90.000000"
+ inkscape:export-xdpi="90.000000"
+ inkscape:export-filename="/home/andreas/projekt/bild/tango/scalable/draw-pencil3.png"
+ width="48px"
+ height="48px"
+ id="svg9121"
+ sodipodi:version="0.32"
+ inkscape:version="0.43+devel"
+ sodipodi:docbase="/home/jimmac/src/cvs/tango-art-libre/scalable/transformations"
+ sodipodi:docname="transform-crop-and-resize.svg">
+ <defs
+ id="defs3">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2309">
+ <stop
+ style="stop-color:#686b65;stop-opacity:1;"
+ offset="0"
+ id="stop2311" />
+ <stop
+ style="stop-color:#686b65;stop-opacity:0;"
+ offset="1"
+ id="stop2313" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2301">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2303" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2305" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2287">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2289" />
+ <stop
+ style="stop-color:#cdcdcd;stop-opacity:0.77319586;"
+ offset="1"
+ id="stop2291" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2224">
+ <stop
+ style="stop-color:#32342f;stop-opacity:0.54639173;"
+ offset="0.0000000"
+ id="stop2226" />
+ <stop
+ style="stop-color:#32342f;stop-opacity:0;"
+ offset="1"
+ id="stop2228" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2224"
+ id="radialGradient2230"
+ cx="24.041630"
+ cy="42.242130"
+ fx="24.041630"
+ fy="42.242130"
+ r="17.576654"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.304598,1.552820e-15,29.37527)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3441">
+ <stop
+ style="stop-color:#888a85;stop-opacity:1;"
+ offset="0"
+ id="stop3443" />
+ <stop
+ style="stop-color:#fcfff6;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3445" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2655">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop2657" />
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:0;"
+ offset="1"
+ id="stop2659" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6157">
+ <stop
+ id="stop6159"
+ offset="0"
+ style="stop-color:#babdb6;stop-opacity:1;" />
+ <stop
+ id="stop6165"
+ offset="0.50000000"
+ style="stop-color:#dfe2da;stop-opacity:1.0000000;" />
+ <stop
+ id="stop6161"
+ offset="1.0000000"
+ style="stop-color:#babdb6;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10677">
+ <stop
+ style="stop-color:#6f4501;stop-opacity:1;"
+ offset="0"
+ id="stop10679" />
+ <stop
+ style="stop-color:#6f4501;stop-opacity:0;"
+ offset="1"
+ id="stop10681" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8391">
+ <stop
+ style="stop-color:#8f5902;stop-opacity:1;"
+ offset="0"
+ id="stop8393" />
+ <stop
+ style="stop-color:#8f5902;stop-opacity:0;"
+ offset="1"
+ id="stop8395" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7625">
+ <stop
+ style="stop-color:#505b5f;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop7627" />
+ <stop
+ style="stop-color:#2e3436;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop7629" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5333">
+ <stop
+ style="stop-color:#555753;stop-opacity:0.0000000;"
+ offset="0.0000000"
+ id="stop5335" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1.0000000;"
+ offset="0.50000000"
+ id="stop5341" />
+ <stop
+ style="stop-color:#555753;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop5337" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5325">
+ <stop
+ style="stop-color:#555753;stop-opacity:1;"
+ offset="0"
+ id="stop5327" />
+ <stop
+ style="stop-color:#555753;stop-opacity:0;"
+ offset="1"
+ id="stop5329" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5229">
+ <stop
+ id="stop5231"
+ offset="0.0000000"
+ style="stop-color:#969993;stop-opacity:1.0000000;" />
+ <stop
+ id="stop5237"
+ offset="0.50000000"
+ style="stop-color:#d4d8d0;stop-opacity:1.0000000;" />
+ <stop
+ id="stop5233"
+ offset="1.0000000"
+ style="stop-color:#abaea7;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11940">
+ <stop
+ id="stop11942"
+ offset="0"
+ style="stop-color:#fcf18f;stop-opacity:1;" />
+ <stop
+ id="stop11944"
+ offset="1"
+ style="stop-color:#fcf18f;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11932">
+ <stop
+ id="stop11934"
+ offset="0"
+ style="stop-color:#b59300;stop-opacity:1;" />
+ <stop
+ id="stop11936"
+ offset="1"
+ style="stop-color:#b59300;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11924"
+ inkscape:collect="always">
+ <stop
+ id="stop11926"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop11928"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11916">
+ <stop
+ id="stop11918"
+ offset="0.0000000"
+ style="stop-color:#8b7200;stop-opacity:1.0000000;" />
+ <stop
+ id="stop11920"
+ offset="1"
+ style="stop-color:#544500;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11124">
+ <stop
+ id="stop11126"
+ offset="0.0000000"
+ style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+ <stop
+ id="stop11128"
+ offset="1.0000000"
+ style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient19124">
+ <stop
+ style="stop-color:#fcf18f;stop-opacity:1;"
+ offset="0"
+ id="stop19126" />
+ <stop
+ style="stop-color:#fcf8ce;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop19128" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient19116">
+ <stop
+ style="stop-color:#987c00;stop-opacity:1;"
+ offset="0"
+ id="stop19118" />
+ <stop
+ style="stop-color:#5f4d00;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop19120" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient19108">
+ <stop
+ style="stop-color:#edd400;stop-opacity:0.0000000;"
+ offset="0.0000000"
+ id="stop19110" />
+ <stop
+ style="stop-color:#b8a500;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop19112" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient18320">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1;"
+ offset="0"
+ id="stop18322" />
+ <stop
+ style="stop-color:#b88433;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop18324" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14520">
+ <stop
+ style="stop-color:#fcfae2;stop-opacity:0.0000000;"
+ offset="0.0000000"
+ id="stop14522" />
+ <stop
+ style="stop-color:#b8ab27;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop14524" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14520"
+ id="linearGradient14526"
+ gradientTransform="scale(0.831950,1.201995)"
+ x1="23.411154"
+ y1="0.82209921"
+ x2="21.684671"
+ y2="6.4114828"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18320"
+ id="linearGradient18326"
+ gradientTransform="matrix(1.228073,0.000000,0.000000,1.407676,-1.888866,-14.16649)"
+ x1="11.711685"
+ y1="31.134253"
+ x2="15.543560"
+ y2="33.482140"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19108"
+ id="linearGradient19114"
+ gradientTransform="scale(0.827650,1.208240)"
+ x1="31.654196"
+ y1="3.4796145"
+ x2="28.394352"
+ y2="12.564109"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ y2="29.502863"
+ x2="24.769884"
+ y1="11.246989"
+ x1="15.750742"
+ gradientTransform="matrix(0.831950,0.000000,0.000000,1.201995,100.1096,-33.10918)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11152"
+ xlink:href="#linearGradient14520"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="33.482140"
+ x2="15.543560"
+ y1="31.134253"
+ x1="11.711685"
+ gradientTransform="matrix(0.934030,0.000000,0.000000,1.070630,100.1096,-33.10918)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11154"
+ xlink:href="#linearGradient18320"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="19.211454"
+ x2="29.475761"
+ y1="13.215685"
+ x1="20.190006"
+ gradientTransform="matrix(0.827650,0.000000,0.000000,1.208240,100.1096,-33.10918)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11156"
+ xlink:href="#linearGradient19108"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="4.8820314"
+ x2="33.964863"
+ y1="35.224327"
+ x1="8.1650734"
+ gradientTransform="scale(0.824694,1.212571)"
+ id="linearGradient11930"
+ xlink:href="#linearGradient11924"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2.7806931"
+ x2="34.060062"
+ y1="16.266647"
+ x1="27.062229"
+ gradientTransform="scale(0.800741,1.248844)"
+ id="linearGradient11938"
+ xlink:href="#linearGradient11932"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-0.48521933"
+ x2="16.707243"
+ y1="4.4311285"
+ x1="14.394565"
+ gradientTransform="scale(0.838071,1.193216)"
+ id="linearGradient11946"
+ xlink:href="#linearGradient11940"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="4.8820314"
+ x2="33.964863"
+ y1="35.224327"
+ x1="8.1650734"
+ gradientTransform="matrix(0.824694,0.000000,0.000000,1.212571,17.09202,-2.523485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient13466"
+ xlink:href="#linearGradient11924"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2.6501136"
+ x2="24.141811"
+ y1="7.2559285"
+ x1="22.480724"
+ gradientTransform="scale(0.826560,1.209833)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient13472"
+ xlink:href="#linearGradient11916"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="12.564109"
+ x2="28.394352"
+ y1="3.4796145"
+ x1="31.654196"
+ gradientTransform="scale(0.827650,1.208240)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1949"
+ xlink:href="#linearGradient19108"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="33.482140"
+ x2="15.543560"
+ y1="31.134253"
+ x1="11.711685"
+ gradientTransform="matrix(1.228073,4.302344e-17,-4.316300e-17,1.407676,-1.888866,-14.16649)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1951"
+ xlink:href="#linearGradient18320"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-0.48521933"
+ x2="16.707243"
+ y1="4.4311285"
+ x1="14.394565"
+ gradientTransform="scale(0.838071,1.193216)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1953"
+ xlink:href="#linearGradient11940"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2.7806931"
+ x2="34.060062"
+ y1="16.266647"
+ x1="27.062229"
+ gradientTransform="scale(0.800741,1.248844)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1955"
+ xlink:href="#linearGradient11932"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="6.4114828"
+ x2="21.684671"
+ y1="0.82209921"
+ x1="23.411154"
+ gradientTransform="scale(0.831950,1.201995)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1957"
+ xlink:href="#linearGradient14520"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2.6501136"
+ x2="24.141811"
+ y1="7.2559285"
+ x1="22.480724"
+ gradientTransform="scale(0.826560,1.209833)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1959"
+ xlink:href="#linearGradient11916"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11916"
+ id="linearGradient4295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.810222,0.163528,-0.239356,1.185920,0.000000,0.000000)"
+ x1="32.368496"
+ y1="6.0591717"
+ x2="35.239323"
+ y2="-3.6642039" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14520"
+ id="linearGradient4300"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.815505,0.164595,-0.237805,1.178235,8.297767,0.197690)"
+ x1="23.411154"
+ y1="0.82209921"
+ x2="21.684671"
+ y2="6.4114828" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11932"
+ id="linearGradient4303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.784913,0.158420,-0.247074,1.224159,0.000000,0.000000)"
+ x1="43.604591"
+ y1="9.6609612"
+ x2="48.134148"
+ y2="1.5751816" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11940"
+ id="linearGradient4306"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.821506,0.165806,-0.236068,1.169631,0.000000,0.000000)"
+ x1="28.250944"
+ y1="1.5502936"
+ x2="29.906208"
+ y2="-2.3372657" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18320"
+ id="linearGradient4309"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.203798,0.242964,-0.278497,1.379850,9.248965,-14.06247)"
+ x1="11.711685"
+ y1="31.134253"
+ x2="15.543560"
+ y2="33.482140" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19108"
+ id="linearGradient4312"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.811291,0.163744,-0.239041,1.184358,0.000000,0.000000)"
+ x1="41.323280"
+ y1="-3.1978326"
+ x2="38.269123"
+ y2="11.365776" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5229"
+ id="linearGradient3805"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.821255,0.715182,-0.603048,0.692490,0.000000,0.000000)"
+ x1="24.742752"
+ y1="2.3111212"
+ x2="31.589277"
+ y2="2.4383495" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5333"
+ id="linearGradient5339"
+ gradientTransform="scale(1.064121,0.939743)"
+ x1="21.868711"
+ y1="15.557981"
+ x2="30.635437"
+ y2="24.778368"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5333"
+ id="linearGradient6107"
+ gradientTransform="scale(1.061798,0.941799)"
+ x1="15.356030"
+ y1="27.317253"
+ x2="20.829000"
+ y2="33.497402"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7625"
+ id="radialGradient7631"
+ gradientTransform="matrix(1.130280,0.000000,0.000000,0.884737,0.902354,-0.427463)"
+ cx="8.9124269"
+ cy="34.747555"
+ fx="9.0367527"
+ fy="34.482697"
+ r="7.9984083"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8391"
+ id="linearGradient8397"
+ gradientTransform="scale(1.013347,0.986829)"
+ x1="32.138252"
+ y1="14.785198"
+ x2="38.881176"
+ y2="6.9174280"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10677"
+ id="linearGradient10683"
+ gradientTransform="scale(0.941920,1.061662)"
+ x1="32.457001"
+ y1="16.203007"
+ x2="41.377167"
+ y2="5.4044285"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10677"
+ id="linearGradient10685"
+ gradientTransform="scale(0.941920,1.061662)"
+ x1="32.457001"
+ y1="16.203007"
+ x2="41.377167"
+ y2="5.4044285"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="7.8440785"
+ x2="-38.256573"
+ y1="17.157629"
+ x1="-31.074017"
+ gradientTransform="scale(0.765250,1.306762)"
+ id="linearGradient6163"
+ xlink:href="#linearGradient6157"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="7.8440785"
+ x2="-38.256573"
+ y1="17.157629"
+ x1="-31.074017"
+ gradientTransform="matrix(0.603485,0.470548,-0.803519,1.030527,48.59133,29.97432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient7714"
+ xlink:href="#linearGradient6157"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2655"
+ id="linearGradient2661"
+ gradientTransform="scale(0.954299,1.047890)"
+ x1="34.563408"
+ y1="12.489259"
+ x2="40.103199"
+ y2="5.6996894"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3441"
+ id="linearGradient3452"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.527682,3.007844e-9,-1.465781e-8,1.395766,0.274469,-0.380594)"
+ x1="54.225159"
+ y1="-3.4504862"
+ x2="64.746307"
+ y2="-2.537426" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2287"
+ id="linearGradient2293"
+ x1="17.66604"
+ y1="30.501617"
+ x2="19.180296"
+ y2="22.001617"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2224"
+ id="radialGradient2297"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.304598,2.474554e-15,29.37527)"
+ cx="24.041630"
+ cy="42.242130"
+ fx="24.041630"
+ fy="42.242130"
+ r="17.576654" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2301"
+ id="linearGradient2307"
+ x1="25.728207"
+ y1="12.759781"
+ x2="27.500931"
+ y2="14.134781"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.902575,0.000000,0.000000,0.902575,2.604411,1.752083)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2309"
+ id="linearGradient2315"
+ x1="32.983826"
+ y1="13.087369"
+ x2="38.270443"
+ y2="5.9726477"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="0.22745098"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="30.522044"
+ inkscape:cy="36.26787"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="915"
+ inkscape:window-height="852"
+ inkscape:window-x="365"
+ inkscape:window-y="58"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Crop Tool</dc:title>
+ <dc:date>2005-10-12</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Andreas Nilsson</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>crop</rdf:li>
+ <rdf:li>cut</rdf:li>
+ <rdf:li>divide</rdf:li>
+ <rdf:li>split</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Jakub Steiner</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.48295455;fill:url(#radialGradient2230);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.07686412;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path2222"
+ sodipodi:cx="24.04163"
+ sodipodi:cy="42.24213"
+ sodipodi:rx="17.576654"
+ sodipodi:ry="5.3538084"
+ d="M 41.618284 42.24213 A 17.576654 5.3538084 0 1 1 6.4649754,42.24213 A 17.576654 5.3538084 0 1 1 41.618284 42.24213 z"
+ transform="matrix(0.673638,0.000000,0.000000,0.430086,-0.605052,20.90465)" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path7706"
+ d="M 2.8839231,40.604807 C 2.8289019,40.675373 16.747691,40.499044 28.467196,32.686242 L 25.880399,30.669273 L 28.874256,26.8296 L 19.439728,19.473343 L 2.8839231,40.604807 z "
+ style="fill:url(#linearGradient7714);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#686b65;stroke-width:1.0000007;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path7708"
+ d="M 5.4018936,39.015942 C 9.8468723,38.336507 18.489609,36.512606 26.767934,32.643585 L 24.476866,30.857202 L 29.930295,23.863084 L 22.072991,17.736614 L 5.4018936,39.015942 z "
+ style="stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000007;stroke:url(#linearGradient2293);fill-rule:evenodd;fill-opacity:1.0000000;fill:none" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7710"
+ d="M 25.184875,30.813965 C 16.717482,37.347736 5.8763072,37.531471 5.9121195,37.508799 L 4.1515976,39.859872 C 4.1959591,39.943637 16.629555,39.727546 27.636682,32.738124 L 25.184875,30.813965 z "
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path7712"
+ d="M 33.128941,0.021384731 L 18.603207,18.650892 C 21.372977,21.055374 22.372377,22.637098 20.25171,25.552907 L 23.708442,28.248177 C 25.447618,25.865954 27.221201,25.210765 30.296105,27.96658 L 45.12593,9.5458368"
+ style="fill:url(#linearGradient2661);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2315);stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;opacity:1;color:#000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dasharray:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="fill:#eeeeec;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient3452);stroke-width:1.0000583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+ id="rect3450"
+ width="4.5955172"
+ height="14.063637"
+ x="31.493130"
+ y="-11.785673"
+ rx="1.6161331"
+ ry="1.4138852"
+ transform="matrix(0.794294,0.607534,-0.619919,0.784665,0.000000,0.000000)" />
+ <path
+ transform="matrix(1.281689,0.000000,0.000000,1.098472,-7.036086,-7.532814)"
+ d="M 41.618284 42.24213 A 17.576654 5.3538084 0 1 1 6.4649754,42.24213 A 17.576654 5.3538084 0 1 1 41.618284 42.24213 z"
+ sodipodi:ry="5.3538084"
+ sodipodi:rx="17.576654"
+ sodipodi:cy="42.24213"
+ sodipodi:cx="24.04163"
+ id="path2295"
+ style="opacity:0.32954544;fill:url(#radialGradient2297);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.07686412;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ style="opacity:1;color:#000000;fill:url(#linearGradient2307);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 32.505759,1.7713847 L 19.395197,18.585909 C 21.895122,20.756134 22.797155,22.183758 20.883095,24.815494 L 24.003054,27.248177 C 25.57279,25.098042 27.173582,24.506685 29.948913,26.994015 L 43.33394,10.367915"
+ id="path2299"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="opacity:0.48295456;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 43.125,11 L 30.25,27.25 C 27.25,25.5 26.375,24.75 23.625,27.5 L 20.875,25.375 L 23.625,26.5 C 25.875,24.375 27.625,24.25 29.75,26.375 L 43.125,11 z "
+ id="path2317"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="opacity:0.11363636;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 20,26.0625 L 23.6875,30.25 C 26.0625,26.875 26.75,27.3125 27.625,27.5625 L 28.1875,27.0625 C 26.6875,26.25 25.25,26.6875 23.75,28.875 L 20,26.0625 z "
+ id="path2319"
+ sodipodi:nodetypes="cccccc" />
+ </g>
+</svg>
diff --git a/data/simple-scan.1 b/data/simple-scan.1
new file mode 100644
index 0000000..d562b97
--- /dev/null
+++ b/data/simple-scan.1
@@ -0,0 +1,63 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH SIMPLE-SCAN 1 "December 21, 2009"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+simple-scan \- Scanning utility
+.SH SYNOPSIS
+.BI "simple-scan [" DEVICE "]"
+.SH DESCRIPTION
+This manual page documents briefly the
+.B simple-scan
+command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+.B Simple Scan
+is an easy-to-use application, designed to let users connect their
+scanner and quickly have the image/document in an appropriate format.
+.PP
+.B Simple Scan
+has been written with GTK+ libraries, and after installing the
+application you can run it from the
+.B Applications
+menu.
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-d, \-\-debug
+Print debugging messages.
+.TP
+.B \-v, \-\-version
+Show release version.
+.TP
+.B \-?, \-\-help
+Show help options.
+.TP
+.B \-\-help-all
+Show all help options.
+.TP
+.B \-d, \-\-help-gtk
+Show GTK+ options.
+.SH AUTHOR
+simple-scan was written by Robert Ancell <robert.ancell@canonical.com>.
+.PP
+This manual page was written by Alessio Treglia <quadrispro@ubuntu.com>,
+for the Debian project (and may be used by others).
diff --git a/data/simple-scan.desktop.in b/data/simple-scan.desktop.in
new file mode 100644
index 0000000..cc1864f
--- /dev/null
+++ b/data/simple-scan.desktop.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+_Name=Simple Scan
+_Comment=Scan Documents
+Exec=simple-scan
+Icon=scanner
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=GNOME;GTK;Graphics;Scanning;
+X-GNOME-Gettext-Domain=simple-scan
diff --git a/data/simple-scan.schemas.in b/data/simple-scan.schemas.in
new file mode 100644
index 0000000..1a5a90d
--- /dev/null
+++ b/data/simple-scan.schemas.in
@@ -0,0 +1,199 @@
+<gconfschemafile>
+ <schemalist>
+ <schema>
+ <applyto>/apps/simple-scan/window_width</applyto>
+ <key>/schemas/apps/simple-scan/window_width</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>600</default>
+ <locale name="C">
+ <short>Window width in pixels</short>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/window_height</applyto>
+ <key>/schemas/apps/simple-scan/window_height</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>400</default>
+ <locale name="C">
+ <short>Window height in pixels</short>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/window_is_maximized</applyto>
+ <key>/schemas/apps/simple-scan/window_is_maximized</key>
+ <owner>simple-scan</owner>
+ <type>bool</type>
+ <default>FALSE</default>
+ <locale name="C">
+ <short>TRUE if the application window is maximized</short>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/selected_device</applyto>
+ <key>/schemas/apps/simple-scan/selected_device</key>
+ <owner>simple-scan</owner>
+ <type>string</type>
+ <default></default>
+ <locale name="C">
+ <short>Device to scan from</short>
+ <long>
+ SANE device to acquire images from.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/document_type</applyto>
+ <key>/schemas/apps/simple-scan/document_type</key>
+ <owner>simple-scan</owner>
+ <type>string</type>
+ <default>photo</default>
+ <locale name="C">
+ <short>Type of document being scanned</short>
+ <long>
+ Type of document being scanned.
+ 'text' for text documents, 'photo' for photos.
+ This setting decides on the scan resolution, colors and post-processing.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/scan_direction</applyto>
+ <key>/schemas/apps/simple-scan/scan_direction</key>
+ <owner>simple-scan</owner>
+ <type>string</type>
+ <default>top-to-bottom</default>
+ <locale name="C">
+ <short>Direction of scan</short>
+ <long>
+ The direction of the scanner across the scanned page. It can be one of the following:
+ 'top-to-bottom'
+ 'bottom-to-top'
+ 'left-to-right'
+ 'right-to-left'
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/page_width</applyto>
+ <key>/schemas/apps/simple-scan/page_width</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>595</default>
+ <locale name="C">
+ <short>Width of scanned image in pixels</short>
+ <long>
+ The width of scanned image in pixels. This value is updated to what the last scanned page was.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/page_height</applyto>
+ <key>/schemas/apps/simple-scan/page_height</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>842</default>
+ <locale name="C">
+ <short>Height of scanned image in pixels</short>
+ <long>
+ The height of scanned image in pixels. This value is updated to what the last scanned page was.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/paper_width</applyto>
+ <key>/schemas/apps/simple-scan/paper_width</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Width of paper in tenths of a mm</short>
+ <long>
+ The width of the paper in tenths of a mm (or 0 for automatic paper detection).
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/paper_height</applyto>
+ <key>/schemas/apps/simple-scan/paper_height</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Height of paper in tenths of a mm</short>
+ <long>
+ The height of the paper in tenths of a mm (or 0 for automatic paper detection).
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/page_dpi</applyto>
+ <key>/schemas/apps/simple-scan/page_dpi</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>72</default>
+ <locale name="C">
+ <short>Resolution of last scanned image</short>
+ <long>
+ The resolution in dots-per-inch of the previously scanned image.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/text_dpi</applyto>
+ <key>/schemas/apps/simple-scan/text_dpi</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>150</default>
+ <locale name="C">
+ <short>Resolution for text scans</short>
+ <long>
+ The resolution in dots-per-inch to use when scanning text.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/photo_dpi</applyto>
+ <key>/schemas/apps/simple-scan/photo_dpi</key>
+ <owner>simple-scan</owner>
+ <type>int</type>
+ <default>300</default>
+ <locale name="C">
+ <short>Resolution for photo scans</short>
+ <long>
+ The resolution in dots-per-inch to use when scanning photos.
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/page_side</applyto>
+ <key>/schemas/apps/simple-scan/page_side</key>
+ <owner>simple-scan</owner>
+ <type>string</type>
+ <default>both</default>
+ <locale name="C">
+ <short>Page side to scan</short>
+ <long>
+ The page side to scan. It can be one of the following:
+ 'both'
+ 'front'
+ 'back'
+ </long>
+ </locale>
+ </schema>
+ <schema>
+ <applyto>/apps/simple-scan/save_directory</applyto>
+ <key>/schemas/apps/simple-scan/save_directory</key>
+ <owner>simple-scan</owner>
+ <type>string</type>
+ <default></default>
+ <locale name="C">
+ <short>Directory to save files to</short>
+ <long>
+ The directory to save files to. Defaults to the documents directory if unset.
+ </long>
+ </locale>
+ </schema>
+ </schemalist>
+</gconfschemafile>
diff --git a/data/simple-scan.ui b/data/simple-scan.ui
new file mode 100644
index 0000000..ad3b1d2
--- /dev/null
+++ b/data/simple-scan.ui
@@ -0,0 +1,973 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkWindow" id="simple_scan_window">
+ <property name="title" translatable="yes" comments="Title of scan window">Simple Scan</property>
+ <property name="icon_name">scanner</property>
+ <signal name="configure_event" handler="simple_scan_window_configure_event_cb"/>
+ <signal name="delete_event" handler="window_delete_event_cb"/>
+ <signal name="window_state_event" handler="simple_scan_window_window_state_event_cb"/>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuItem" id="document_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Label on document menu (contains actions for this document, e.g. save, print)">_Document</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="document_menu">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="new_menuitem">
+ <property name="label">gtk-new</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="new_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="scan_menuitem">
+ <property name="label" translatable="yes" comments="Scan menu item">Sc_an</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="scan_menu">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuItem" id="scan_single_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Scan menu item to scan a single page from the scanner">Single _Page</property>
+ <property name="use_underline">True</property>
+ <accelerator key="1" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="scan_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="scan_all_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Scan menu item to scan all pages from a document feeder">All Pages From _Feeder</property>
+ <property name="use_underline">True</property>
+ <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="continuous_scan_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="stop_scan_menuitem">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="label" translatable="yes" comments="Menu entry to stop current scan">_Stop Scan</property>
+ <property name="use_underline">True</property>
+ <accelerator key="Escape" signal="activate"/>
+ <signal name="activate" handler="stop_scan_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem2">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="text_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Text</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <signal name="toggled" handler="text_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="photo_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Photo</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">text_menuitem</property>
+ <signal name="toggled" handler="photo_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="save_menuitem">
+ <property name="label">gtk-save</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="save_file_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="email_menuitem">
+ <property name="label" translatable="yes" comments="Label on email menu item">_Email</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="image">email_image</property>
+ <property name="use_stock">False</property>
+ <accelerator key="e" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="email_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="print_menuitem">
+ <property name="label">gtk-print</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="print_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="document_sep_menuitem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="preferences_menuitem">
+ <property name="label">gtk-preferences</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="preferences_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="quit_menuitem">
+ <property name="label">gtk-quit</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <accelerator key="w" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <signal name="activate" handler="quit_menuitem_activate_cb"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="page_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Page menu (contains action for each page, e.g. delete, crop)">_Page</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="page_menu">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuItem" id="rotate_left_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Menu item to rotate page to left (anti-clockwise)">Rotate _Left</property>
+ <property name="use_underline">True</property>
+ <accelerator key="bracketleft" signal="activate"/>
+ <signal name="activate" handler="rotate_left_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="rotate_right_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Menu item to rotate page to right (clockwise)">Rotate _Right</property>
+ <property name="use_underline">True</property>
+ <accelerator key="bracketright" signal="activate"/>
+ <signal name="activate" handler="rotate_right_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="crop_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Label for page crop submenu">_Crop</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="crop_menu">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkRadioMenuItem" id="no_crop_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for no crop">_None</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_as_radio">True</property>
+ <signal name="toggled" handler="no_crop_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="a4_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping page to A4 size">A_4</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="a4_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="a5_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping page to A5 size">A_5</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="a5_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="a6_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping page to A6 size">A_6</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="a6_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="letter_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping page to US letter size">_Letter</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="letter_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="legal_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping to page to US legal size">Le_gal</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="legal_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="4x6_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping page to 4x6 inch">4&#xD7;6</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="four_by_six_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="custom_crop_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Radio button for cropping to custom page size">_Custom</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">no_crop_menuitem</property>
+ <signal name="toggled" handler="custom_crop_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="crop_sep_menuitem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="crop_rotate_menuitem">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="label" translatable="yes" comments="Menu item to rotate the crop area">_Rotate Crop</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="crop_rotate_menuitem_activate_cb"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="page_delete_menuitem">
+ <property name="label">gtk-delete</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="Delete" signal="activate"/>
+ <signal name="activate" handler="page_delete_menuitem_activate_cb"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="help_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Label on help menu">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="help_menu">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="help_contents_menuitem">
+ <property name="label" translatable="yes" comments="Help|Contents menu">_Contents</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="image">help_image</property>
+ <property name="use_stock">False</property>
+ <accelerator key="F1" signal="activate"/>
+ <signal name="activate" handler="help_contents_menuitem_activate_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="about_menuitem">
+ <property name="label">gtk-about</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="about_menuitem_activate_cb"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkToolButton" id="new_toolbutton">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for new document button">Start a new document</property>
+ <property name="label" translatable="yes">New</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-new</property>
+ <signal name="clicked" handler="new_button_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuToolButton" id="scan_toolbutton">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for scan toolbar button">Scan a single page from the scanner</property>
+ <property name="is_important">True</property>
+ <property name="label" translatable="yes" comments="Label on scan toolbar item">Scan</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">scanner</property>
+ <property name="menu">scan_toolbutton_menu</property>
+ <signal name="clicked" handler="scan_button_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="save_toolbutton">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for save toolbar button">Save document to a file</property>
+ <property name="is_important">True</property>
+ <property name="label" translatable="yes">Save</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-save</property>
+ <signal name="clicked" handler="save_file_button_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="stop_toolbutton">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for stop button">Stop the current scan</property>
+ <property name="label" translatable="yes">Stop</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-stop</property>
+ <signal name="clicked" handler="stop_scan_button_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="toolbutton2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="rotate_left_toolbutton">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for rotate left (counter-clockwise) button">Rotate the page to the left (counter-clockwise)</property>
+ <property name="label" translatable="yes" comments="Label on rotate page left (anti-clockwise) item">Rotate Left</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">object-rotate-left</property>
+ <signal name="clicked" handler="rotate_left_button_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="rotate_right_toolbutton">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes" comments="Tooltip for rotate right (clockwise) button">Rotate the page to the right (clockwise)</property>
+ <property name="label" translatable="yes" comments="Label on rotate page right (clockwise) item">Rotate Right</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">object-rotate-right</property>
+ <signal name="clicked" handler="rotate_right_button_clicked_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="crop_toolbutton">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes">Crop the selected page</property>
+ <property name="is_important">True</property>
+ <property name="label" translatable="yes">Crop</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">object-crop</property>
+ <signal name="toggled" handler="crop_toolbutton_toggled_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="border_width">18</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkVBox" id="preview_vbox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkDrawingArea" id="preview_area">
+ <property name="width_request">200</property>
+ <property name="height_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_SCROLL_MASK</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHScrollbar" id="preview_scrollbar">
+ <property name="adjustment">preview_adjustment</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkListStore" id="mode_store">
+ <columns>
+ <!-- column-name mode -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">text</col>
+ <col id="1" translatable="yes" comments="Combo box label for text scan mode">Text</col>
+ </row>
+ <row>
+ <col id="0">photo</col>
+ <col id="1" translatable="yes" comments="Combo box label for photo scan mode">Photo</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="device_store">
+ <columns>
+ <!-- column-name device_name -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkDialog" id="authorize_dialog">
+ <property name="border_width">12</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="type_hint">normal</property>
+ <property name="urgency_hint">True</property>
+ <property name="transient_for">simple_scan_window</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="authorize_label">
+ <property name="visible">True</property>
+ <property name="label" comments="This label is set dynamically and is not translated">To connect to ? you need to authorize</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="username_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="password_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="username_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Label beside username entry">_Username for resource:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">username_entry</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="password_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Label beside password entry">_Password:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">password_entry</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="authorize_button">
+ <property name="label" translatable="yes" comments="Button to submit authorization dialog">_Authorize</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">authorize_button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkDialog" id="preferences_dialog">
+ <property name="border_width">7</property>
+ <property name="title" translatable="yes" comments="Title of preferences dialog">Preferences</property>
+ <property name="resizable">False</property>
+ <property name="icon_name">scanner</property>
+ <property name="type_hint">normal</property>
+ <property name="transient_for">simple_scan_window</property>
+ <property name="has_separator">False</property>
+ <signal name="response" handler="preferences_dialog_response_cb"/>
+ <signal name="delete_event" handler="preferences_dialog_delete_event_cb"/>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkTable" id="table3">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="n_rows">5</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="source_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes" comments="Label beside scan source combo box">Scan S_ource:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">device_combo</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="device_combo">
+ <property name="visible">True</property>
+ <property name="model">device_store</property>
+ <property name="button_sensitivity">on</property>
+ <signal name="changed" handler="device_combo_changed_cb"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="text_dpi_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes" comments="Label beside scan source combo box">_Text Resolution:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">text_dpi_combo</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="photo_dpi_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes" comments="Label beside scan source combo box">_Photo Resolution:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">photo_dpi_combo</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="text_dpi_combo">
+ <property name="visible">True</property>
+ <property name="model">text_dpi_store</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="photo_dpi_combo">
+ <property name="visible">True</property>
+ <property name="model">photo_dpi_store</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="page_side_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes" comments="Label beside scan side combo box">Scan Side:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">photo_dpi_combo</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="page_side_combo">
+ <property name="visible">True</property>
+ <property name="model">page_side_store</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="paper_size_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes" comments="Label beside page size combo box">Page Size:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">photo_dpi_combo</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="paper_size_combo">
+ <property name="visible">True</property>
+ <property name="model">paper_size_store</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="preferences_close_button">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="1">preferences_close_button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkMenu" id="scan_toolbutton_menu">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuItem" id="scan_single_toolbutton_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Toolbar scan menu item to scan a single page from the scanner">Single _Page</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="scan_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="scan_all_toolbutton_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes" comments="Toolbar scan menu item to scan all pages from a document feeder">All Pages From _Feeder</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="continuous_scan_button_clicked_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="text_toolbutton_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Text</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <signal name="toggled" handler="text_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="photo_toolbutton_menuitem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Photo</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">text_toolbutton_menuitem</property>
+ <signal name="toggled" handler="photo_menuitem_toggled_cb"/>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="preview_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ <property name="page_size">10</property>
+ </object>
+ <object class="GtkListStore" id="photo_dpi_store">
+ <columns>
+ <!-- column-name dpi -->
+ <column type="gint"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkListStore" id="text_dpi_store">
+ <columns>
+ <!-- column-name dpi -->
+ <column type="gint"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkImage" id="help_image">
+ <property name="visible">True</property>
+ <property name="stock">gtk-help</property>
+ </object>
+ <object class="GtkImage" id="email_image">
+ <property name="visible">True</property>
+ <property name="icon_name">mail-send</property>
+ </object>
+ <object class="GtkListStore" id="page_side_store">
+ <columns>
+ <!-- column-name side -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">both</col>
+ <col id="1" translatable="yes" comments="Combo box label for scanning both sides of a page">Front and Back</col>
+ </row>
+ <row>
+ <col id="0">front</col>
+ <col id="1" translatable="yes" comments="Combo box label for scanning the front side of a page">Front</col>
+ </row>
+ <row>
+ <col id="0">back</col>
+ <col id="1" translatable="yes" comments="Combo box label for scanning the back side of a page">Back</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="paper_size_store">
+ <columns>
+ <!-- column-name width -->
+ <column type="gint"/>
+ <!-- column-name height -->
+ <column type="gint"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+</interface>
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..df8eea7
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
+
+# 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.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u="sed s,\\\\\\\\,/,g"
+ depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> "$depfile"
+ echo >> "$depfile"
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# 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/gnome-doc-utils.make b/gnome-doc-utils.make
new file mode 100644
index 0000000..97fd549
--- /dev/null
+++ b/gnome-doc-utils.make
@@ -0,0 +1,655 @@
+# gnome-doc-utils.make - make magic for building documentation
+# Copyright (C) 2004-2005 Shaun McCance <shaunm@gnome.org>
+#
+# 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.
+
+################################################################################
+## @@ Generating Header Files
+
+## @ DOC_H_FILE
+## The name of the header file to generate
+DOC_H_FILE ?=
+
+## @ DOC_H_DOCS
+## The input DocBook files for generating the header file
+DOC_H_DOCS ?=
+
+$(DOC_H_FILE): $(DOC_H_DOCS);
+ @rm -f $@.tmp; touch $@.tmp;
+ echo 'const gchar* documentation_credits[] = {' >> $@.tmp
+ list='$(DOC_H_DOCS)'; for doc in $$list; do \
+ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
+ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
+ xsltproc --path "$$xmlpath" $(_credits) $$doc; \
+ done | sort | uniq \
+ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \
+ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp
+ echo ' NULL' >> $@.tmp
+ echo '};' >> $@.tmp
+ echo >> $@.tmp
+ list='$(DOC_H_DOCS)'; for doc in $$list; do \
+ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
+ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
+ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \
+ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \
+ echo $$xmlpath; \
+ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
+ for id in $$ids; do \
+ echo '#define HELP_'`echo $$docid`'_'`echo $$id \
+ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \
+ done; \
+ echo >> $@.tmp; \
+ done;
+ cp $@.tmp $@ && rm -f $@.tmp
+
+dist-check-gdu:
+if !HAVE_GNOME_DOC_UTILS
+ @echo "*** GNOME Doc Utils must be installed in order to make dist"
+ @false
+endif
+
+.PHONY: dist-doc-header
+dist-doc-header: $(DOC_H_FILE)
+ @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \
+ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)";
+
+doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header)
+
+.PHONY: clean-doc-header
+_clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header)
+clean-local: $(_clean_doc_header)
+distclean-local: $(_clean_doc_header)
+mostlyclean-local: $(_clean_doc_header)
+maintainer-clean-local: $(_clean_doc_header)
+clean-doc-header:
+ rm -f $(DOC_H_FILE)
+
+all: $(DOC_H_FILE)
+
+
+################################################################################
+## @@ Generating Documentation Files
+
+## @ DOC_MODULE
+## The name of the document being built
+DOC_MODULE ?=
+
+## @ DOC_ID
+## The unique identifier for a Mallard document
+DOC_ID ?=
+
+## @ DOC_PAGES
+## Page files in a Mallard document
+DOC_PAGES ?=
+
+## @ DOC_ENTITIES
+## Files included with a SYSTEM entity
+DOC_ENTITIES ?=
+
+## @ DOC_INCLUDES
+## Files included with XInclude
+DOC_INCLUDES ?=
+
+## @ DOC_FIGURES
+## Figures and other external data
+DOC_FIGURES ?=
+
+## @ DOC_FORMATS
+## The default formats to be built and installed
+DOC_FORMATS ?= docbook
+_DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS))
+
+## @ DOC_LINGUAS
+## The languages this document is translated into
+DOC_LINGUAS ?=
+_DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \
+ $(filter $(LINGUAS),$(DOC_LINGUAS)), \
+ $(DOC_LINGUAS))
+
+_DOC_ABS_SRCDIR = @abs_srcdir@
+
+
+################################################################################
+## Variables for Bootstrapping
+
+_xml2po ?= `which xml2po`
+_xml2po_mode = $(if $(DOC_ID),mallard,docbook)
+
+_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
+_db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
+_malrng ?= `$(PKG_CONFIG) --variable malrng gnome-doc-utils`
+_chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
+_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
+_ids ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
+
+if ENABLE_SK
+_ENABLE_SK = true
+_skpkgdatadir ?= `scrollkeeper-config --pkgdatadir`
+_sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir`
+_skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml
+endif
+
+
+################################################################################
+## @@ Rules for OMF Files
+
+db2omf_args = \
+ --stringparam db2omf.basename $(DOC_MODULE) \
+ --stringparam db2omf.format $(3) \
+ --stringparam db2omf.dtd \
+ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \
+ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \
+ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \
+ --stringparam db2omf.omf_dir "$(OMF_DIR)" \
+ --stringparam db2omf.help_dir "$(HELP_DIR)" \
+ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \
+ $(if $(_ENABLE_SK), \
+ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \
+ $(_db2omf) $(2)
+
+## @ _DOC_OMF_IN
+## The OMF input file
+_DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in))
+
+## @ _DOC_OMF_DB
+## The OMF files for DocBook output
+_DOC_OMF_DB = $(if $(_DOC_OMF_IN), \
+ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf))
+
+$(_DOC_OMF_DB) : $(_DOC_OMF_IN)
+$(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml
+ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \
+ echo "The file '$(_skcontentslist)' does not exist." >&2; \
+ echo "Please check your ScrollKeeper installation." >&2; \
+ exit 1; }
+ xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
+
+## @ _DOC_OMF_HTML
+## The OMF files for HTML output
+_DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \
+ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf))
+
+$(_DOC_OMF_HTML) : $(_DOC_OMF_IN)
+$(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml
+if ENABLE_SK
+ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \
+ echo "The file '$(_skcontentslist)' does not exist" >&2; \
+ echo "Please check your ScrollKeeper installation." >&2; \
+ exit 1; }
+endif
+ xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
+
+## @ _DOC_OMF_ALL
+## All OMF output files to be built
+# FIXME
+_DOC_OMF_ALL = \
+ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \
+ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML))
+
+.PHONY: omf
+omf: $(_DOC_OMF_ALL)
+
+
+################################################################################
+## @@ C Locale Documents
+
+## @ _DOC_C_MODULE
+## The top-level documentation file in the C locale
+_DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml)
+
+## @ _DOC_C_PAGES
+## Page files in a Mallard document in the C locale
+_DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page))
+
+## @ _DOC_C_ENTITIES
+## Files included with a SYSTEM entity in the C locale
+_DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent))
+
+## @ _DOC_C_XINCLUDES
+## Files included with XInclude in the C locale
+_DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc))
+
+## @ _DOC_C_DOCS
+## All documentation files in the C locale
+_DOC_C_DOCS = \
+ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \
+ $(_DOC_C_PAGES) $(_DOC_C_MODULE)
+
+## @ _DOC_C_DOCS_NOENT
+## All documentation files in the C locale,
+## except files included with a SYSTEM entity
+_DOC_C_DOCS_NOENT = \
+ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \
+ $(_DOC_C_PAGES)
+
+## @ _DOC_C_FIGURES
+## All figures and other external data in the C locale
+_DOC_C_FIGURES = $(if $(DOC_FIGURES), \
+ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \
+ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png)))
+
+## @ _DOC_C_HTML
+## All HTML documentation in the C locale
+# FIXME: probably have to shell escape to determine the file names
+_DOC_C_HTML = $(foreach f, \
+ $(shell xsltproc --xinclude \
+ --stringparam db.chunk.basename "$(DOC_MODULE)" \
+ $(_chunks) "C/$(DOC_MODULE).xml"), \
+ C/$(f).xhtml)
+
+###############################################################################
+## @@ Other Locale Documentation
+
+## @ _DOC_POFILES
+## The .po files used for translating the document
+_DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po))
+
+.PHONY: po
+po: $(_DOC_POFILES)
+
+## @ _DOC_MOFILES
+## The .mo files used for translating the document
+_DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES))
+
+.PHONY: mo
+mo: $(_DOC_MOFILES)
+
+## @ _DOC_LC_MODULES
+## The top-level documentation files in all other locales
+_DOC_LC_MODULES = $(if $(DOC_MODULE), \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml))
+
+## @ _DOC_LC_PAGES
+## Page files in a Mallard document in all other locales
+_DOC_LC_PAGES = \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \
+ $(lc)/$(notdir $(page)) ))
+
+## @ _DOC_LC_XINCLUDES
+## Files included with XInclude in all other locales
+_DOC_LC_INCLUDES = \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \
+ $(lc)/$(notdir $(inc)) ))
+
+## @ _DOC_LC_HTML
+## All HTML documentation in all other locales
+# FIXME: probably have to shell escape to determine the file names
+_DOC_LC_HTML = \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \
+ $(lc)/$(notdir $(doc)) ))
+
+## @ _DOC_LC_DOCS
+## All documentation files in all other locales
+_DOC_LC_DOCS = \
+ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \
+ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML))
+
+## @ _DOC_LC_FIGURES
+## All figures and other external data in all other locales
+_DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \
+ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) )
+
+_DOC_SRC_FIGURES = \
+ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \
+ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) ))
+
+$(_DOC_POFILES):
+ @if ! test -d $(dir $@); then \
+ echo "mkdir $(dir $@)"; \
+ mkdir "$(dir $@)"; \
+ fi
+ @if test ! -f $@ -a -f $(srcdir)/$@; then \
+ echo "cp $(srcdir)/$@ $@"; \
+ cp "$(srcdir)/$@" "$@"; \
+ fi;
+ @docs=; \
+ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \
+ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \
+ done; \
+ if ! test -f $@; then \
+ echo "(cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \
+ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \
+ (cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \
+ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \
+ else \
+ echo "(cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \
+ (cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \
+ fi
+
+$(_DOC_MOFILES): %.mo: %.po
+ @if ! test -d $(dir $@); then \
+ echo "mkdir $(dir $@)"; \
+ mkdir "$(dir $@)"; \
+ fi
+ msgfmt -o $@ $<
+
+# FIXME: fix the dependancy
+# FIXME: hook xml2po up
+$(_DOC_LC_DOCS) : $(_DOC_MOFILES)
+$(_DOC_LC_DOCS) : $(_DOC_C_DOCS)
+ if ! test -d $(dir $@); then mkdir $(dir $@); fi
+ if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \
+ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \
+ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \
+ (cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \
+ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \
+ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)
+
+## @ _DOC_POT
+## A pot file
+_DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot)
+.PHONY: pot
+pot: $(_DOC_POT)
+$(_DOC_POT): $(_DOC_C_DOCS_NOENT)
+ $(_xml2po) -m $(_xml2po_mode) -e -o $@ $^
+
+
+################################################################################
+## @@ All Documentation
+
+## @ _DOC_HTML_ALL
+## All HTML documentation, only if it's built
+_DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \
+ $(_DOC_C_HTML) $(_DOC_LC_HTML))
+
+_DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml)
+
+$(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
+ xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
+
+
+################################################################################
+## All
+
+all: \
+ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \
+ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \
+ $(_DOC_HTML_ALL) $(_DOC_POFILES)
+
+
+################################################################################
+## Clean
+
+.PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir
+
+clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML)
+clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML)
+clean-doc-lc:
+ rm -f $(_DOC_LC_DOCS)
+ rm -f $(_DOC_MOFILES)
+ @list='$(_DOC_POFILES)'; for po in $$list; do \
+ if ! test "$$po" -ef "$(srcdir)/$$po"; then \
+ echo "rm -f $$po"; \
+ rm -f "$$po"; \
+ fi; \
+ done
+# .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ if test -f "$$lc/.xml2po.mo"; then \
+ echo "rm -f $$lc/.xml2po.mo"; \
+ rm -f "$$lc/.xml2po.mo"; \
+ fi; \
+ done
+clean-doc-dir: clean-doc-lc
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ for dir in `find $$lc -depth -type d`; do \
+ if ! test $$dir -ef $(srcdir)/$$dir; then \
+ echo "rmdir $$dir"; \
+ rmdir "$$dir"; \
+ fi; \
+ done; \
+ done
+
+_clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf)
+_clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk)
+_clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc)
+_clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir)
+
+clean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+distclean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+mostlyclean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+maintainer-clean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+
+
+
+################################################################################
+## Dist
+
+.PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk
+doc-dist-hook: \
+ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \
+ $(if $(_DOC_C_FIGURES),dist-doc-figs) \
+ $(if $(_DOC_OMF_IN),dist-doc-omf)
+# $(if $(_DOC_DSK_IN),dist-doc-dsk)
+
+dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ echo " $(mkinstalldirs) $(distdir)/$$lc"; \
+ $(mkinstalldirs) "$(distdir)/$$lc"; \
+ done
+ @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)'; \
+ for doc in $$list; do \
+ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
+ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ if ! test -d "$(distdir)/$$docdir"; then \
+ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \
+ $(mkinstalldirs) "$(distdir)/$$docdir"; \
+ fi; \
+ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \
+ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \
+ done
+
+dist-doc-figs: $(_DOC_SRC_FIGURES)
+ @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \
+ for fig in $$list; do \
+ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$fig"; then \
+ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ if ! test -d "$(distdir)/$$figdir"; then \
+ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \
+ $(mkinstalldirs) "$(distdir)/$$figdir"; \
+ fi; \
+ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \
+ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \
+ fi; \
+ done;
+
+dist-doc-omf:
+ @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \
+ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))"
+
+dist-doc-dsk:
+ @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \
+ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))"
+
+
+
+################################################################################
+## Check
+
+.PHONY: check-doc-docs check-doc-omf
+check: \
+ $(if $(DOC_MODULE),check-doc-docs) \
+ $(if $(DOC_ID),check-doc-pages) \
+ $(if $(_DOC_OMF_IN),check-doc-omf)
+
+check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ if test -f "$$lc"; \
+ then d=; \
+ xmlpath="$$lc"; \
+ else \
+ d="$(srcdir)/"; \
+ xmlpath="$$lc:$(srcdir)/$$lc"; \
+ fi; \
+ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \
+ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \
+ done
+
+check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES)
+ for lc in C $(_DOC_REAL_LINGUAS); do \
+ if test -f "$$lc"; \
+ then d=; \
+ xmlpath="$$lc"; \
+ else \
+ d="$(srcdir)/"; \
+ xmlpath="$$lc:$(srcdir)/$$lc"; \
+ fi; \
+ for page in $(DOC_PAGES); do \
+ echo "xmllint --noout --noent --path $$xmlpath --xinclude --relaxng $(_malrng) $$d$$lc/$$page"; \
+ xmllint --noout --noent --path "$$xmlpath" --xinclude --relaxng "$(_malrng)" "$$d$$lc/$$page"; \
+ done; \
+ done
+
+check-doc-omf: $(_DOC_OMF_ALL)
+ @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
+ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \
+ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \
+ done
+
+
+
+################################################################################
+## Install
+
+.PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk
+
+_doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE))
+
+install-data-local: \
+ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \
+ $(if $(_DOC_HTML_ALL),install-doc-html) \
+ $(if $(_DOC_C_FIGURES),install-doc-figs) \
+ $(if $(_DOC_OMF_IN),install-doc-omf)
+# $(if $(_DOC_DSK_IN),install-doc-dsk)
+
+install-doc-docs:
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \
+ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \
+ done
+ @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \
+ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
+ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \
+ if ! test -d "$$docdir"; then \
+ echo "$(mkinstalldirs) $$docdir"; \
+ $(mkinstalldirs) "$$docdir"; \
+ fi; \
+ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
+ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \
+ done
+
+install-doc-figs:
+ @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \
+ for lc in C $(_DOC_REAL_LINGUAS); do \
+ figsymlink=false; \
+ if test -f "$$lc/$$fig"; then \
+ figfile="$$lc/$$fig"; \
+ elif test -f "$(srcdir)/$$lc/$$fig"; then \
+ figfile="$(srcdir)/$$lc/$$fig"; \
+ else \
+ figsymlink=true; \
+ fi; \
+ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \
+ if ! test -d "$$figdir"; then \
+ echo "$(mkinstalldirs) $$figdir"; \
+ $(mkinstalldirs) "$$figdir"; \
+ fi; \
+ figbase=`echo $$fig | sed -e 's/^.*\///'`; \
+ if $$figsymlink; then \
+ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \
+ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \
+ else \
+ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \
+ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \
+ fi; \
+ done; \
+ done
+
+install-doc-html:
+ echo install-html
+
+install-doc-omf:
+ $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)
+ @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
+ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \
+ done
+ @if test "x$(_ENABLE_SK)" = "xtrue"; then \
+ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \
+ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \
+ fi;
+
+install-doc-dsk:
+ echo install-dsk
+
+
+
+################################################################################
+## Uninstall
+
+.PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk
+uninstall-local: \
+ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \
+ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \
+ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \
+ $(if $(_DOC_OMF_IN),uninstall-doc-omf)
+# $(if $(_DOC_DSK_IN),uninstall-doc-dsk)
+
+uninstall-doc-docs:
+ @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \
+ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
+ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
+ done
+
+uninstall-doc-figs:
+ @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \
+ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \
+ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \
+ done;
+
+uninstall-doc-omf:
+ @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
+ if test "x$(_ENABLE_SK)" = "xtrue"; then \
+ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ fi; \
+ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ done
diff --git a/help/C/adf.page b/help/C/adf.page
new file mode 100644
index 0000000..8d8a3dc
--- /dev/null
+++ b/help/C/adf.page
@@ -0,0 +1,18 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="adf">
+
+ <info>
+ <link type="guide" xref="index#acquire"/>
+ </info>
+
+ <title>Using an Automatic Document Feeder</title>
+
+ <p>
+ If your scanner has an Automatic Document Feeder (ADF) you can scan all the pages by selecting the <guiseq><gui>Document</gui><gui>Scan</gui><gui>All Pages From Feeder</gui></guiseq> menu.
+ </p>
+ <p>
+ By default both sides of the paper will be scanned if your scanned supports this.
+ Single side scanning can be configured from the <guiseq><gui>Document</gui><gui>Preferences</gui></guiseq> menu.
+ </p>
+</page>
diff --git a/help/C/crop.page b/help/C/crop.page
new file mode 100644
index 0000000..4102c9d
--- /dev/null
+++ b/help/C/crop.page
@@ -0,0 +1,24 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="crop">
+
+ <info>
+ <link type="guide" xref="index#modify"/>
+ </info>
+
+ <title>Cropping</title>
+
+ <p>
+ To use only part of the scanned page enable crop by selecting the crop button in the toolbar.
+ A mask will be shown over the current page with the area not being used shown in gray.
+ </p>
+ <p>
+ The crop area can be adjusted by clicking on the inside of the crop area border and dragging the mouse.
+ </p>
+ <p>
+ Fixed crop sizes can be chosen from the <guiseq><gui>Page</gui><gui>Crop</gui></guiseq> menu that match commonly used paper sizes.
+ </p>
+ <p>
+ Each new page that is scanned will use the previous crop.
+ </p>
+</page>
diff --git a/help/C/dpi.page b/help/C/dpi.page
new file mode 100644
index 0000000..a274bca
--- /dev/null
+++ b/help/C/dpi.page
@@ -0,0 +1,15 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="dpi">
+
+ <info>
+ <link type="guide" xref="index#acquire"/>
+ </info>
+
+ <title>Setting the Scan Resolution</title>
+
+ <p>
+ By default text documents will be scanned at 200 dots per inch (dpi) and photos at 400 dpi.
+ To change these settings open the preferences from the <guiseq><gui>Document</gui><gui>Preferences</gui></guiseq> menu.
+ </p>
+</page>
diff --git a/help/C/edit.page b/help/C/edit.page
new file mode 100644
index 0000000..32d501d
--- /dev/null
+++ b/help/C/edit.page
@@ -0,0 +1,15 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="edit">
+
+ <info>
+ <link type="guide" xref="index#modify"/>
+ </info>
+
+ <title>Editing a Document</title>
+
+ <p>
+ <app>Simple Scan</app> does not provide any editing functions.
+ To edit a document <link xref="save">save the document</link> and open it in your favourite editing application.
+ </p>
+</page>
diff --git a/help/C/email.page b/help/C/email.page
new file mode 100644
index 0000000..42540c2
--- /dev/null
+++ b/help/C/email.page
@@ -0,0 +1,21 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="email">
+
+ <info>
+ <link type="guide" xref="index#use"/>
+ </info>
+
+ <title>Sending via Email</title>
+
+ <p>
+ To email the current document use the <guiseq><gui>Document</gui><gui>Email</gui></guiseq> menu (<keyseq><key>Ctrl</key><key>E</key></keyseq>).
+ Your email program will be opened with a new message containing the scanned document as an attachment.
+ </p>
+ <p>
+ If the document type is set to text the email will have a PDF attachment otherwise the email will have a JPEG attachment for each page.
+ </p>
+ <p>
+ See <link xref="save"/> for more information about file formats.
+ </p>
+</page>
diff --git a/help/C/index.page b/help/C/index.page
new file mode 100644
index 0000000..6f5bff1
--- /dev/null
+++ b/help/C/index.page
@@ -0,0 +1,26 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="index">
+
+ <info>
+ <credit type="author">
+ <name>Robert Ancell</name>
+ <email>robert.ancell@gmail.com</email>
+ </credit>
+ <include href="legal.xml" xmlns="http://www.w3.org/2001/XInclude" />
+ </info>
+
+ <title>Simple Scan Help</title>
+
+ <section id="acquire" style="2column">
+ <title>Scanning Pages</title>
+ </section>
+
+ <section id="modify" style="2column">
+ <title>Modifying the Document</title>
+ </section>
+
+ <section id="use" style="2column">
+ <title>Using the Document</title>
+ </section>
+</page>
diff --git a/help/C/legal.xml b/help/C/legal.xml
new file mode 100644
index 0000000..86d6173
--- /dev/null
+++ b/help/C/legal.xml
@@ -0,0 +1,9 @@
+<license xmlns="http://projectmallard.org/1.0/"
+ href="http://creativecommons.org/licenses/by-sa/3.0/">
+<p>This work is licensed under a
+<link href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
+Attribution-Share Alike 3.0 Unported License</link>.</p>
+<p>As a special exception, the copyright holders give you permission to copy,
+modify, and distribute the example code contained in this document under the
+terms of your choosing, without restriction.</p>
+</license>
diff --git a/help/C/print.page b/help/C/print.page
new file mode 100644
index 0000000..8f182ca
--- /dev/null
+++ b/help/C/print.page
@@ -0,0 +1,14 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="print">
+
+ <info>
+ <link type="guide" xref="index#use"/>
+ </info>
+
+ <title>Printing</title>
+
+ <p>
+ To print the current document use the <guiseq><gui>Document</gui><gui>Print</gui></guiseq> menu (<keyseq><key>Ctrl</key><key>P</key></keyseq>).
+ </p>
+</page>
diff --git a/help/C/rotate.page b/help/C/rotate.page
new file mode 100644
index 0000000..caa8532
--- /dev/null
+++ b/help/C/rotate.page
@@ -0,0 +1,15 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="rotate">
+
+ <info>
+ <link type="guide" xref="index#modify"/>
+ </info>
+
+ <title>Rotating Pages</title>
+
+ <p>
+ To rotate a page use the rotation buttons in the toolbar or the <key>[</key> and <key>]</key> keys.
+ Each new page that is scanned will use the previous rotation.
+ </p>
+</page>
diff --git a/help/C/save.page b/help/C/save.page
new file mode 100644
index 0000000..8c1a7b1
--- /dev/null
+++ b/help/C/save.page
@@ -0,0 +1,32 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="save">
+
+ <info>
+ <link type="guide" xref="index#use"/>
+ </info>
+
+ <title>Saving to a File</title>
+
+ <p>
+ To save the current document to a file use the <guiseq><gui>Document</gui><gui>Save</gui></guiseq> menu (<keyseq><key>Ctrl</key><key>S</key></keyseq>).
+ When you save, there is a choice of three file types.
+ </p>
+ <terms>
+ <item>
+ <title>Portable Document Format (PDF)</title>
+ <p>A PDF can contain multiple pages (like a book) and is easy to distribute to other people. Most people do not have software to modify PDF documents so this format is best used for archiving.</p>
+ <p>Use this type if you have scanned multiple pages of text.</p>
+ </item>
+ <item>
+ <title>JPEG</title>
+ <p>JPEG file is the file format used by digital cameras and is very small and so easy to distribute. Most people have software to modify JPEG photos and this format is suitable for uploading to social networking sites. If you have scanned multiple pages then a JPEG file will be written for each page.</p>
+ <p>Use this type if you want to modify or upload the scanned images.</p>
+ </item>
+ <item>
+ <title>PNG</title>
+ <p>PNG files contain the raw data from the scanner. This makes them much larger than JPEG files and not suitable for distributing. If you have scanned multiple pages then a PNG file will be written for each page.</p>
+ <p>Use this type if you need high resolution files for editing</p>
+ </item>
+ </terms>
+</page>
diff --git a/help/C/scanner.page b/help/C/scanner.page
new file mode 100644
index 0000000..d7decd2
--- /dev/null
+++ b/help/C/scanner.page
@@ -0,0 +1,19 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="scanner">
+
+ <info>
+ <link type="guide" xref="index#acquire"/>
+ </info>
+
+ <title>Selecting a Scanner</title>
+
+ <p>
+ If you have multiple scanners you can change which scanner is selected from the <guiseq><gui>Document</gui><gui>Preferences</gui></guiseq> menu.
+ </p>
+
+ <p>
+ Your local scanners are automatically detected each time you start <app>Simple Scan</app> and each time you plug in USB scanner.
+ If you have a network scanner you will need to restart <app>Simple Scan</app> for it to be detected.
+ </p>
+</page>
diff --git a/help/C/scanning.page b/help/C/scanning.page
new file mode 100644
index 0000000..5d0b470
--- /dev/null
+++ b/help/C/scanning.page
@@ -0,0 +1,50 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ type="guide"
+ id="scanning">
+
+ <info>
+ <title type="sort">0</title>
+ <link type="guide" xref="index#acquire"/>
+ </info>
+
+ <title>Scanning a Page</title>
+
+ <p>
+ To scan a document from your scanner:
+ </p>
+ <steps>
+ <item>
+ <p>
+ Connect the scanner to your computer.
+ </p>
+ </item>
+ <item>
+ <p>
+ Open <app>Simple Scan</app>.
+ </p>
+ </item>
+ <item>
+ <p>
+ Press the scan button in the toolbar (or <keyseq><key>Ctrl</key><key>1</key></keyseq>).
+ </p>
+ </item>
+ </steps>
+
+ <p>
+ The page will be shown as it is scanned.
+ </p>
+
+ <p>
+ Each page you scan is added to the end of your document. To start a new document select <guiseq><gui>Document</gui><gui>New</gui></guiseq>.
+ Individual pages can be deleted by right clicking a page or pressing the <key>Delete</key> key.
+ </p>
+
+ <p>
+ The type of scan can be changed from the <guiseq><gui>Document</gui><gui>Scan</gui></guiseq> menu.
+ Choose <gui>Text</gui> if you want the document to be quickly scanned in black and white or <gui>Photo</gui> for a high resolution color scan.
+ </p>
+
+ <p>
+ To stop the scan at any time press <key>Escape</key>.
+ </p>
+</page>
diff --git a/help/Makefile.am b/help/Makefile.am
new file mode 100644
index 0000000..d12f00d
--- /dev/null
+++ b/help/Makefile.am
@@ -0,0 +1,23 @@
+include $(top_srcdir)/gnome-doc-utils.make
+
+dist-hook: doc-dist-hook
+
+DOC_ID = simple-scan
+DOC_INCLUDES = legal.xml
+DOC_FIGURES =
+DOC_PAGES = index.page \
+ adf.page \
+ crop.page \
+ dpi.page \
+ edit.page \
+ email.page \
+ print.page \
+ rotate.page \
+ save.page \
+ scanner.page \
+ scanning.page
+
+DOC_LINGUAS =
+
+DISTCLEANFILES = \
+ Makefile.in
diff --git a/help/Makefile.in b/help/Makefile.in
new file mode 100644
index 0000000..eee46d3
--- /dev/null
+++ b/help/Makefile.in
@@ -0,0 +1,934 @@
+# 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.
+
+@SET_MAKE@
+
+# gnome-doc-utils.make - make magic for building documentation
+# Copyright (C) 2004-2005 Shaun McCance <shaunm@gnome.org>
+#
+# 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.
+
+################################################################################
+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 = :
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/gnome-doc-utils.make
+subdir = help
+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)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DOC_USER_FORMATS = @DOC_USER_FORMATS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HELP_DIR = @HELP_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OMF_DIR = @OMF_DIR@
+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@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMPLE_SCAN_CFLAGS = @SIMPLE_SCAN_CFLAGS@
+SIMPLE_SCAN_LIBS = @SIMPLE_SCAN_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+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@
+_clean_doc_header = $(if $(DOC_H_FILE),clean-doc-header)
+_DOC_REAL_FORMATS = $(if $(DOC_USER_FORMATS),$(DOC_USER_FORMATS),$(DOC_FORMATS))
+_DOC_REAL_LINGUAS = $(if $(filter environment,$(origin LINGUAS)), \
+ $(filter $(LINGUAS),$(DOC_LINGUAS)), \
+ $(DOC_LINGUAS))
+
+_DOC_ABS_SRCDIR = @abs_srcdir@
+_xml2po_mode = $(if $(DOC_ID),mallard,docbook)
+@ENABLE_SK_TRUE@_ENABLE_SK = true
+
+################################################################################
+db2omf_args = \
+ --stringparam db2omf.basename $(DOC_MODULE) \
+ --stringparam db2omf.format $(3) \
+ --stringparam db2omf.dtd \
+ $(shell xmllint --format $(2) | grep -h PUBLIC | head -n 1 \
+ | sed -e 's/.*PUBLIC \(\"[^\"]*\"\).*/\1/') \
+ --stringparam db2omf.lang $(notdir $(patsubst %/$(notdir $(2)),%,$(2))) \
+ --stringparam db2omf.omf_dir "$(OMF_DIR)" \
+ --stringparam db2omf.help_dir "$(HELP_DIR)" \
+ --stringparam db2omf.omf_in "$(_DOC_OMF_IN)" \
+ $(if $(_ENABLE_SK), \
+ --stringparam db2omf.scrollkeeper_cl "$(_skcontentslist)") \
+ $(_db2omf) $(2)
+
+_DOC_OMF_IN = $(if $(DOC_MODULE),$(wildcard $(_DOC_ABS_SRCDIR)/$(DOC_MODULE).omf.in))
+_DOC_OMF_DB = $(if $(_DOC_OMF_IN), \
+ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-$(lc).omf))
+
+_DOC_OMF_HTML = $(if $(_DOC_OMF_IN), \
+ $(foreach lc,C $(_DOC_REAL_LINGUAS),$(DOC_MODULE)-html-$(lc).omf))
+
+
+# FIXME
+_DOC_OMF_ALL = \
+ $(if $(filter docbook,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_DB)) \
+ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_OMF_HTML))
+
+
+################################################################################
+_DOC_C_MODULE = $(if $(DOC_MODULE),C/$(DOC_MODULE).xml)
+_DOC_C_PAGES = $(foreach page,$(DOC_PAGES),C/$(page))
+_DOC_C_ENTITIES = $(foreach ent,$(DOC_ENTITIES),C/$(ent))
+_DOC_C_INCLUDES = $(foreach inc,$(DOC_INCLUDES),C/$(inc))
+_DOC_C_DOCS = \
+ $(_DOC_C_ENTITIES) $(_DOC_C_INCLUDES) \
+ $(_DOC_C_PAGES) $(_DOC_C_MODULE)
+
+_DOC_C_DOCS_NOENT = \
+ $(_DOC_C_MODULE) $(_DOC_C_INCLUDES) \
+ $(_DOC_C_PAGES)
+
+_DOC_C_FIGURES = $(if $(DOC_FIGURES), \
+ $(foreach fig,$(DOC_FIGURES),C/$(fig)), \
+ $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/C/figures/*.png)))
+
+
+# FIXME: probably have to shell escape to determine the file names
+_DOC_C_HTML = $(foreach f, \
+ $(shell xsltproc --xinclude \
+ --stringparam db.chunk.basename "$(DOC_MODULE)" \
+ $(_chunks) "C/$(DOC_MODULE).xml"), \
+ C/$(f).xhtml)
+
+
+###############################################################################
+_DOC_POFILES = $(if $(DOC_MODULE)$(DOC_ID), \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(lc).po))
+
+_DOC_MOFILES = $(patsubst %.po,%.mo,$(_DOC_POFILES))
+_DOC_LC_MODULES = $(if $(DOC_MODULE), \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xml))
+
+_DOC_LC_PAGES = \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach page,$(_DOC_C_PAGES), \
+ $(lc)/$(notdir $(page)) ))
+
+_DOC_LC_INCLUDES = \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach inc,$(_DOC_C_INCLUDES), \
+ $(lc)/$(notdir $(inc)) ))
+
+
+# FIXME: probably have to shell escape to determine the file names
+_DOC_LC_HTML = \
+ $(foreach lc,$(_DOC_REAL_LINGUAS),$(foreach doc,$(_DOC_C_HTML), \
+ $(lc)/$(notdir $(doc)) ))
+
+_DOC_LC_DOCS = \
+ $(_DOC_LC_MODULES) $(_DOC_LC_INCLUDES) $(_DOC_LC_PAGES) \
+ $(if $(filter html HTML,$(_DOC_REAL_FORMATS)),$(_DOC_LC_HTML))
+
+_DOC_LC_FIGURES = $(foreach lc,$(_DOC_REAL_LINGUAS), \
+ $(patsubst C/%,$(lc)/%,$(_DOC_C_FIGURES)) )
+
+_DOC_SRC_FIGURES = \
+ $(foreach fig,$(_DOC_C_FIGURES), $(foreach lc,C $(_DOC_REAL_LINGUAS), \
+ $(wildcard $(srcdir)/$(lc)/$(patsubst C/%,%,$(fig))) ))
+
+_DOC_POT = $(if $(DOC_MODULE),$(DOC_MODULE).pot)
+
+################################################################################
+_DOC_HTML_ALL = $(if $(filter html HTML,$(_DOC_REAL_FORMATS)), \
+ $(_DOC_C_HTML) $(_DOC_LC_HTML))
+
+_DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml)
+_clean_omf = $(if $(_DOC_OMF_IN),clean-doc-omf)
+_clean_dsk = $(if $(_DOC_DSK_IN),clean-doc-dsk)
+_clean_lc = $(if $(_DOC_REAL_LINGUAS),clean-doc-lc)
+_clean_dir = $(if $(DOC_MODULE)$(DOC_ID),clean-doc-dir)
+_doc_install_dir = $(if $(DOC_ID),$(DOC_ID),$(DOC_MODULE))
+DOC_ID = simple-scan
+DOC_INCLUDES = legal.xml
+DOC_FIGURES =
+DOC_PAGES = index.page \
+ adf.page \
+ crop.page \
+ dpi.page \
+ edit.page \
+ email.page \
+ print.page \
+ rotate.page \
+ save.page \
+ scanner.page \
+ scanning.page
+
+DOC_LINGUAS =
+DISTCLEANFILES = \
+ Makefile.in
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gnome-doc-utils.make $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu help/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu help/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @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
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-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)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+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 Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-local \
+ dist-hook distclean distclean-generic distclean-local distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-local 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 \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-local pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-local
+
+
+DOC_H_FILE ?=
+
+DOC_H_DOCS ?=
+
+$(DOC_H_FILE): $(DOC_H_DOCS);
+ @rm -f $@.tmp; touch $@.tmp;
+ echo 'const gchar* documentation_credits[] = {' >> $@.tmp
+ list='$(DOC_H_DOCS)'; for doc in $$list; do \
+ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
+ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
+ xsltproc --path "$$xmlpath" $(_credits) $$doc; \
+ done | sort | uniq \
+ | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \
+ | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp
+ echo ' NULL' >> $@.tmp
+ echo '};' >> $@.tmp
+ echo >> $@.tmp
+ list='$(DOC_H_DOCS)'; for doc in $$list; do \
+ xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
+ if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
+ docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \
+ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \
+ echo $$xmlpath; \
+ ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
+ for id in $$ids; do \
+ echo '#define HELP_'`echo $$docid`'_'`echo $$id \
+ | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \
+ done; \
+ echo >> $@.tmp; \
+ done;
+ cp $@.tmp $@ && rm -f $@.tmp
+
+dist-check-gdu:
+@HAVE_GNOME_DOC_UTILS_FALSE@ @echo "*** GNOME Doc Utils must be installed in order to make dist"
+@HAVE_GNOME_DOC_UTILS_FALSE@ @false
+
+.PHONY: dist-doc-header
+dist-doc-header: $(DOC_H_FILE)
+ @if test -f "$(DOC_H_FILE)"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$(INSTALL_DATA) $${d}$(DOC_H_FILE) $(distdir)/$(DOC_H_FILE)"; \
+ $(INSTALL_DATA) "$${d}$(DOC_H_FILE)" "$(distdir)/$(DOC_H_FILE)";
+
+doc-dist-hook: dist-check-gdu $(if $(DOC_H_FILE),dist-doc-header)
+
+.PHONY: clean-doc-header
+clean-local: $(_clean_doc_header)
+distclean-local: $(_clean_doc_header)
+mostlyclean-local: $(_clean_doc_header)
+maintainer-clean-local: $(_clean_doc_header)
+clean-doc-header:
+ rm -f $(DOC_H_FILE)
+
+all: $(DOC_H_FILE)
+
+################################################################################
+
+DOC_MODULE ?=
+
+DOC_ID ?=
+
+DOC_PAGES ?=
+
+DOC_ENTITIES ?=
+
+DOC_INCLUDES ?=
+
+DOC_FIGURES ?=
+
+DOC_FORMATS ?= docbook
+
+DOC_LINGUAS ?=
+
+################################################################################
+
+_xml2po ?= `which xml2po`
+
+_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
+_db2omf ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
+_malrng ?= `$(PKG_CONFIG) --variable malrng gnome-doc-utils`
+_chunks ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
+_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
+_ids ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
+@ENABLE_SK_TRUE@_skpkgdatadir ?= `scrollkeeper-config --pkgdatadir`
+@ENABLE_SK_TRUE@_sklocalstatedir ?= `scrollkeeper-config --pkglocalstatedir`
+@ENABLE_SK_TRUE@_skcontentslist ?= $(_skpkgdatadir)/Templates/C/scrollkeeper_cl.xml
+
+$(_DOC_OMF_DB) : $(_DOC_OMF_IN)
+$(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %/$(DOC_MODULE).xml
+ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \
+ echo "The file '$(_skcontentslist)' does not exist." >&2; \
+ echo "Please check your ScrollKeeper installation." >&2; \
+ exit 1; }
+ xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
+
+$(_DOC_OMF_HTML) : $(_DOC_OMF_IN)
+$(_DOC_OMF_HTML) : $(DOC_MODULE)-html-%.omf : %/$(DOC_MODULE).xml
+@ENABLE_SK_TRUE@ @test "x$(_ENABLE_SK)" != "xtrue" -o -f "$(_skcontentslist)" || { \
+@ENABLE_SK_TRUE@ echo "The file '$(_skcontentslist)' does not exist" >&2; \
+@ENABLE_SK_TRUE@ echo "Please check your ScrollKeeper installation." >&2; \
+@ENABLE_SK_TRUE@ exit 1; }
+ xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
+
+.PHONY: omf
+omf: $(_DOC_OMF_ALL)
+
+.PHONY: po
+po: $(_DOC_POFILES)
+
+.PHONY: mo
+mo: $(_DOC_MOFILES)
+
+$(_DOC_POFILES):
+ @if ! test -d $(dir $@); then \
+ echo "mkdir $(dir $@)"; \
+ mkdir "$(dir $@)"; \
+ fi
+ @if test ! -f $@ -a -f $(srcdir)/$@; then \
+ echo "cp $(srcdir)/$@ $@"; \
+ cp "$(srcdir)/$@" "$@"; \
+ fi;
+ @docs=; \
+ list='$(_DOC_C_DOCS_NOENT)'; for doc in $$list; do \
+ docs="$$docs $(_DOC_ABS_SRCDIR)/$$doc"; \
+ done; \
+ if ! test -f $@; then \
+ echo "(cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \
+ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)"; \
+ (cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e $$docs > $(notdir $@).tmp && \
+ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp); \
+ else \
+ echo "(cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs)"; \
+ (cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e -u $(notdir $@) $$docs); \
+ fi
+
+$(_DOC_MOFILES): %.mo: %.po
+ @if ! test -d $(dir $@); then \
+ echo "mkdir $(dir $@)"; \
+ mkdir "$(dir $@)"; \
+ fi
+ msgfmt -o $@ $<
+
+# FIXME: fix the dependancy
+# FIXME: hook xml2po up
+$(_DOC_LC_DOCS) : $(_DOC_MOFILES)
+$(_DOC_LC_DOCS) : $(_DOC_C_DOCS)
+ if ! test -d $(dir $@); then mkdir $(dir $@); fi
+ if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$(_DOC_ABS_SRCDIR)/"; fi; \
+ mo="$(dir $@)$(patsubst %/$(notdir $@),%,$@).mo"; \
+ if [ -f "$${mo}" ]; then mo="../$${mo}"; else mo="$(_DOC_ABS_SRCDIR)/$${mo}"; fi; \
+ (cd $(dir $@) && \
+ $(_xml2po) -m $(_xml2po_mode) -e -t "$${mo}" \
+ "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \
+ cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)
+.PHONY: pot
+pot: $(_DOC_POT)
+$(_DOC_POT): $(_DOC_C_DOCS_NOENT)
+ $(_xml2po) -m $(_xml2po_mode) -e -o $@ $^
+
+$(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
+ xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
+
+################################################################################
+
+all: \
+ $(_DOC_C_DOCS) $(_DOC_LC_DOCS) \
+ $(_DOC_OMF_ALL) $(_DOC_DSK_ALL) \
+ $(_DOC_HTML_ALL) $(_DOC_POFILES)
+
+################################################################################
+
+.PHONY: clean-doc-omf clean-doc-dsk clean-doc-lc clean-doc-dir
+
+clean-doc-omf: ; rm -f $(_DOC_OMF_DB) $(_DOC_OMF_HTML)
+clean-doc-dsk: ; rm -f $(_DOC_DSK_DB) $(_DOC_DSK_HTML)
+clean-doc-lc:
+ rm -f $(_DOC_LC_DOCS)
+ rm -f $(_DOC_MOFILES)
+ @list='$(_DOC_POFILES)'; for po in $$list; do \
+ if ! test "$$po" -ef "$(srcdir)/$$po"; then \
+ echo "rm -f $$po"; \
+ rm -f "$$po"; \
+ fi; \
+ done
+# .xml2.po.mo cleaning is obsolete as of 0.18.1 and could be removed in 0.20.x
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ if test -f "$$lc/.xml2po.mo"; then \
+ echo "rm -f $$lc/.xml2po.mo"; \
+ rm -f "$$lc/.xml2po.mo"; \
+ fi; \
+ done
+clean-doc-dir: clean-doc-lc
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ for dir in `find $$lc -depth -type d`; do \
+ if ! test $$dir -ef $(srcdir)/$$dir; then \
+ echo "rmdir $$dir"; \
+ rmdir "$$dir"; \
+ fi; \
+ done; \
+ done
+
+clean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+distclean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+mostlyclean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+maintainer-clean-local: \
+ $(_clean_omf) $(_clean_dsk) \
+ $(_clean_lc) $(_clean_dir)
+
+################################################################################
+
+.PHONY: dist-doc-docs dist-doc-pages dist-doc-figs dist-doc-omf dist-doc-dsk
+doc-dist-hook: \
+ $(if $(DOC_MODULE)$(DOC_ID),dist-doc-docs) \
+ $(if $(_DOC_C_FIGURES),dist-doc-figs) \
+ $(if $(_DOC_OMF_IN),dist-doc-omf)
+# $(if $(_DOC_DSK_IN),dist-doc-dsk)
+
+dist-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ echo " $(mkinstalldirs) $(distdir)/$$lc"; \
+ $(mkinstalldirs) "$(distdir)/$$lc"; \
+ done
+ @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS) $(_DOC_POFILES)'; \
+ for doc in $$list; do \
+ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
+ docdir=`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ if ! test -d "$(distdir)/$$docdir"; then \
+ echo "$(mkinstalldirs) $(distdir)/$$docdir"; \
+ $(mkinstalldirs) "$(distdir)/$$docdir"; \
+ fi; \
+ echo "$(INSTALL_DATA) $$d$$doc $(distdir)/$$doc"; \
+ $(INSTALL_DATA) "$$d$$doc" "$(distdir)/$$doc"; \
+ done
+
+dist-doc-figs: $(_DOC_SRC_FIGURES)
+ @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; \
+ for fig in $$list; do \
+ if test -f "$$fig"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$fig"; then \
+ figdir=`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ if ! test -d "$(distdir)/$$figdir"; then \
+ echo "$(mkinstalldirs) $(distdir)/$$figdir"; \
+ $(mkinstalldirs) "$(distdir)/$$figdir"; \
+ fi; \
+ echo "$(INSTALL_DATA) $$d$$fig $(distdir)/$$fig"; \
+ $(INSTALL_DATA) "$$d$$fig" "$(distdir)/$$fig"; \
+ fi; \
+ done;
+
+dist-doc-omf:
+ @if test -f "$(_DOC_OMF_IN)"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$(INSTALL_DATA) $$d$(_DOC_OMF_IN) $(distdir)/$(notdir $(_DOC_OMF_IN))"; \
+ $(INSTALL_DATA) "$$d$(_DOC_OMF_IN)" "$(distdir)/$(notdir $(_DOC_OMF_IN))"
+
+dist-doc-dsk:
+ @if test -f "$(_DOC_DSK_IN)"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$(INSTALL_DATA) $$d$(_DOC_DSK_IN) $(distdir)/$(notdir $(_DOC_DSK_IN))"; \
+ $(INSTALL_DATA) "$$d$(_DOC_DSK_IN)" "$(distdir)/$(notdir $(_DOC_DSK_IN))"
+
+################################################################################
+
+.PHONY: check-doc-docs check-doc-omf
+check: \
+ $(if $(DOC_MODULE),check-doc-docs) \
+ $(if $(DOC_ID),check-doc-pages) \
+ $(if $(_DOC_OMF_IN),check-doc-omf)
+
+check-doc-docs: $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ if test -f "$$lc"; \
+ then d=; \
+ xmlpath="$$lc"; \
+ else \
+ d="$(srcdir)/"; \
+ xmlpath="$$lc:$(srcdir)/$$lc"; \
+ fi; \
+ echo "xmllint --noout --noent --path $$xmlpath --xinclude --postvalid $$d$$lc/$(DOC_MODULE).xml"; \
+ xmllint --noout --noent --path "$$xmlpath" --xinclude --postvalid "$$d$$lc/$(DOC_MODULE).xml"; \
+ done
+
+check-doc-pages: $(_DOC_C_PAGES) $(_DOC_LC_PAGES)
+ for lc in C $(_DOC_REAL_LINGUAS); do \
+ if test -f "$$lc"; \
+ then d=; \
+ xmlpath="$$lc"; \
+ else \
+ d="$(srcdir)/"; \
+ xmlpath="$$lc:$(srcdir)/$$lc"; \
+ fi; \
+ for page in $(DOC_PAGES); do \
+ echo "xmllint --noout --noent --path $$xmlpath --xinclude --relaxng $(_malrng) $$d$$lc/$$page"; \
+ xmllint --noout --noent --path "$$xmlpath" --xinclude --relaxng "$(_malrng)" "$$d$$lc/$$page"; \
+ done; \
+ done
+
+check-doc-omf: $(_DOC_OMF_ALL)
+ @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
+ echo "xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf"; \
+ xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' $$omf; \
+ done
+
+################################################################################
+
+.PHONY: install-doc-docs install-doc-html install-doc-figs install-doc-omf install-doc-dsk
+
+install-data-local: \
+ $(if $(DOC_MODULE)$(DOC_ID),install-doc-docs) \
+ $(if $(_DOC_HTML_ALL),install-doc-html) \
+ $(if $(_DOC_C_FIGURES),install-doc-figs) \
+ $(if $(_DOC_OMF_IN),install-doc-omf)
+# $(if $(_DOC_DSK_IN),install-doc-dsk)
+
+install-doc-docs:
+ @for lc in C $(_DOC_REAL_LINGUAS); do \
+ echo "$(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc"; \
+ $(mkinstalldirs) $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$lc; \
+ done
+ @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \
+ if test -f "$$doc"; then d=; else d="$(srcdir)/"; fi; \
+ docdir="$$lc/"`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ docdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$docdir"; \
+ if ! test -d "$$docdir"; then \
+ echo "$(mkinstalldirs) $$docdir"; \
+ $(mkinstalldirs) "$$docdir"; \
+ fi; \
+ echo "$(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
+ $(INSTALL_DATA) $$d$$doc $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc; \
+ done
+
+install-doc-figs:
+ @list='$(patsubst C/%,%,$(_DOC_C_FIGURES))'; for fig in $$list; do \
+ for lc in C $(_DOC_REAL_LINGUAS); do \
+ figsymlink=false; \
+ if test -f "$$lc/$$fig"; then \
+ figfile="$$lc/$$fig"; \
+ elif test -f "$(srcdir)/$$lc/$$fig"; then \
+ figfile="$(srcdir)/$$lc/$$fig"; \
+ else \
+ figsymlink=true; \
+ fi; \
+ figdir="$$lc/"`echo $$fig | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`; \
+ figdir="$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$figdir"; \
+ if ! test -d "$$figdir"; then \
+ echo "$(mkinstalldirs) $$figdir"; \
+ $(mkinstalldirs) "$$figdir"; \
+ fi; \
+ figbase=`echo $$fig | sed -e 's/^.*\///'`; \
+ if $$figsymlink; then \
+ echo "cd $$figdir && $(LN_S) -f ../../C/$$fig $$figbase"; \
+ ( cd "$$figdir" && $(LN_S) -f "../../C/$$fig" "$$figbase" ); \
+ else \
+ echo "$(INSTALL_DATA) $$figfile $$figdir$$figbase"; \
+ $(INSTALL_DATA) "$$figfile" "$$figdir$$figbase"; \
+ fi; \
+ done; \
+ done
+
+install-doc-html:
+ echo install-html
+
+install-doc-omf:
+ $(mkinstalldirs) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)
+ @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
+ echo "$(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ $(INSTALL_DATA) $$omf $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf; \
+ done
+ @if test "x$(_ENABLE_SK)" = "xtrue"; then \
+ echo "scrollkeeper-update -p $(DESTDIR)$(_sklocalstatedir) -o $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \
+ scrollkeeper-update -p "$(DESTDIR)$(_sklocalstatedir)" -o "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)"; \
+ fi;
+
+install-doc-dsk:
+ echo install-dsk
+
+################################################################################
+
+.PHONY: uninstall-doc-docs uninstall-doc-html uninstall-doc-figs uninstall-doc-omf uninstall-doc-dsk
+uninstall-local: \
+ $(if $(DOC_MODULE)$(DOC_ID),uninstall-doc-docs) \
+ $(if $(_DOC_HTML_ALL),uninstall-doc-html) \
+ $(if $(_DOC_C_FIGURES),uninstall-doc-figs) \
+ $(if $(_DOC_OMF_IN),uninstall-doc-omf)
+# $(if $(_DOC_DSK_IN),uninstall-doc-dsk)
+
+uninstall-doc-docs:
+ @list='$(_DOC_C_DOCS) $(_DOC_LC_DOCS)'; for doc in $$list; do \
+ echo " rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
+ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$doc"; \
+ done
+
+uninstall-doc-figs:
+ @list='$(_DOC_C_FIGURES) $(_DOC_LC_FIGURES)'; for fig in $$list; do \
+ echo "rm -f $(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \
+ rm -f "$(DESTDIR)$(HELP_DIR)/$(_doc_install_dir)/$$fig"; \
+ done;
+
+uninstall-doc-omf:
+ @list='$(_DOC_OMF_ALL)'; for omf in $$list; do \
+ if test "x$(_ENABLE_SK)" = "xtrue"; then \
+ echo "scrollkeeper-uninstall -p $(_sklocalstatedir) $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ scrollkeeper-uninstall -p "$(_sklocalstatedir)" "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ fi; \
+ echo "rm -f $(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ rm -f "$(DESTDIR)$(OMF_DIR)/$(_doc_install_dir)/$$omf"; \
+ done
+
+dist-hook: doc-dist-hook
+
+# 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/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@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@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/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 0000000..4191a45
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# 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/LINGUAS b/po/LINGUAS
new file mode 100644
index 0000000..3dcbfc1
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,40 @@
+# please keep this list sorted alphabetically
+#
+af
+ar
+ast
+bg
+ca
+cs
+da
+de
+el
+en_GB
+es
+eu
+fi
+fr
+gl
+he
+hr
+hu
+it
+ja
+lt
+ms
+nb
+nl
+pl
+pt
+pt_BR
+ro
+ru
+sk
+sl
+sr
+sv
+te
+tr
+uk
+vi
+zh_CN
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..cc8a222
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,217 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
+#
+# This file may be copied and used freely without restrictions. It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p@.
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && gencat $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(GENPOT)
+
+install: install-data
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $$dir; \
+ if test -r $$lang.gmo; then \
+ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $(srcdir)/$$lang.gmo as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo"; \
+ fi; \
+ if test -r $$lang.gmo.m; then \
+ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ if test -r $(srcdir)/$$lang.gmo.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+ $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $(srcdir)/$$lang.gmo.m as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info ctags tags CTAGS TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+ done
+
+check: all $(GETTEXT_PACKAGE).pot
+ rm -f missing notexist
+ srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+ if [ -r missing -o -r notexist ]; then \
+ exit 1; \
+ fi
+
+mostlyclean:
+ rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+ rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES stamp-it
+ rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ extra_dists="$(EXTRA_DISTFILES)"; \
+ for file in $$extra_dists; do \
+ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+ done; \
+ for file in $$dists; do \
+ test -f $$file || file="$(srcdir)/$$file"; \
+ ln $$file $(distdir) 2> /dev/null \
+ || cp -p $$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ echo "$$lang:"; \
+ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+ if $$result; then \
+ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.gmo failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+Makefile POTFILES: stamp-it
+ @if test ! -f $@; then \
+ rm -f stamp-it; \
+ $(MAKE) stamp-it; \
+ fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..5b62b1c
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,9 @@
+# List of source files containing translatable strings.
+# Please keep this file sorted alphabetically.
+[encoding: UTF-8]
+[type: gettext/glade]data/simple-scan.ui
+data/simple-scan.desktop.in
+data/simple-scan.schemas.in
+src/scanner.c
+src/simple-scan.c
+src/ui.c
diff --git a/po/af.po b/po/af.po
new file mode 100644
index 0000000..847df46
--- /dev/null
+++ b/po/af.po
@@ -0,0 +1,579 @@
+# Afrikaans translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Afrikaans <af@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jacques Botha https://launchpad.net/~jacquesb"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 0000000..1fc2279
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,597 @@
+# Arabic translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-13 16:22+0000\n"
+"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
+"Language-Team: Arabic <ar@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#×D7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "كل الصفحات من _المغذّي"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "قص"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "أرسل بالبريد"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "أرسل المستندات الممسوحة بالبريد الإلكتروني"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "_قانوني"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "جديد"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "صورة"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "التفضيلات"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "اطبع"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "اطبع المستندات الممسوحة"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "أدر يسارا"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "أدر يمينا"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "أدر ي_سارًا"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "أدر ي_مينًا"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "احفظ"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "احفظ المستند الحالي في ملف"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "امسح"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "م_صدر المسح:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "امسح صفحة مفردة من الماسحة"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "مسح بسيط"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "صفحة مفردة"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "ابدأ مستندا جديدا"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "نص"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_خوّل"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_قص"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_مخصص"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "م_ستند"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_مساعدة"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_خطاب"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "لا _شيء"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_صفحة"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_كلمة السر:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "أ_در القص"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "أو_قف المسح"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "اسم _مستخدم المورد:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "امسح المستندات"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "الجهاز الذي سيمسح منه"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "اتجاه المسح"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "ارتفاع الصورة الممسوحة بالبكسل"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "جهاز SANE للحصول على الصور منه."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "صحيح إن كانت نافذة البرنامج مكبرة"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"اتجاه الماسحة عبر الصفحة الممسوحة . يمكن أن يكون: 'top-to-bottom' 'bottom-"
+"to-top' 'left-to-right' 'right-to-left'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"ارتفاع الصورة الممسوحة بالبكسل. تحدث هذه القيمة حسب ما كانت عليه الصورة "
+"السابقة."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"عرض الصورة الممسوحة بالبكسل. تحدث هذه القيمة حسب ما كانت عليه الصورة السابقة."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "نوع المستند الذي يجري مسحه"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"نوع المستند الذي يجري مسحه. 'text' للمستندات النصية، 'photo' للصور. يحدد هذا "
+"الإعداد دقة المسح والألوان والمعالجة البعدية."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "عرض الصورة الممسوحة بالبكسل."
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "ارتفاع النافذة بالبكسل"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "عرض النافذة بالبكسل"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "لا توجد أي ماسحات. من فضلك وصّل ماسحة."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "تعذّر الاتصال بالماسحة"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "تعذّر بدء المسح"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "خطأ في التواصل مع الماسحة"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "فشل المسح"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "فشل حفظ الملف"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "اسم مستخدم وكلمة سر مطلوبين للنفاذ إلى '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "لم يُعثر على أي ماسحة"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "يرجى التحقق من أنّ الماسحة متصلة و تعمل"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "احفظ كـ..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"هذا البرنامج حر، يمكنك توزيعه و/أو تعديله حسب بنود رخصة جنو العمومية \n"
+"كما نشرتها مؤسسة البرامج الحرة، الإصدار الثالث أو أي إصدار أحدث (حسب "
+"رغبتك).\n"
+"\n"
+"هذا البرنامج يوزع على أمل أن يكون مفيداً، ولكن دون أية ضمانات، بما في ذلك \n"
+"ضمانات قابلية البرنامج للتسويق أو الملاءمة لغرض معين. انظر نص رخصة جنو\n"
+"العمومية لمزيد من التفاصيل.\n"
+"\n"
+"من المفترض أنك تلقيت نسخة من رخصة جنو العمومية مع هذا البرنامج.\n"
+"إذا لم يحدث هذا فانظر <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "عن \"المسح البسيط\""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "أداة بسيطة لمسح المستندات"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Kaïs Bejaoui https://launchpad.net/~kais\n"
+" Khaled Hosny https://launchpad.net/~khaledhosny\n"
+" benohb https://launchpad.net/~hamid"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "ملفات مفقودة"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "من فضلك تحقق من تثبيتك"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "غيّر _الماسحة"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "مستند ممسوح.pdf"
diff --git a/po/ast.po b/po/ast.po
new file mode 100644
index 0000000..491c39d
--- /dev/null
+++ b/po/ast.po
@@ -0,0 +1,603 @@
+# Asturian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Asturian <ast@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Tol_es páxines dende l'alimentador"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Lle_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Semeya"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferencies"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Voltiar a la e_squierda"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Voltiar a la _Drecha"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Escan_ear:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "U_na páxina"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Testu"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorizar"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Recortar"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalizáu"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Documentu"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Aida"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Carta"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Dengún"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Páxina"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Contraseña"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Voltiar recorte"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Nome d'usuariu pal recursu:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Nun puede coneutase col escáner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Nun puede anicase l'escáner"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Fallu de comunicación col escáner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Falló al escanerr"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Falló al guardar el ficheru"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Usu:\n"
+" %s [DEVICE...] - Scanning utility"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opciones de GTK+:\n"
+" --class=CLASE Clas de programa como s'usa pol xestor de "
+"ventanes\n"
+" --name=NOME Nome del programa como s'usa pol xestor de "
+"ventanes\n"
+" --screen=PANTALLA Pantalla X qu'usar\n"
+" --sync Facer que les llamaes les X seyan "
+"síncrones\n"
+" --gtk-module=MÓDULOS Cargar módulos GTK+ adicionales\n"
+" --g-fatal-warnings Facer que tolos avisos seyan fatales"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Requierse nome d'usuariu y contraseña p'acceder a '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Nun se deteutó dengún escáner"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Por favor comprueba que l'escáner ta coneutáu y activáu"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Guardar como..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Tocante a Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Una cenciella ferramienta pa escanear documentos"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Iñigo Varela https://launchpad.net/~malditoastur"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Ficheros non alcontraos"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Por favor, comprueba la instalación"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Documentu Escaneáu.pdf"
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..f422ac5
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,583 @@
+# Bulgarian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-27 20:56+0000\n"
+"Last-Translator: Krasimir Chonov <mk2616@abv.bg>\n"
+"Language-Team: Bulgarian <bg@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Е-поща"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Снимка"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Настройки"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Печат"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Завъртане наляво"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Завъртане надясно"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Завъртане _наляво"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Завъртане на_дясно"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Запазване"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Сканиране"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Източник"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Сканиране на"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Опростено сканиране"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Единична страница"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Текст"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Упълномощаване"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "И_зрязване"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Документ"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Помощ"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Нищо"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Страница"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Парола:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Потребителско име за ресурса:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Не може да се осъществи връзка със скенера"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Сканирането не може да бъде стартирано"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Грешка при комуникацията със скенера"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Неуспех при сканиране"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Неуспех при запазване на файл"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Употреба:\n"
+" %s [УСТРОЙСТВО...] - Инструмент за сканиране"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Необходими са потребителско име и парола за достъп до '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Не са открити скенери"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Моля проверете дали скенерът ви е свързан и включен"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Запазване като..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Относно Опростено сканиране"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Инструмент за опростено сканиране на документи"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Krasimir Chonov https://launchpad.net/~kchonov\n"
+" Svetoslav Stefanov https://launchpad.net/~svetlisashkov\n"
+" i.raynov https://launchpad.net/~ivaylo-raynov\n"
+" Филип Андонов https://launchpad.net/~vonodna"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Липсващи файлове"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Моля проверете инсталацията си"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Сканиран документ.pdf"
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..8726882
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,591 @@
+# Catalan translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-11 15:07+0000\n"
+"Last-Translator: David Planella <Unknown>\n"
+"Language-Team: Catalan <ca@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Totes les pàgines de l'a_limentador"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Envia"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Envia els documents escanejats per correu electrònic"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Nou"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferències"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Imprimeix"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Imprimeix els documents escanejats"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Gira a l'esquerra"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Gira a la dreta"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Gira a l'_esquerra"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Gira a la _dreta"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Desa"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Desa el document actual en un fitxer"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Escaneja"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Font d'_escaneig:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Escaneja una sola pàgina de l'escàner"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Escaneig senzill"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Pàgina _individual"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Comença un document nou"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Text"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autoritza"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Escapçament"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalitzat"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Document"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "A_juda"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Cap"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Pàgina"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Contrasenya:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Gira l'escapçament"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Atura l'escaneig"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Nom d'usuari del recurs:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Escanegeu documents"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "No s'ha pogut connectar a l'escàner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "No s'ha pogut iniciar l'escaneig"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "S'ha produït un error en comunicar-se amb l'escàner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Ha fallat l'escaneig"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Ha fallat el desament del fitxer"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Forma d'ús:\n"
+" %s [DISPOSITIU...] - Utilitat d'escaneig"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opcions de la GTK+:\n"
+" --class=CLASSE Classe del programa tal com l'utilitza el "
+"gestor de finestres\n"
+" --name=NOM Nom del programa tal com l'utilitza el "
+"gestor de finestres\n"
+" --screen=PANTALLA Pantalla X a utilitzar\n"
+" --sync Fa que les crides X siguin síncrones\n"
+" --gtk-module=MÒDULS Carrega mòduls de la GTK+ addicionals\n"
+" --g-fatal-warnings Fa que tots els avisos siguin fatals"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Cal un usuari i contrasenya per a accedir a «%s»"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "No s'ha detectat cap escàner"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Comproveu que l'escàner està connectat i engegat"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Anomena i desa..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Quant a l'escaneig senzill"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Eina senzilla d'escaneig de documents"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" David Planella https://launchpad.net/~dpm\n"
+" Siegfried Gevatter https://launchpad.net/~rainct\n"
+" pancake https://launchpad.net/~pancake"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Document escanejat.pdf"
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..4bdbfb4
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,580 @@
+# Czech translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Czech <cs@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Petr Šimáček https://launchpad.net/~petr-simacek\n"
+" Vitezslav Kotrla https://launchpad.net/~vitezslav-kotrla"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..b70a6a0
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,581 @@
+# Danish translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Danish <da@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" David Nielsen https://launchpad.net/~davidnielsen\n"
+" MadsRH https://launchpad.net/~madsrh\n"
+" Niels Kjøller Hansen https://launchpad.net/~kjoller"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..78e9b2e
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,646 @@
+# German translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-18 19:46+0000\n"
+"Last-Translator: Daniel Schury <Surst@gmx.net>\n"
+"Language-Team: German <de@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-03-19 07:56+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Alle Seiten aus dem _Papiereinzug"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Anwendungseinstellungen konfigurieren"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Zuschneiden"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Die gewählte Seite zurecht schneiden"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "E-Mail"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Gescanntes Dokument per E-Mail versenden"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "US _Legal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Neu"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Drucken"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Gescannte Dokumente drucken"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Links herum drehen"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Rechts herum drehen"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "_Links herum drehen"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "_Rechts herum drehen"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Die Seite links herum drehen (Gegen den Uhrzeigersinn)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Die Seite rechts herum drehen (Mit dem Uhrzeigersinn)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Speichern"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Aktuelles Dokument in eine Datei speichern"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "Sc_annen"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Scannen"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Scan-_Quelle:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Eine einzelne Seite vom Scanner einscannen"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Einzelne _Seite"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Neues Dokument erstellen"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Anhalten"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Aktuellen Scanvorgang unterbrechen"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Text"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"Die Art des zu scannenden Dokuments. Verwenden Sie »Text« für schnelle Scans "
+"von Textdokumenten mittlerer Qualität oder »Foto« für langsame Scans hoher "
+"Qualität für Grafiken oder Fotos."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorisieren"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "I_nhalt"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Zuschneiden"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Benutzerdefiniert"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokument"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_E-Mail"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Hilfe"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "US _Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Nicht zuschneiden"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Seite"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Passwort:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "Foto-_Auflösung:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Zuschneideauswahl _drehen"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Scanvorgang anhalten"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "_Text-Auflösung:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Benutzername für Quelle:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Dokumente scannen"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Scangerät"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Scanverzeichnis"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Verzeichnis, in dem die Dateien gespeichert werden"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Höhe des gescannten Bilds in Pixel"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Auflösung von Foto-Scans"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Auflösung von Text-Scans"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Auflösung des zuletzt gescannten Bildes"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "SANE-Gerät, von dem Bilder angefordert werden."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE wenn das Anwendungsfenster maximiert ist"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"Die Scanrichtung im Verhältnis zur zu gescannten Seite. Kann eins der "
+"folgenden sein: »Oben nach Unten«, »Unten nach Oben«, »Links nach Rechts« "
+"oder »Rechts nach Links«"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+"Das Verzeichnis, in dem die Dateien gespeichert werden. Vorgabe ist das "
+"Dokumente-Verzeichnis, wenn nicht gesetzt."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Die Höhe des gescannten Bilds in Pixel. Der Wert wird entsprechend der "
+"zuletzt gescannten Seite übernommen."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+"Die Auflösung in DPI (Punkte pro Zoll) des zuletzt eingescannten Bildes."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr "Die für Fotos zu verwendende Auflösung in DPI (Punkte pro Zoll)"
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr "Die für Text zu verwendende Auflösung in DPI (Punkte pro Zoll)"
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Die Breite des gescannten Fotos in Pixeln. Der Wert wird entsprechend der "
+"zuletzt gescannten Seite übernommen."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Typ des zu scannenden Dokuments"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Typ des zu scannenden Dokuments. »Text« steht für Textdokumente, »Foto« für "
+"Fotos. Die Einstellungen bestimmen die Scanauflösung, -Farbe und -"
+"Nachbearbeitung."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Breite des gescannten Bilds in Pixel"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Fensterhöhe in Pixel"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Fensterbreite in Pixel"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Keine Scanner verfügbar. Bitte schließen Sie einen Scanner an."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Verbindung zu Scanner konnte nicht hergestellt werden"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Scanvorgang konnte nicht gestartet werden"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Fehler bei der Kommunikation mit dem Scanner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Scannen fehlgeschlagen"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Gescanntes Dokument"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Datei konnte nicht gespeichert werden"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Verwendung:\n"
+" %s [GERÄT...] - Scanwerkzeug"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Hilfeoptionen:\n"
+" -d, --debug Zeigt Debug-Nachrichten\n"
+" -v, --version Zeigt Versionsnummer\n"
+" -h, --help Zeigt die Hilfeoptionen\n"
+" --help-all Zeigt alle Hilfeoptionen\n"
+" --help-gtk Zeigt GTK+-Optionen"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+-Optionen:\n"
+" --class=KLASSE Die vom Fensterverwalter verwendete "
+"Programmklasse\n"
+" --name=NAME Der vom Fensterverwalter verwendete "
+"Programmname\n"
+" --screen=ANZEIGE Zu verwendende X-Anzeige\n"
+" --sync X-Aufrufe synchron durchführen\n"
+" --gtk-module=MODULE Zusätzliche GTK+-Module laden\n"
+" --g-fatal-warnings All Warnungen werden zu fatalen"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+"Für den Zugriff auf »%s« werden ein Benutzername und ein Passwort benötigt"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Kein Scanner gefunden"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+"Bitte überprüfen Sie, ob ihr Scanner angeschlossen und eingeschaltet ist"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr "Bildvorschauanwendung konnte nicht gestartet werden"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (Mehrseitiges Dokument)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (Verlustbehaftet)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (Verlustfrei)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Speichern unter …"
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Bilddateien"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Alle Dateitypen"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Datei-_Typ auswählen"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Die Hilfedatei konnte nicht geöffnet werden"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Dieses Programm ist freie Software, Sie können es weitergeben\n"
+"und/oder verändern, solange Sie sich an die Vorgaben der GNU\n"
+"General Public License halten, wie von der Free Software\n"
+"Foundation festgelegt; entweder in Version 3 der Lizenz oder\n"
+"(nach Ihrem Ermessen) in jeder folgenden Version.\n"
+"\n"
+"Das Programm wurde mit dem Ziel veröffentlicht, dass Sie es\n"
+"nützlich finden, jedoch OHNE JEDWEDE GARANTIE, sogar\n"
+"ohne eine implizite Garantie der VERKAUFBARKEIT oder der\n"
+"NUTZBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Für mehr\n"
+"Informationen lesen Sie bitte die GNU General Public License\n"
+"(GNU GPL).\n"
+"\n"
+"Mit dem Programm sollten Sie außerdem eine Kopie der GNU\n"
+"General Public License erhalten haben. Falls dem nicht so\n"
+"ist, finden Sie diese im Internet unter\n"
+"<http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Über Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Einfaches Werkzeug zum Scannen von Dokumenten"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Charon https://launchpad.net/~markus-lobedann\n"
+" Daniel Schury https://launchpad.net/~surst\n"
+" Dennisgamer https://launchpad.net/~dennis-ertelt\n"
+" Dominik Grafenhofer https://launchpad.net/~dgrafenhofer\n"
+" Franz E. https://launchpad.net/~franzellendorff\n"
+" Funky Future https://launchpad.net/~funky-future\n"
+" HOMBRESINIESTRO https://launchpad.net/~hombre\n"
+" Hendrik Brandt https://launchpad.net/~heb\n"
+" Lars Vopicka https://launchpad.net/~lars+vopicka\n"
+" Moritz Baumann https://launchpad.net/~mo-germany\n"
+" Raphael J. Schmid https://launchpad.net/~raphael-j-schmid\n"
+" Stefan Buchholz https://launchpad.net/~stef-buchholz\n"
+" Steve G. https://launchpad.net/~sgo.ger\n"
+" Thorsten Reinbold https://launchpad.net/~treinbold\n"
+" simon danner https://launchpad.net/~simondanner\n"
+" staedtler-przyborski https://launchpad.net/~staedtler-przyborski\n"
+" tlue https://launchpad.net/~tlueber"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (Entwurf)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (Hohe Auflösung)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (Vorgabe)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Dateien nicht gefunden"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Bitte überprüfen Sie Ihre Installation"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "_Scanner wechseln"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Gescanntes Dokument.pdf"
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..1b88365
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,633 @@
+# Greek translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-23 00:21+0000\n"
+"Last-Translator: Thanos Lefteris <alefteris@gmail.com>\n"
+"Language-Team: Greek <el@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-03-24 04:59+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Όλες τις σελίδες από την _τροφοδοσία"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Ρύθμιση των προτιμήσεων της εφαρμογής"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Περικοπή"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Περικοπή της επιλεγμένης σελίδας"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Email"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Στείλτε με Email τα σαρωμένα έγγραφα"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Νέο"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Φωτογραφία"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Προτιμήσεις"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Εκτύπωση"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Εκτύπωση των σαρωμένων εγγράφων"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Περιστροφή αριστερά"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Περιστροφή δεξιά"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Περιστροφή _αριστερά"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Περιστροφή _δεξιά"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Περιστροφή της σελίδας αριστερά"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Περιστροφή της σελίδας δεξιά"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Αποθήκευση"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Αποθήκευση τρέχοντος εγγράφου σε αρχείο"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "_Σάρωση"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Σάρωση"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "_Πηγή σάρωσης:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Σάρωση μίας σελίδας από τον σαρωτή"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Σάρωση"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Μία σελίδα"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Δημιουργία νέου εγγράφου"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Διακοπή"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Διακοπή τρέχουσας σάρωσης"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Κείμενο"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"Ο τύπος του εγγράφου που θα σαρωθεί. Χρησιμοποιήστε \"Κείμενο\" για γρήγορη, "
+"μέτριας ποιότητας σάρωση εγγράφων κειμένου ή \"Φωτογραφία\" για πιο αργή, "
+"υψηλότερης ποιότητας σάρωση εγγράφων με γραφικά ή φωτογραφίες."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Εξουσιοδότηση"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Περιεχόμενα"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Περικοπή"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Προσαρμοσμένο"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "Έ_γγραφο"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_Email"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Βοήθεια"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Κανένα"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Σελίδα"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Κωδικός:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "Ανάλυση _φωτογραφίας:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Περιστροφή περικοπής"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Διακοπή σάρωσης"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "Ανάλυση _κειμένου:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Όνομα _χρήστη για πόρο:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Σάρωση εγγράφων"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Συσκευή που χρησιμοποιείται για σάρωση"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Κατεύθυνση σάρωσης"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Κατάλογος στον οποίο θα αποθηκευτούν τα αρχεία"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Ύψος εικόνας σάρωσης σε εικονοστοιχεία"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Ανάλυση για σάρωση φωτογραφιών"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Ανάλυση για σάρωση κειμένου"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Ανάλυση τελευταίας σαρωμένης εικόνας"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Συσκευή SANE που χρησιμοποιείται για την λήψη εικόνων."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "ΑΛΗΘΕΣ αν το παράθυρο της εφαρμογής είναι μεγιστοποιημένο"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"Η κατεύθυνση του σαρωτή κατά μήκος της σαρωμένης σελίδας. Μπορεί να είναι "
+"κάποιο από τα εξής: 'top-to-bottom' (από πάνω προς τα κάτω) 'bottom-to-top' "
+"(από κάτω προς τα πάνω) 'left-to-right' (από αριστερά προς δεξιά) 'right-to-"
+"left' (από δεξιά προς αριστερά)"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+"Ο κατάλογος στον οποίο θα αποθηκευτούν τα αρχεία. Αν δεν ορισθεί, προεπιλογή "
+"είναι ο κατάλογος εγγράφων."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Το ύψος της σαρωμένης εικόνας σε εικονοστοιχεία. Η τιμή αυτή ενημερώνεται με "
+"το ύψος της τελευταίας σαρωμένης σελίδας."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr "Η ανάλυση σε κουκκίδες ανά ίντσα της προηγούμενης σαρωμένης εικόνας."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+"Η ανάλυση σε κουκκίδες ανά ίντσα που θα χρησιμοποιηθεί στην σάρωση "
+"φωτογραφιών."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+"Η ανάλυση σε κουκκίδες ανά ίντσα που θα χρησιμοποιηθεί στην σάρωση κειμένων."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Το πλάτος της σαρωμένης εικόνας σε εικονοστοιχεία. Η τιμή αυτή ενημερώνεται "
+"με το πλάτος της τελευταίας σαρωμένης σελίδας."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Ο τύπος του εγγράφου που σαρώνεται"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Ο τύπος του εγγράφου που σαρώνεται. 'text' για έγγραφα κειμένου, 'photo' για "
+"φωτογραφίες. Αυτή η ρύθμιση καθορίζει την ανάλυση σάρωσης, τα χρώματα και τη "
+"μετέπειτα επεξεργασία."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Πλάτος της σαρωμένης εικόνας σε εικονοστοιχεία"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Ύψος παραθύρου σε εικονοστοιχεία"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Πλάτος παραθύρου σε εικονοστοιχεία"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Δεν υπάρχουν διαθέσιμοι σαρωτές. Παρακαλούμε συνδέστε ένα σαρωτή."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Αδύνατη η σύνδεση με τον σαρωτή"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Αδύνατη η εκκίνηση της σάρωσης"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Σφάλμα κατά την επικοινωνία με τον σαρωτή"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Η σάρωση απέτυχε"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Σαρωμένο"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Αποτυχία αποθήκευσης του αρχείου"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Χρήση:\n"
+" %s [ΣΥΣΚΕΥΗ...] - Εφαρμογή σάρωσης"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Επιλογές βοήθειας:\n"
+" -d, --debug Εμφάνιση μηνυμάτων αποσφαλμάτωσης\n"
+" -v, --version Εμφάνιση αριθμού έκδοσης\n"
+" -h, --help Εμφάνιση επιλογών βοήθειας\n"
+" --help-all Εμφάνιση όλων των επιλογών βοήθειας\n"
+" --help-gtk Εμφάνιση επιλογών GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Επιλογές GTK+:\n"
+" --class=CLASS Κλάση προγράμματος χρησιμοποιούμενη από το "
+"διαχειριστή παραθύρων\n"
+" --name=NAME Όνομα προγράμματος χρησιμοποιούμενο από το "
+"διαχειριστή παραθύρων\n"
+" --screen=SCREEN Οθόνη X προς χρήση\n"
+" --sync Να είναι σύγχρονες οι κλήσεις στο X\n"
+" --gtk-module=MODULES Φόρτωση πρόσθετων αρθρωμάτων GTK+\n"
+" --g-fatal-warnings Να είναι όλες οι προειδοποιήσεις μοιραίες"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Απαιτείται όνομα χρήστη και κωδικός για την πρόσβαση στο '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Δεν ανιχνεύθηκαν σαρωτές"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+"Παρακαλούμε βεβαιωθείτε ότι ο σαρωτής σας είναι συνδεδεμένος και σε "
+"λειτουργία"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr "Αδύνατο το άνοιγμα της εφαρμογής προβολής εικόνων"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (έγγραφο πολλαπλών σελίδων)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (συμπιεσμένο)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (δίχως συμπίεση)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Αποθήκευση ως..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Αρχεία εικόνων"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Όλα τα αρχεία"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Επιλογή _τύπου αρχείου"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Αδύνατο το άνοιγμα του αρχείου βοήθειας"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Αυτό το πρόγραμμα είναι ελεύθερο λογισμικό: Επιτρέπεται η αναδιανομή ή/και "
+"τροποποίησή του υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU (GNU "
+"General Public License), όπως αυτή έχει δημοσιευτεί από το Ίδρυμα Ελεύθερου "
+"Λογισμικού (Free Software Foundation) – είτε της έκδοσης 3 της Άδειας, είτε "
+"(κατ' επιλογήν) οποιασδήποτε μεταγενέστερης έκδοσης.\n"
+"\n"
+"Το πρόγραμμα αυτό διανέμεται με την ελπίδα ότι θα αποδειχθεί χρήσιμο, παρόλα "
+"αυτά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ – χωρίς ούτε και την σιωπηρή εγγύηση "
+"ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΗ ΧΡΗΣΗ. Για περισσότερες "
+"λεπτομέρειες ανατρέξτε στη Γενική Άδεια Δημόσιας Χρήσης GNU (GNU General "
+"Public License).\n"
+"\n"
+"Θα πρέπει να έχετε λάβει ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης "
+"GNU (GNU General Public License) μαζί με αυτό το πρόγραμμα. Εάν όχι, δείτε "
+"εδώ: <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Περί Σάρωσης"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Απλό εργαλείο σάρωσης εγγράφων"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alex Ferguson https://launchpad.net/~thoughtmonster\n"
+" Jennie Petoumenou https://launchpad.net/~jennie\n"
+" Thanos Lefteris https://launchpad.net/~alefteris"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (πρόχειρο)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (υψηλή ανάλυση)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (προεπιλογή)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Λείπουν αρχεία"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Παρακαλούμε ελέγξτε την εγκατάσταση σας"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Αλλαγή _σαρωτή"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Σαρωμένο.pdf"
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644
index 0000000..3e64533
--- /dev/null
+++ b/po/en_GB.po
@@ -0,0 +1,622 @@
+# English (United Kingdom) translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-23 12:03+0000\n"
+"Last-Translator: Alex Denvir <coldfff@blueyonder.co.uk>\n"
+"Language-Team: English (United Kingdom) <en_GB@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-03-24 04:59+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "All Pages From _Feeder"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Configure application preferences"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Crop"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Crop the selected page"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "E-mail"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "E-mail the scanned documents"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "New"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Photo"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferences"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Print"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Print the scanned documents"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Rotate Left"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Rotate Right"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Rotate _Left"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Rotate _Right"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Rotate the page to the left (anti-clockwise)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Rotate the page to the right (clockwise)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Save"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Save the current document to a file"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "Sc_an"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Scan"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Scan S_ource:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Scan a single page from the scanner"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Single _Page"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Start a new document"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Stop"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Stop the current scan"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Text"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Authorise"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Contents"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Crop"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Custom"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Document"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_E-mail"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Help"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_None"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Page"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Password:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "_Photo Resolution:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Rotate Crop"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Stop Scan"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "_Text Resolution:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Username for resource:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Scan Documents"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Device to scan from"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Direction of scan"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Directory to save files to"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Height of scanned image in pixels"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Resolution for photo scans"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Resolution for text scans"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Resolution of last scanned image"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "SANE device to acquire images from."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE if the application window is maximised"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr "The folder where files are saved. Default is the Documents folder."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"The height of scanned image in pixels. This value is updated to the height "
+"of the last image scanned."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr "The resolution of the last image scanned (in dots-per-inch)."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr "The resolution in dots-per-inch to use when scanning photos."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr "The resolution in dots-per-inch to use when scanning text."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"The width of scanned image in pixels. This value is updated to the width of "
+"the last image scanned."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Type of document being scanned"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Type of document being scanned. 'Text' for text documents, 'Photo' for "
+"photos. This determines the scan resolution, colour and post-processing "
+"settings."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Width of scanned image (in pixels)"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Window height (in pixels)"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Window width (in pixels)"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "No scanners available. Please connect a scanner."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Unable to connect to scanner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Unable to start scan"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Error communicating with scanner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Failed to scan"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Scanned Document"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Failed to save file"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Username and password required to access '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "No scanners detected"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Please check your scanner is connected and powered on"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr "Unable to open image preview application"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (multi-page document)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (compressed)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (lossless)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Save As…"
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Image Files"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "All Files"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Select File _Type"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Unable to open help file"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public Licence as published by\n"
+"the Free Software Foundation, either version 3 of the Licence, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public Licence for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public Licence\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "About Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Simple document scanning tool"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alex Denvir https://launchpad.net/~coldfff\n"
+" Jonathon Hodges https://launchpad.net/~jonblondie\n"
+" Malcolm Parsons https://launchpad.net/~malcolm-parsons\n"
+" solar.george https://launchpad.net/~solar.george"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (draft)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (high resolution)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (default)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Files missing"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Please check your installation"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Change _Scanner"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Scanned Document.pdf"
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..4648f72
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,640 @@
+# Spanish translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-18 05:21+0000\n"
+"Last-Translator: Julián Alarcón <alarconj@gmail.com>\n"
+"Language-Team: Spanish <es@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Todas las páginas del _alimentador"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Configurar preferencias de la aplicación"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Recortar"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Recortar la página seleccionada"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Correo electrónico"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Enviar los documentos escaneados por correo electrónico"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Nuevo"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fotografía"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferencias"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Imprimir"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Imprimir los documentos escaneados"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Rotar a la izquierda"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Rotar a la derecha"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Rotar a la _izquierda"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Rotar a la _derecha"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Rotar la página a la izquierda (contrario a las agujas del reloj)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Rotar la página a la derecha (sentido de las agujas del reloj)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Guardar"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Guardar a un archivo el documento actual"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Escanear"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "_Origen de escaneo:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Escanear una sola página desde el escaner"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Una página"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Crear un documento nuevo"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Parar"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Para el escaneado actual"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Texto"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"El tipo del documento que va a ser escaneado. Use «Texto» para escaneados "
+"rápidos y de calidad media de documentos de texto, o «Fotografía» para "
+"escaneados más lentos y de mayor calidad de documentos con gráficos o "
+"fotografías."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorizar"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Contenidos"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Recortar"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalizado"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Documento"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_Correo"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "Ay_uda"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Carta"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Ninguno"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Página"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Contraseña:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "Resolución de _fotografía:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Rotar recorte"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Parar de escanear"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "Resolución de _texto:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Nombre de _usuario para el recurso"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Escanear documentos"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Para escanear desde el dispositivo"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Dirección de escaneo"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Altura de la imagen escaneada en píxeles"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Resolución para los escaneados de fotografías"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Resolución para los escaneados de texto"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Resolución de la última imagen escaneada"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Dispositivo SANE desde donde adquirir las imágenes."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "VERDADERO si la ventana de la aplicación está maximizada"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"La dirección del escáner a través de la página escaneada. Puede ser "
+"cualquiera de los siguientes: 'top-to-bottom' 'bottom-to-top' 'left-to-"
+"right' 'right-to-left'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"La altura de la imagen escaneada. Este valor se actualiza con el que tuvo la "
+"última página escaneada"
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+"La resolución en puntos por pulgada de la imagen escaneada anteriormente."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr "La resolución en puntos por pulgada a usar al escanear fotografías."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr "La resolución en puntos por pulgada a usar al escanear texto."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"La anchura de la imagen escaneada. Este valor se actualiza con el que tuvo "
+"la última página escaneada"
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Tipo de documento que está siendo escaneado"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Tipo del documento que va a ser escaneado. «Texto» para documentos de texto, "
+"«Fotografía» para fotografías. Esta opción determina la resolución, los "
+"colores y el post-procesamiento del escaneado."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Anchura de la imagen escaneada"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Altura de la ventana en píxeles"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Anchura de la ventana en píxeles"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "No hay escáneres disponibles. Conecte un escáner."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "No se pudo conectar al escáner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "No empezar a escanear"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Error comunicándose con el escáner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Falló al escanear"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Falló al guardar el archivo"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Uso:\n"
+" %s [DISPOSITIVO...] - utilidad de escaneo"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Opciones de ayuda:\n"
+" -d, --debug Muestra mensajes de depuración\n"
+" -v, --version Muestra la versión\n"
+" -h, --help Muestra opciones de ayuda\n"
+" --help-all Muestra todas las opciones de ayuda\n"
+" --help-gtk Muestra opciones de GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opciones de GTK+:\n"
+" --class=CLASE Clase de programa como se usa por el "
+"gestor de ventanas\n"
+" --name=NOMBRE Nombre del programa como se usa por el "
+"gestor de ventanas\n"
+" --screen=PANTALLA Pantalla X que usar\n"
+" --sync Hacer que las llamadas las X sean "
+"síncronas\n"
+" --gtk-module=MÓDULOS Cargar módulos GTK+ adicionales\n"
+" --g-fatal-warnings Hacer que todos los avisos sean fatales"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Usuario y contraseña necesarios para acceder a «%s»"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Ningún escáner detectado"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Compruebe que su escáner está encendido y conectado"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (documento multipágina)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (comprimido)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (sin pérdida)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Guardar como..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Archivos de imagen"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Seleccione el _tipo de archivo"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "No se pudo abrir el archivo de ayuda"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Este programa es software libre: puede redistribuirlo o modificarlo\n"
+"en los términos de la GNU General Public License publicada por la\n"
+"Free Software Foundation, en su versión 3 o, a su elección, cualquiera\n"
+"posterior.\n"
+"\n"
+"Este programa se distribuye con la esperanza de que sea útil,\n"
+"pero SIN NINGUNA GARANTíA; ni tan siquiera la garantía implícita de\n"
+"COMERCIABILIDAD o ADECUACIÓN A UN OBJETIVO PARTICULAR. Vea la\n"
+"GNU General Public License para más detalles.\n"
+"\n"
+"Debe haber recibido una copia de la GNU General Public License\n"
+"con este programa. Si no fuera así, vea <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Acerca de Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Herramienta sencilla para escanear documentos"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" A. Emmanuel Mendoza https://launchpad.net/~a.emmanuelmendoza\n"
+" Antonio Sánchez https://launchpad.net/~antoniosanchez\n"
+" Carlos Alberto Ospina https://launchpad.net/~atah\n"
+" Carlos Martín Nieto https://launchpad.net/~cmn\n"
+" Dante Díaz https://launchpad.net/~dante\n"
+" DiegoJ https://launchpad.net/~diegojromerolopez\n"
+" Edgardo Fredz https://launchpad.net/~edgardo-fredz\n"
+" Hector Louzao https://launchpad.net/~hhlp\n"
+" José Luis Ricón https://launchpad.net/~artirj\n"
+" Julián Alarcón https://launchpad.net/~alarconj\n"
+" Martin Albisetti https://launchpad.net/~beuno\n"
+" Paco Molinero https://launchpad.net/~franciscomol\n"
+" Ricardo Pérez López https://launchpad.net/~ricardo\n"
+" Topo https://launchpad.net/~miguita\n"
+" almejo https://launchpad.net/~alejandro-vera\n"
+" daironmedina https://launchpad.net/~dairon\n"
+" felix.anadon@gmail.com https://launchpad.net/~felix-anadon\n"
+" fosk https://launchpad.net/~oscarrdg"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d ppp (borrador)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d ppp"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d ppp (alta resolución)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d ppp (predeterminado)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Faltan archivos"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Verifique su instalación"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Cambiar _escáner"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Documento escaneado.pdf"
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..bcdf278
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,579 @@
+# Basque translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Basque <eu@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jon Legarrea https://launchpad.net/~jonlegarrea"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..6adb922
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,585 @@
+# Finnish translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-10 11:23+0000\n"
+"Last-Translator: Timo Jyrinki <timo-jyrinki@ubuntu.com>\n"
+"Language-Team: Finnish <fi@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Kaikki sivut _laitteelta"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Rajaa"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Sähköposti"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Lähetä luetut asiakirjat sähköpostitse"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "US Legal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Uusi"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Valokuva"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Asetukset"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Tulosta"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Tulosta luetut asiakirjat"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Kierrä vasemmalle"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Kierrä oikealle"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Kierrä _vasemmalle"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Kierrä _oikealle"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Tallenna"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Tallenna nykyinen asiakirja tiedostoon"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Lue"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Lue lähtee_stä:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Lue yksi sivu kuvanlukijalta"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Yksinkertainen kuvanluku"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Yksi _sivu"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Aloita uusi asiakirja"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Teksti"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Valtuuta"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Rajaa"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Muu"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Asiakirja"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "O_hje"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Ei mitään"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Sivu"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Salasana:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Kierrä rajausta"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "Py_säytä kuvanluku"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Resurssin _käyttäjänimi:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Lue asiakirjoja kuvanlukijalta"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Laite jolta luetaan"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Lukemisen suunta"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "SANE-laite jolta kuvat luetaan."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Kuvanlukijaan ei voi yhdistää"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Kuvanluvun käynnistäminen ei onnistu"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Kuvanluku epäonnistui"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Tiedoston tallennus epäonnistui"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+-valitsimet:\n"
+" --class=LUOKKA Ikkunahallinnan käyttämä ohjelmaluokka\n"
+" --name=NIMI Ikkunahallinnan käyttämä ohjelman nimi\n"
+" --screen=RUUTU Käytettävä X-ruutu\n"
+" --sync Tee X-kutsut synkronisesti\n"
+" --gtk-module=MODUULIT Lataa lisäksi GTK+-moduulit\n"
+" --g-fatal-warnings Tee kaikista varoituksista kuolettavia"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Käyttäjänimi ja salasana vaaditaan laitteelle ”%s” pääsemiseksi"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Kuvanlukijoita ei havaittu"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Varmista että kuvanlukijasi on yhdistetty ja kytketty päälle"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Tallenna nimellä..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Tietoja Yksinkertainen kuvanluku (”Simple Scan”) -sovelluksesta"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Yksinkertainen asiakirjojen kuvanlukutyökalu"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Timo Jyrinki https://launchpad.net/~timo-jyrinki"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Tiedostoja puuttuu"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Muuta _kuvanlukijaa"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Asiakirja kuvanlukijasta.pdf"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..eea35f2
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,622 @@
+# French translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-13 09:07+0000\n"
+"Last-Translator: Pierre Slamich <pierre.slamich@gmail.com>\n"
+"Language-Team: French <fr@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-03-14 05:08+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4 &#xD7; 6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Toutes les pages du _bac"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Configuration des préférences de l'application"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Recadrer"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Recadrer la page sélectionnée"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Courriel"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Envoyer par courriel les documents numérisés"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "_Legal (US)"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Photo"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Préférences"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Imprimer"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Imprimer les documents numérisés"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Pivoter sur la gauche"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Pivoter sur la droite"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Pivoter vers la _gauche"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Pivoter vers la _droite"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+"Pivoter la page vers la gauche (sens inverse des aiguilles d'une montre)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Pivoter la page vers la droite (sens des aiguilles d'une montre)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Enregistrer"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Sauvegarder le document actuel dans un fichier"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "Nu_mériser"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Numériser"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "S_ource de numérisation :"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Numériser une seule page depuis le scanner"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Numérisation simple"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Page unique"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Créer un nouveau document"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Arrêter"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Arrêter la numérisation en cours"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Texte"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autoriser"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "Re_cadrer"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personnalisé"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Document"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_Courriel"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Aide"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter (US)"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "Aucu_n"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Page"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Mot de passe :"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "Résolution de la _Photo :"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Pivote_r la selection"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Arrêter la numérisation"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "Résolution du _Texte :"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Utilisateur :"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Numériser des documents"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Numériser depuis"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Sens de numérisation"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Hauteur de l'image numérisée en pixels"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Résolution pour des numérisations de photos"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Résolution pour des numérisations de textes"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Résolution de la dernière image numérisée"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Périphérique SANE à utiliser pour l'acquisition des images."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "VRAI si la fenêtre de l'application est maximisée"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"La hauteur de l'image numérisée en pixels. Cette valeur est mise à jour en "
+"fonction de la dernière page numérisée."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"La largeur de l'image numérisée en pixels. Cette valeur est mise à jour en "
+"fonction de la dernière page numérisée."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Hauteur de la fenêtre en pixels"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Largeur de la fenêtre en pixels"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Impossible de se connecter au scanner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Impossible de démarrer la numérisation"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Erreur de communication avec le scanner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Échec de la numérisation"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Document numérisé"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Impossible d'enregistrer le fichier"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Usage :\n"
+" %s [PÉRIPHÉRIQUE...] - utilitaire de numérisation"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Options d'aide :\n"
+" -d, --debug Affiche les messages d'erreur\n"
+" -v, --version Affiche le numéro de version\n"
+" -h, --help Affiche les options d'aide\n"
+" --help-all Affiche toutes les options d'aide\n"
+" --help-gtk Affiche les options de GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Options GTK+ :\n"
+" --class=CLASSE Classe du programme telle qu'utilisée par le gestionnaire "
+"de fenêtres\n"
+" --name=NOM Nom du programme tel qu'utilisé par le gestionnaire de "
+"fenêtres\n"
+" --screen=ÉCRAN Écran X à utiliser\n"
+" --sync Rendre les appels X synchrones\n"
+" --gtk-module=MODULES Charger des modules GTK+ supplémentaires\n"
+" --g-fatal-warnings Rendre tous les avertissements fatals"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Nom d'utilisateur et mot de passe nécessaires pour accéder à « %s »"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Aucun scanner n'a été détecté"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Veuillez vérifier que votre scanner est connecté et sous tension"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (document multi-pages)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (compressé)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (sans perte)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Enregistrer sous..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Fichiers images"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Tous les fichiers"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Impossible d'ouvrir le fichier d'aide"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Ce programme est libre, vous pouvez le redistribuer et/ou le modifier\n"
+"selon les termes de la licence publique générale (GPL) GNU publiée\n"
+"par la Free Software Foundation, dans sa version 3 ou supérieure\n"
+"(selon votre choix).\n"
+"\n"
+"Ce programme est distribué dans l'espoir d'être utile, mais\n"
+"SANS AUCUNE GARANTIE, y compris les garanties de \n"
+"COMMERCIALISATION ou d'ADAPTATION A UN BUT SPÉCIFIQUE.\n"
+"Consultez la licence publique générale GNU pour plus de détails.\n"
+"\n"
+"Vous devez avoir reçu une copie de la licence publique générale GNU\n"
+"en même temps que ce programme ; si ce n'est pas le cas, consultez\n"
+"<http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "À propos de Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Numériser simplement vos documents"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alexandre Franke https://launchpad.net/~afranke\n"
+" Bruno Patri https://launchpad.net/~bruno-patri\n"
+" François https://launchpad.net/~francois-michonneau\n"
+" François Tissandier https://launchpad.net/~baloo\n"
+" Guillaume Lanquepin https://launchpad.net/~guyomel\n"
+" Kaïs Bejaoui https://launchpad.net/~kais\n"
+" Paul Forget https://launchpad.net/~paul92\n"
+" Pierre Slamich https://launchpad.net/~pierre-slamich\n"
+" Xavier Verne https://launchpad.net/~xavier-verne\n"
+" beudbeud https://launchpad.net/~beudbeud"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d ppp (brouillon)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d ppp"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d ppp (haute résolution)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d ppp (par défaut)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Fichiers manquants"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Veuillez vérifier votre installation"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Changer de _Scanner"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Document.pdf numérisé"
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..e7058e1
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,616 @@
+# Galician translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-13 11:40+0000\n"
+"Last-Translator: Francisco Diéguez <Unknown>\n"
+"Language-Team: Galician <gl@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Todas as páxinas do _alimentador"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Recortar"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Correo electrónico"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Enviar os documentos escaneados por correo electrónico"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Novo"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fotografía"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferencias"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Imprimir"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Imprimir os documentos escaneados"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Rotar á esquerda"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Rotar á dereita"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Rotar á _esquerda"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Rotar á _dereita"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Gardar"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Guardar o documento actual nun ficheiro"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Escanear"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Escanear _orixe"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Escanear unha única páxina desde o escaner"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Escaner sinxelo"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Única _páxina"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Iniciar un novo documento"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Texto"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorizar"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "Re_cortar"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalizado"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Documento"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Axuda"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Carta"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Ningunha"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Páxina"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Contrasinal:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Rotar recorte"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Deter o escaneado"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Nome de _usuario para o recurso:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Escanear documentos"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Dispositivo desde o que escanear"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Dirección de escaneado"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Altura da imaxe escaneada en píxeles"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Dispositivo SANE desde o que adquirir as imaxes."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "VERDADEIRO se a xanela do aplicativo está maximizada"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"A dirección do escáner a través da páxina escaneada. Pode ser calquera dos "
+"seguintes: «top-to-bottom» «bottom-to-top» «left-to-right» «right-to-left»"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"A altura da imaxe escaneada. Este valor actualizase co que tuvo a última "
+"páxina escaneada."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"A largura da imaxe escaneada. Este valor actualizase co que tuvo a última "
+"páxina escaneada."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Tipo de documento que está sendo escaneado"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"O tipo de documento que se vai a escanear. «text» para documentos de texto, "
+"«photo» para fotos. Esta opción determina a resolución, as cores e o "
+"postprocesamento do escaneado."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Largura da imaxe escaneada"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Altura da xanela en píxeles"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Largura da xanela en píxeles"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Non hai escáneres dispoñíbeis. Conecte un escáner."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Non foi posíbel conectar co escaner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Non foi posíbel iniciar o escaneo"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Produciuse un erro na comunicación co escaner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Produciuse un fallo ao escanear"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Produciuse un fallo ao gardar o ficheiro"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Uso:\n"
+" %s [DISPOSITIVO...] - Utilidade de escaneo"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Opcións de axuda:\n"
+" -d, --debug Mostra as mensaxes de depuración\n"
+" -v, --version Mostra a versión\n"
+" -h, --help Mostra as opcións de axuda\n"
+" --help-all Mostra todas as opcións de axuda\n"
+" --help-gtk Mostra as opcións de GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opcións de GTK+:\n"
+" --class=CLASS Clase do programa tal como é usada polo "
+"xestor de xanelas.\n"
+" --name=NAME Nome do programa tal como é usado polo "
+"xestor de xanelas.\n"
+" --screen=SCREEN Pantalla X a usar\n"
+" --sync Facer chamadas X síncronas\n"
+" --gtk-module=MODULES Cargar módulos GTK+ adicionais\n"
+" --g-fatal-warnings Facer todos os avisos en erros fatais"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Requírese o nome de usuario e contrasinal para acceder a '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Non se puido detectar os escáneres"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Verifique que o seu escaner está conectado e encendido"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Gardar como..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Este programa é software libre: pode redistribuilo ou modificalo\n"
+"nos termos da GNU General Public License publicada pola\n"
+"Free Software Foundation, na súa versión 3 ou, a súa elección, calquera\n"
+"posterior.\n"
+"\n"
+"Este programa distribúese coa esperanza de que sexa útil,\n"
+"pero SEN NINGUNHA GARANTíA; ni tan sequera a garantía implícita de\n"
+"COMERCIABILIDADE o ADECUACIÓN A UN OBXECTIVO PARTICULAR. Vexa a\n"
+"GNU General Public License para máis detalles.\n"
+"\n"
+"Debe haber recibido una copia de la GNU General Public License\n"
+"con este programa. Si no fuera así, vea <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Acerca de Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Ferramenta sinxela de escaneo de documentos"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Francisco Diéguez https://launchpad.net/~frandieguez"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Faltan ficheiros"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Comprobe a súa instalación"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Cambiar o _escáner"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Document.pdf escaneado"
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..dab56aa
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,619 @@
+# Hebrew translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-27 20:15+0000\n"
+"Last-Translator: Liel Fridman <Unknown>\n"
+"Language-Team: Hebrew <he@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "כל העמודים מהמ_זין"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "הגדרת העדפות היישום"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "חיתוך"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "חיתוך העמוד שנבחר"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "דוא\"ל"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "שליחת המסמכים שנסרקו בדוא\"ל"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "_פוליו"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "חדש"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "תמונה"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "העדפות"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "הדפסה"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "הדפסת המסמכים שנסרקו"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "סיבוב שמאלה"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "סיבוב ימינה"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "סיבוב _שמאלה"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "סיבוב _ימינה"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "סיבוב העמוד לשמאל (נגד כיוון השעון)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "סיבוב העמוד לימין (עם כיוון השעון)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "שמירה"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "שמירת המסמך הנוכחי לקובץ"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "סריקה"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "_מקור הסריקה:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "סריקת עמוד בודד מהסורק"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "סריקה פשוטה"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_עמוד בודד"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "התחלת מסמך חדש"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "עצירה"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "עצירת הסריקה הנוכחית"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "טקסט"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"סוג המסמך לסריקה. יש להשתמש ב־\"טקסט\" לסריקות מהירות באיכות בינונית של "
+"מסמכי טקסט. או \"תמונה\" לסריקות אטיות באיכות גבוהה יותר של מסמכים עם איורים "
+"או תמונות."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_אישור"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_תכנים"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_חיתוך"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_מותאם אישית"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "מ_סמך"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_דוא\"ל"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "ע_זרה"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_מכתב"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_ללא"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_עמוד"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_סיסמה:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "_רזולוציית התמונה:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_סיבוב חיתוך"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_עצירת הסריקה"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "רזולו_ציית הטקסט:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "שם ה_משתמש עבור המשאב:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "סריקת מסמך"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Device to scan from"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Direction of scan"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Height of scanned image in pixels"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Resolution for photo scans"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Resolution for text scans"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Resolution of last scanned image"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "SANE device to acquire images from."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE if the application window is maximized"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr "The resolution in dots-per-inch of the previously scanned image."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr "The resolution in dots-per-inch to use when scanning photos."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr "The resolution in dots-per-inch to use when scanning text."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Type of document being scanned"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Width of scanned image in pixels"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Window height in pixels"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Window width in pixels"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "אין סורקים זמינים. יש לחבר סורק."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "לא ניתן להתחבר לסורק"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "לא ניתן להתחיל בסריקה"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "שגיאה בהתקשרות עם הסורק"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "הסריקה נכשלה"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "מסמך שנסרק"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "שמירת הקובץ נכשלה"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "נדרשים שם משתמש וסיסמה כדי לגשת אל '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "לא זוהו סורקים"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "יש לבדוק כי הסורק מחובר ומופעל"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (מסמך מרובה עמודים)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (דחוס)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (ללא אובדן דתונים)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "שמירה בשם..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "קובצי תמונה"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "כל הקבצים"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "בחירת _סוג קובץ"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "לא ניתן לפתוח את קובץ העזרה"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"תוכנית זו היא תוכנה חופשית; אתה יכול להפיצה מחדש ו/או לשנות אותה על-פי תנאי "
+"הרישיון הציבורי הכללי של GNU כפי שפורסם על ידי קרן התוכנה החופשית; בין אם "
+"גרסה 2 של הרישיון, ובין אם (לפי בחירתך) כל גרסה מאוחרת שלו.\n"
+"\n"
+"תוכנית זו מופצת בתקווה שתהיה מועילה, אבל בלא אחריות כלשהי; ואפילו ללא "
+"האחריות המשתמעת בדבר מסחריותה או התאמתה למטרה מסויימת. לפרטים נוספים, ראה את "
+"הרישיון הציבורי הכללי של GNU.\n"
+"\n"
+"ביחד עם תוכנית זו היית אמור לקבל עותק של הרישיון הציבורי הכללי של GNU; במידה "
+"שלא, ניתן לעיין ב־<http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "אודות Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "כלי פשוט לסריקת מסמכים"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Ddorda https://launchpad.net/~ddorda\n"
+" Liel Fridman https://launchpad.net/~lielft\n"
+" Yaron https://launchpad.net/~sh-yaron"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (טיוטה)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (רזולוציה גבוהה)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (ברירת מחדל)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "חסרים קבצים"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "יש לבדוק את ההתקנה"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "ב_חירה בסורק אחר"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "מסמך סרוק.pdf"
diff --git a/po/hr.po b/po/hr.po
new file mode 100644
index 0000000..81189c0
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,579 @@
+# Croatian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Croatian <hr@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fotografija"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Osobitosti"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Rotiraj _lijevo"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Rotiraj _desno"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Tekst"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Izreži"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Prilagođeno"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokument"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Pomoć"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Ništa"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Stranica"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Lozinka:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Spremi kao..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Ante Karamatić https://launchpad.net/~ivoks"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..a9890c4
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,620 @@
+# Hungarian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-17 12:49+0000\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <hu@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Minden oldal az _olvasóból"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Kivágás"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "E-mail"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Szkennelt dokumentum elküldése e-mailben"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Új"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fénykép"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Beállítások"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Nyomtatás"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Szkennelt dokumentumok nyomtatása"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Forgatás balra"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Forgatás jobbra"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Forgatás b_alra"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Forgatás _jobbra"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Mentés"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Az aktuális dokumentum fájlba mentése"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Szkennelés"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Szkennelés _forrása:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Egy oldal szkennelése az eszközről"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Egy _oldal"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Új dokumentum létrehozása"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Szöveg"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Felhatalmazás"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Kivágás"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Egyéni"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokumentum"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Súgó"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Nincs"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Oldal"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Jelszó:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Kivágott rész fo_rgatása"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Szkennelés megállítása"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Felhasználónév az erőforráshoz:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Dokumentumok szkennelése"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "A szkennelő eszkőz"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "A szkennelés íránya"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "A szkennelt kép magassága képpontban"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Képek beszerzése erről a SANE eszközről"
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "Igaz, ha az alkalmazás teljes képernyős módban van"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"A szkennelés iránya, a lehetséges értékek a következők: „top-to-bottom” "
+"(fentről lefelé), „bottom-to-top” (lentről felfelé) „left-to-right” (balról "
+"jobbra), „right-to-left” (jobbról balra)"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"A szkennelt kép magassága képpontban. Mindig a legutolsó szkennelés "
+"eredményét veszi fel."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"A szkennelt kép szélessége képpontban. Mindig a legutolsó szkennelés "
+"eredményét veszi fel."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "A szkennelt dokumentum típusa"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"A szkennelt dokumentum típusa. „text” a szöveges dokumentumokhoz, „photo” a "
+"fotókhoz. Ez a beállítás határozza meg a szkennelt dokumentum felbontását, "
+"színeit és utófeldolgozását."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "A szkennelt kép szélessége képpontban"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Ablak magassága képpontban"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Ablak szélessége képpontban"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Nem található szkenner. Csatlakoztasson egyet."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Nem sikerült csatlakozni a szkennerhez"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Nem sikerült elindítani a szkennelést"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Kommunikációs hiba a szkennerrel"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "A szkennelés meghiúsult"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "A fájl mentése sikertelen"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Használat:\n"
+" %s [ESZKÖZ...] - Szkennelő segédprogram"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Súgókapcsolók:\n"
+" -d, --debug Hibakeresési üzenetek megjelenítése\n"
+" -v, --version Verziószám megjelenítése\n"
+" -h, --help Súgókapcsolók megjelenítése\n"
+" -help-all Minden súgókapcsoló megjelenítése\n"
+" --help-gtk GTK+ kapcsolók megjelenítése"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ beállításai\n"
+" --class=OSZTÁLY A program osztálya, ahogy az ablakkezelő "
+"használja\n"
+" --name=NÉV A programnév, ahogy az ablakkezelő "
+"használja\n"
+" --display=MEGJELENÍTŐ Használandó X-megjelenítő\n"
+" --screen=KÉPERNYŐ Használandó X-képernyő\n"
+" --sync Legyenek szinkron X-hívások\n"
+" --gtk-module=MODULOK További GTK+ modulok betöltése\n"
+" --g-fatal-warnings Minden figyelmeztetés végzetes legyen"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "A(z) „%s” eléréséhez felhasználónév és jelszó szükséges"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Nem található szkenner"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+"Ellenőrizze, hogy a szkenner csatlakoztatva van, és be van-e kapcsolva"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Mentés másként…"
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Ez a program szabad szoftver, terjesztheti és/vagy módosíthatja a Free "
+"Software Foundation által kiadott GNU General Public License harmadik (vagy "
+"bármely későbbi) változatában foglaltak alapján.\n"
+"\n"
+"Ezt a programot abban a reményben terjesztjük, hogy hasznos lesz, de nem "
+"vállalunk SEMMIFÉLE GARANCIÁT, még olyan értelemben sem, hogy a program "
+"MEGFELELŐ MINŐSÉGŰ, alkalmas-e a KÖZREADÁSRA, vagy EGY BIZONYOS FELADAT "
+"ELVÉGZÉSÉRE. További részletekért tanulmányozza a GNU GPL licencet.\n"
+"\n"
+"A programhoz a GNU General Public License egy példánya is jár, ha nem kapta "
+"meg, itt elolvashatja: <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Simple Scan névjegye"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Egyszerű dokumentumszkennelés"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Gabor Kelemen https://launchpad.net/~kelemeng\n"
+" Krasznecz Zoltán https://launchpad.net/~krasznecz-zoltan\n"
+" Richard Somlói https://launchpad.net/~ricsipontaz"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Hiányzó fájl"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Ellenőrizze a telepítést"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "_Szkennerváltás"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Szkennelt dokumentum.pdf"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..593fde5
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,641 @@
+# Italian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-21 13:09+0000\n"
+"Last-Translator: Paolo Sammicheli <paolo@sammicheli.net>\n"
+"Language-Team: Italian <it@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-03-23 04:52+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "_Tutte le pagine dal caricatore"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Configura le preferenze dell'applicazione"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Ritaglia"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Ritaglia la pagina selezionata"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Email"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Invia per email i documenti acquisiti"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Nuovo"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferenze"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Stampa"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Stampa i documenti acquisiti"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Ruota a sinistra"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Ruota a destra"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Ruota a _sinistra"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Ruota a _destra"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Ruota la pagina a sinistra (senso antiorario)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Ruota la pagina a destra (senso orario)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Salva"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Salva il documento attuale in un file"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "_Acquisisci"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Acquisisci"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "S_orgente di acquisizione:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Acquisisce una pagina singola dallo scanner"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Pagina singola"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Crea un nuovo documento"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Ferma"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Interrompe l'acquisizione in corso"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Testo"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"Tipo di documento che sta per essere acquisito. Usare «Testo» per "
+"acquisizioni veloci e di media qualità di documenti di testo o «Foto» per "
+"acquisizioni lente e più accurate di documenti che includono grafici o "
+"fotografie."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorizza"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Sommario"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Ritaglia"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalizzato"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Documento"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_Email"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "A_iuto"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "US _Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Niente"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Pagina"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "Pass_word:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "_Risoluzione foto:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Ruota ritaglio"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "Ferma l'acqui_sizione"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "Risoluzione _testo:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Nome utente per la risorsa:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Acquisisci documenti"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Dispositivo di acquisizione"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Direzione dell'acquisizione"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Directory dove salvare i file"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Altezza dell'immagine acquisita in pixel"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Risoluzione per acquisizione foto"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Risoluzione per acquisizione testo"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Risoluzione dell'ultima immagine acquisita"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Dispositivo SANE da cui acquisire le immagini."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "VERO se la finestra dell'applicazione è massimizzata"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"La direzione di acquisizione. Può essere uno dei seguenti valori: \"top-to-"
+"bottom\" (dall'alto in basso), \"bottom-to-top\" (dal basso in alto), \"left-"
+"to-right\" (da sinistra a destra), \"right-to-left\" (da destra a sinistra)"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+"La directory dove salvare i file. Valore predefinito è la directory dei "
+"documenti."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Altezza dell'immagine acquisita in pixel. Questo valore è aggiornato "
+"all'ultima acquisizione."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+"La risoluzione in punti per pollice del documento precedentemente acquisito."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+"La risoluzione in punti per pollice da usare per l'acquisizione di foto."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+"La risoluzione in punti per pollice da usare per l'acquisizione di testi."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Larghezza dell'immagine acquisita in pixel. Questo valore è aggiornato "
+"all'ultima acquisizione."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Tipo del documento da acquisire"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Tipo documento da acquisire. \"text\" per documenti di testo, \"photo\" per "
+"fotografie. Questa impostazione influenza la risoluzione dell'acquisizione, "
+"le impostazioni di colore e la post-produzione."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Larghezza dell'immagine acquisita in pixel"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Altezza della finestra in pixel"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Larghezza della finestra in pixel"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Nessuno scanner disponibile. Collegare uno scanner."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Impossibile connettersi allo scanner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Impossibile avviare la scansione"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Errore di comunicazione con lo scanner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Acquisizione non riuscita"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Documento acquisito"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Salvataggio file non riuscito"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Uso:\n"
+" %s [DISPOSITIVO...] - Strumento di acquisizione"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Opzioni d'aiuto:\n"
+" -d, --debug Visualizza i messaggi di debug\n"
+" -v, --version Mostra la versione in uso\n"
+" -h, --help Mostra il menù di aiuto\n"
+" --help-all Mostra il menù di aiuto completo\n"
+" --help-gtk Mostra le opzioni di GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opzioni GTK+:\n"
+" --class=CLASS Classe del programma utilizzata dal "
+"gestore di finestre\n"
+" --name=NAME Nome del programma utilizzato dal gestore "
+"di finestre\n"
+" --screen=SCREEN Screen X da utilizzare\n"
+" --sync Rende le chiamate a X sincrone\n"
+" --gtk-module=MODULES Carica moduli GTK+ aggiuntivi\n"
+" --g-fatal-warnings Rende fatali tutti gli avvertimenti"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Sono richiesti nome utente e password per accedere a «%s»"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Non sono stati rilevati scanner"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Controllare che lo scanner sia collegato e acceso"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+"Impossibile aprire l'applicazione per la visualizzazione delle anteprime"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (documento multi-pagina)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (compresso)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (senza perdita di qualità)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Salva come..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "File immagine"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Tutti i file"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Seziona il _tipo di file"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Impossibile aprire il file di aiuto"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Questo programma è software libero: è possibile ridistribuirlo o "
+"modificarlo\n"
+"secondo i termini della licenza GNU General Public License così come "
+"pubblicata dalla\n"
+"Free Software Foundation, nella versione 3 della Licenza, o\n"
+"(a vostra discrezione) successive.\n"
+"\n"
+"Questo programma è distribuito con la speranza si dimostri utile,\n"
+"ma SENZA ALCUNA GARANZIA; si esclude anche l'implicita garanzia di \n"
+"COMMERCIABILITA' o IDONEITA' A UN PARTICOLARE SCOPO. Si consulti \n"
+"la licenza GNU General Public License per utleriori dettagli.\n"
+"\n"
+"La traduzione in Italiano di questa licenza è solo a fini informativi. Per "
+"la licenza in Inglese con validità legale consultate "
+"<http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Informazioni su Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Semplice strumento per la scansione di documenti"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alessio Treglia https://launchpad.net/~quadrispro\n"
+" Daniele Napolitano https://launchpad.net/~dnax88\n"
+" Daniele Sapino https://launchpad.net/~daniele-sapino\n"
+" Danielsan474 https://launchpad.net/~danielsan474\n"
+" Federico Foschini https://launchpad.net/~undicizeri\n"
+" Giasone https://launchpad.net/~giasone\n"
+" Luca Reverberi https://launchpad.net/~ilreve\n"
+" Marco Lazzaroni https://launchpad.net/~marcolazzaroni\n"
+" Paolo Sammicheli https://launchpad.net/~xdatap1\n"
+" Vincenzo Ninni https://launchpad.net/~wampon\n"
+" alexinfurs https://launchpad.net/~alexinfurs\n"
+" suoko https://launchpad.net/~suoko"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (bozza)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (alta risoluzione)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (predefinita)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "File mancanti"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Verificare l'installazione"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Cambia _scanner"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Documento-acquisito.pdf"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..4ed5e55
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,582 @@
+# Japanese translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-20 04:07+0000\n"
+"Last-Translator: Kentaro Kazuhama <kazken3@gmail.com>\n"
+"Language-Team: Japanese <ja@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-03-21 04:48+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "フィーダより全てのページ(_F)"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "アプリケーションの設定"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "切り抜き"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "選択した範囲の切り抜き"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Eメール"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "スキャンしたドキュメントをEメールで送信"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "US リーガル(_G)"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "新規"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "写真"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "設定"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "印刷"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "スキャンしたドキュメントを印刷します"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "左へ回転"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "右へ回転"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "左へ回転(_L)"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "右へ回転(_R)"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "ページを左回転 (反時計回り)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "ページを右回転 (時計回り)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "保存"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "現在のドキュメントをファイルへ保存します"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "スキャン(_A)"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "スキャン"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "原稿をスキャン(_O):"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "一枚のページをスキャンします"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "一枚のページ(_P)"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "新規ドキュメントの作成"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "停止"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "スキャンを停止します"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "テキスト"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"スキャンされるドキュメントの種類です。\"テキスト\" は高速なスキャンで、中画質のテキストドキュメント向け、\"写真\" "
+"は低速なスキャンで、高画質の画像や写真を含むドキュメント向けです。"
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "認証(_A)"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "コンテンツ(_C)"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "切り抜き(_C)"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "カスタム(_C)"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "ドキュメント(_D)"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "電子メール(_E)"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "ヘルプ(_H)"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "US レター(_L)"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "なし(_N)"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "ページ(_P)"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "パスワード(_P):"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "写真の画素数(_P):"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "切り抜きを回転(_R)"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "スキャン停止(_S)"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "テキストの画素数(_T):"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "リソースに対するユーザ名(_U):"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "ドキュメントをスキャンします"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "スキャン方向"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "スキャンされる画像の高さ(ピクセル)"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "スキャナに接続できません"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "スキャンを開始できません"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "スキャナとの通信に失敗しました"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "スキャンに失敗しました"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "ファイルの保存に失敗しました"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "スキャナが検出されていません"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "スキャナが接続されて電源が入っているか確認してください"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "名前を付けて保存..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Simple Scan について"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Jeroen Hoek https://launchpad.net/~mail-jeroenhoek\n"
+" Kentaro Kazuhama https://launchpad.net/~kazken3\n"
+" Shushi Kurose https://launchpad.net/~kurokuro"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "ファイルが見つかりません"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "インストールされているか確認してください"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "スキャンされたドキュメントpdf"
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 0000000..af05cf4
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,580 @@
+# Lithuanian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Lithuanian <lt@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Vincas Dargis https://launchpad.net/~talkless\n"
+" romasg https://launchpad.net/~romasg"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/ms.po b/po/ms.po
new file mode 100644
index 0000000..fc581f6
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,579 @@
+# Malay translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Malay <ms@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Ketetapan"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Pengimbas Ringkas"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Teks"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Crop"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Tersendiri"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokumen"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Bantuan"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Tiada"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Halaman"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Katalaluan:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Simpan Sebagai..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Mengenai Pengimbas Ringkas"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..b166621
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,581 @@
+# Norwegian Bokmal translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Norwegian Bokmal <nb@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Hans Rødtang https://launchpad.net/~hansrodtang\n"
+" Kåre Birger Lapstuen https://launchpad.net/~lapstue\n"
+" Mats Taraldsvik https://launchpad.net/~meastp"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..21467a4
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,638 @@
+# Dutch translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-13 14:29+0000\n"
+"Last-Translator: cumulus007 <cumulus0007@gmail.com>\n"
+"Language-Team: Dutch <nl@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-03-14 05:08+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Alle pagina's van in_voer"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Toepassingsvoorkeuren instellen"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Bijsnijden"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "De geselecteerde pagina bijsnijden"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "E-mail"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Gescande documenten per e-mail verzenden"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "VS Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Nieuw"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Voorkeuren"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Afdrukken"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "De gescande documenten afdrukken"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Linksom draaien"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Rechtsom draaien"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "_Linksom draaien"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "_Rechtsom draaien"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "De pagina linksom draaien (tegen de klok in)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "De pagina rechtsom draaien (met de klok mee)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Opslaan"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Het huidige document in een bestand opslaan"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "Sc_annen"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Scannen"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Scanner:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Een enkele pagina scannen"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Scannen"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Enkele _pagina"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Een nieuw document beginnen"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Stoppen"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "De huidige scan stoppen"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Tekst"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"Het type document dat gescand wordt. Gebruik \"Tekst\" voor het snel "
+"scannen van tekst in gemiddelde kwaliteit, of \"Foto\" voor het trager "
+"scannen van documenten met illustraties of foto's in hogere kwaliteit."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "Toest_aan"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Inhoud"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Bijsnijden"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Aangepast"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Document"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_E-mailen"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Hulp"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "VS _Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Geen"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Pagina"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Wachtwoord:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "_Fotoresolutie:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Bijsnijden d_raaien"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "Scan _stoppen"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "_Tekstresolutie:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Gebr_uikersnaam voor bron:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Documenten scannen"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Te gebruiken scanapparaat"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Scanrichting"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Map om bestanden in op te slaan"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Hoogte van gescande afbeelding in pixels"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Resolutie voor gescande foto's"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Resolutie voor gescande tekst"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Resolutie van laatste gescande afbeelding"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "SANE-apparaat om beeld van te ontvangen"
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE als het programmavenster gemaximaliseerd is"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"De richting van de scanner over de gescande pagina. Dit kan een van de "
+"volgende waarden zijn: 'top-to-bottom' 'bottom-to-top' 'left-to-right' "
+"'right-to-left'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+"De map waarin bestanden worden opgeslagen. Dit is standaard de map "
+"Documenten indien niet ingesteld."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"De hoogte van de gescande afbeelding in pixels. Deze waarde representeert de "
+"laatst gescande pagina."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+"De resolutie in punten-per-inch (dtp) van de vorige gescande afbeelding."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+"De te gebruiken resolutie in punten-per-inch (dtp) tijdens het scannen van "
+"foto's."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+"De te gebruiken resolutie in punten-per-inch (dtp) tijdens het scannen van "
+"tekst."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"De breedte van de gescande afbeelding in pixels. Deze waarde representeert "
+"de laatst gescande pagina."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Type document dat gescand wordt"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Type document dat gescand wordt. 'text' voor tekstdocumenten, 'photo' voor "
+"foto's. Deze instelling bepaalt de scanresolutie, de kleuren en naverwerking."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Breedte van gescande afbeelding in pixels"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Vensterhoogte in pixels"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Vensterbreedte in pixels"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+"Geen scanners beschikbaar. Sluit een scanner aan om dit programma te "
+"gebruiken."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Kan niet verbinden met de scanner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Kan de scan niet starten"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Fout tijdens het communiceren met de scanner"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Scannen is mislukt"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Gescand document"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Bestand opslaan mislukt"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Gebruik:\n"
+" %s [APPARAAT...] - Hulpmiddel voor scannen"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Hulpopties:\n"
+" -d, --debug Debugberichten weergeven\n"
+" -v, --version Versienummer weergeven\n"
+" -h, --help Hulpopties weergeven\n"
+" --help-all Alle hulpopties weergeven\n"
+" --help-gtk GTK+-opties weergeven"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ Opties:\n"
+" --class=KLASSE Programmaklasse, zoals gebruikt door de "
+"vensterbeheerder\n"
+" --name=NAAM Programmanaam, zoals gebruikt door de "
+"vensterbeheerder\n"
+" --screen=SCHERM Te gebruiken X-scherm\n"
+" --sync X-aanroepen synchroon maken\n"
+" --gtk-module=MODULES Aanvullende GTK+-modules laden\n"
+" --g-fatal-warnings Alle waarschuwingen fataal maken"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Gebruikersnaam en wachtwoord vereist om toegang te krijgen tot '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Geen scanners gevonden"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Controleer of uw scanner is aangesloten en is ingeschakeld"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr "Kan toepassing voor voorvertoning van afbeelding niet openen"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (document met meerdere pagina's)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (gecomprimeerd)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (lossless)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Opslaan als..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Afbeeldingsbestanden"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Alle bestanden"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Bestands_type selecteren"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Kon hulpbestand niet openen"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Dit programma is vrije software: u mag het verspreiden en/of wijzigen onder\n"
+"de voorwaarden van de GNU General Public License zoals gepubliceerd\n"
+"door de Free Software Foundation, onder versie 3 van de licentie of\n"
+"(naar uw keuze) een latere versie.\n"
+"\n"
+"Dit programma is gedistribueerd in de hoop dat het nuttig zal zijn maar "
+"ZONDER\n"
+"ENIGE GARANTIE; zelfs zonder de impliciete garanties die GEBRUIKELIJK\n"
+"ZIJN IN DE HANDEL of voor BRUIKBAARHEID VOOR EEN SPECIFIEK DOEL.\n"
+"Zie de GNU General Public License voor meer details.\n"
+"\n"
+"U zou een kopie van de GNU General Public License moeten\n"
+"ontvangen samen met dit programma. Als dat niet het geval is, zie\n"
+"<http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Info over Scanhulpmiddel"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Eenvoudig hulpmiddel voor het scannen van documenten"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Elco https://launchpad.net/~eajnab\n"
+" Heureka https://launchpad.net/~jan-de-ridder\n"
+" Jeroen Hoek https://launchpad.net/~mail-jeroenhoek\n"
+" Martijn Bastiaan https://launchpad.net/~hmb1\n"
+" Michaël Van Dorpe https://launchpad.net/~michael-vandorpe\n"
+" Pascal Pieters https://launchpad.net/~pascalaldo\n"
+" Sense Hofstede https://launchpad.net/~qense\n"
+" SvenVranckx https://launchpad.net/~sven-vranckx\n"
+" cumulus007 https://launchpad.net/~cumulus-007"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (klad)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (hoge resolutie)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (standaard)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Ontbrekende bestanden"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Controleer uw installatie"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "_Scanner wijzigen"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Gescand document.pdf"
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..21a68f1
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,607 @@
+# Polish translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Polish <pl@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4x6\""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "_Wszystkie strony z podajnika"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Zdjęcie"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferencje"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Obróć w _lewo"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Obróć w p_rawo"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Źródło skan_owania"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Proste skanowanie"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Pojedyncza strona"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Tekst"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autoryzuj"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Przytnij"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "Rozmiar _użytkownika"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokument"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Pomoc"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_List"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Brak"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Strona"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Hasło:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Ob_róć obszar przycięcia"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Nazwa _użytkownika dla zasobu:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Błąd połączenia ze skanerem"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Błąd rozpoczęcia skanowania"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Błąd komunikacji ze skanerem"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Błąd skanowania"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Błąd podczas zapisywania pliku"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Użycie:\n"
+" %s [URZĄDZENIE...] - Narzędzie do skanowania"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opcje GTK+:\n"
+" --class=KLASA Klasa programu używana przez menedżera "
+"okien\n"
+" --name=NAZWA Nazwa programu używana przez menedżera "
+"okien\n"
+" --screen=EKRAN Używany ekran X\n"
+" --sync Synchroniczne wywołania X\n"
+" --gtk-module=MODUŁY Wczytuje dodatkowe moduły GTK+\n"
+" --g-fatal-warnings Wszystkie ostrzeżenia są krytyczne"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Uzyskanie dostępu do \"%s\" wymaga podania nazwy użytkownika i hasła"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Nie wykryto żadnego skanera"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Sprawdź, czy skaner jest podłączony i włączony"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Zapisz jako...."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "O programie"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Proste narzędzie do skanowania"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Michał Sawicz https://launchpad.net/~saviq\n"
+" Miłosz Kosobucki https://launchpad.net/~mikom\n"
+" Piotr Wicijowski https://launchpad.net/~piwsko\n"
+" Tomasz 'Zen' Napierala https://launchpad.net/~tzn\n"
+" folle https://launchpad.net/~ksiaze\n"
+" tomko222 https://launchpad.net/~tomko222"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Nie można odnaleźć plików"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Sprawdź poprawność instalacji"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Zeskanowany Dokument.pdf"
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..18d42de
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,579 @@
+# Portuguese translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Portuguese <pt@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr ""
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr ""
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr ""
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr ""
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Claudio Novais https://launchpad.net/~claudiocn"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..ae75651
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,628 @@
+# Brazilian Portuguese translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-28 21:55+0000\n"
+"Last-Translator: André Gondim <andregondim@ubuntu.com>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Todas as páginas do ali_mentador"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Configurar preferências do aplicativo"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Recortar"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Recortar a página selecionada"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "E-mail"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Enviar os documentos digitalizados por e-mail"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Novo"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferências"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Imprimir"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Imprimir os documentos digitalizados"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Girar à esquerda"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Girar à direita"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Girar à _esquerda"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Girar à direita"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Girar a página à esquerda (sentido anti-horário)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Girar a página à direita (sentido horário)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Salvar"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Salvar o documento atual em um arquivo"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Digitalizar"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Origem do digitalizad_or:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Digitalizar uma página no digitalizador"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Digitalizador Simples"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Página única"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Iniciar um novo documento"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Parar"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Parar a digitalização atual"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Texto"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"O tipo do documento sendo digitalizado. Use \"Texto\" para digitalizar "
+"documentos de forma rápida e com qualidade média, ou \"Foto\" para "
+"digitalizar fotos ou documentos com imagens de forma lenta e com alta "
+"qualidade"
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorizar"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Conteúdos"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "Re_cortar"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalizar"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Documento"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_E-mail"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "A_juda"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Carta"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Nenhum"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Página"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Senha:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "Resolução da _foto:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Gira_r área recortada"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "Par_ar digitalização"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "Resolução do _texto:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Nome de _usuário para o recurso:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Digitalizar documentos"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Dispositivo de onde digitalizar"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Direção da digitalização"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Altura da imagem digitalizada em pixels"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Resolução para digitalização de fotos"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Resolução para digitalização de textos"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Resolução da última imagem digitalizada"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Dispositivo para o SANE adquirir imagens."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "VERDADEIRO se a janela do aplicativo está maximizada"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"A direção do digitalizador através da página digitalizada pode ser uma das "
+"seguintes: 'de cima para baixo' 'de baixo para cima' 'esquerda para direita' "
+"'direita para esquerda'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"A altura da imagem digitalizada em pixels. Este valor é atualizado com o "
+"valor da última página digitalizada."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+"A resolução em pontos por polegada da imagem previamente digitalizada."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+"A resolução em pontos por polegadas para usar quando digitalizar fotos."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+"A resolução em pontos por polegada para usar quando digitalizar texto."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"A largura da imagem digitalizada em pixels. Este valor é atualizado com o "
+"valor que a última imagem foi digitalizada."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Tipo do documento sendo digitalizado"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Tipo de documento sendo digitalizado. 'texto' para documentos de texto, "
+"'foto' para fotos. Este ajuste define a resolução de digitalização, cores e "
+"pós-processamento."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Largura da imagem digitalizada em pixels"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Altura da janela em pixels"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Largura da janela em pixels"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Sem digitalizador disponíveis. Por favor, conecte um scanner."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Não foi possível conectar ao digitalizador"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Não foi possível iniciar o digitalizador"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Erro ao comunicar com o digitalizador"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Falha ao digitalizar"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Documento digitalizado"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Falha ao salvar o arquivo"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Uso:\n"
+" %s [DISPOSITIVO...] - Utilitário de escaneamento"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Opções de ajuda:\n"
+" -d, --debug Imprime mensagens de depuração\n"
+" -v, --version Mostra a versão do lançamento\n"
+" -h, --help Mostra as opções de ajuda\n"
+" --help-all Mostra todas as opções de ajuda\n"
+" --help-gtk Mostra as opções do GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opções do GTK+:\n"
+" --class=CLASS Classe de programa como usada pelo "
+"gerenciador de janelas\n"
+" --name=NAME Nome do programa como usado pelo "
+"gerenciador de janelas\n"
+" --screen=SCREEN Tela X a ser usada\n"
+" --sync Torna as chamadas do X síncronas\n"
+" --gtk-module=MODULES Carrega módulos adicionais do GTK+\n"
+" --g-fatal-warnings Torna todos os avisos fatais"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "É necessário o nome de usuário e senha para acessar '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Nenhum digitalizador detectado"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Por favor verifique se o seu digitalizador está conectado e ligado"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (documento multiplas páginas)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (comprimido)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (sem perdas)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Salvar como..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Arquivos de imagem"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Todos os arquivos"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Selecionar _tipo de arquivo"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Não foi possível abrir o arquivo de ajuda"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo\n"
+"sob os termos da Licença Pública Geral GNU como publicado pela\n"
+"Free Software Foundation, seja a versão 3 da licença, ou (na sua opinião)\n"
+"alguma versão posterior.\n"
+"\n"
+"Este programa é distribuído na esperança de que seja útil, mas\n"
+"SEM NENHUMA GARANTIA; mesmo a garantia implicada de COMERCIALIZAÇÃO\n"
+"ou APTIDÃO PARA UMA FINALIDADE PARTICULAR. Veja a Licença Pública\n"
+"Geral GNU para mais detalhes.\n"
+"\n"
+"Você deve ter recebido uma cópia da Licença Pública Geral GNU juntamente a "
+"\n"
+"este programa. Caso contrário, veja <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Sobre o Digitalizador Simples"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Ferramenta simples para digitalizar documentos"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" André Gondim https://launchpad.net/~andregondim\n"
+" Benjamim Gois Ildefonso da Silva https://launchpad.net/~benjamim-gois\n"
+" Rafael Zenni https://launchpad.net/~rafaeldz\n"
+" Vitor da Silva Gonçalves https://launchpad.net/~vitorsgoncalves"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (rascunho)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d ppp"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (alta resolução)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (padrão)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Arquivos faltando"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Por favor verifique a sua instalação"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Alterar _digitalizador"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Digitalizado documento.pdf"
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..161d808
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,606 @@
+# Romanian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Romanian <ro@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Preferințe"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Rotește la _stânga"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Rotește la _dreapta"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Scanează s_ursa:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Scanare simplă"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "O singură _pagină"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Text"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Autorizează"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "De_cupează"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Personalizat"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Document"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Ajutor"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Scrisoare"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Niciunul"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Pagină"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Parolă:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Rotește zona decupată"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Numele de _utilizator pentru resursă:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Nu s-a putut realiza conexiunea la scaner"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Nu s-a putut porni scanarea"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Eroare la comunicarea cu scanerul"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Eroare la scanare"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Eroare la salvarea fișierului"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Utilizare:\n"
+" %s [DISPOZITIV...] - Utilitar de scanare"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Opțiuni GTK+:\n"
+" --class=CLASS Clasa de program folosită de "
+"administratorul de ferestre\n"
+" --name=NAME Nume program folosit de administratorul de "
+"ferestre\n"
+" --screen=SCREEN Ecranul X folosit\n"
+" --sync Efectuează apeluri X sincrone\n"
+" --gtk-module=MODULES Încarcă module GTK+ adiționale\n"
+" --g-fatal-warnings Consideră toate avertismentele fatale"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Numele de utilizator și parola sunt necesare pentru a accesa „%s”"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Nu a fost detectat niciun scaner"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Verificați dacă scanerul este conectat și pornit"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Salvează ca..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Acest program este liber; îl puteți redistribui și/sau modifica în "
+"conformitate cu termenii Licenței Publice Generale GNU, așa cum este "
+"publicată de către Free Software Foundation; fie versiunea 3 a Licenței, fie "
+"(la latitudinea dumneavoastră) orice versiune ulterioară.\n"
+"\n"
+"Acest program este distribuit cu speranța că va fi util, dar FĂRĂ NICI O "
+"GARANȚIE; fără macar garanția implicită de\n"
+"VÂNDABILITATE sau CONFORMITATE UNUI ANUMIT SCOP. A se vedea Licența Publică "
+"Generală GNU pentru detalii.\n"
+"\n"
+"Ar trebui să fi primit o copie a Licenței Publice Generale GNU împreună cu "
+"acest program. În caz contrar, consultați <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Despre Scanare simplă"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Utilitar simplu pentru scanare de documente"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Adi Roiban https://launchpad.net/~adiroiban\n"
+" Dan Telecan https://launchpad.net/~telecan-dan\n"
+" Lucian Adrian Grijincu https://launchpad.net/~lucian.grijincu\n"
+" ValentinV https://launchpad.net/~valentinverde\n"
+" sfantu https://launchpad.net/~sfantus1"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Lipsesc fișiere"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Verificați instalarea"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Document scanat.pdf"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..63a059b
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,603 @@
+# Russian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-03 03:14+0000\n"
+"Last-Translator: Артём Попов <artfwo@gmail.com>\n"
+"Language-Team: Russian <ru@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Все страницы из _автоподатчика"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "US Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Создать"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Фотография"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Параметры"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Повернуть в_лево"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Повернуть в_право"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Ист_очник сканирования"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Одна _Страница"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Текст"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "Р_азрешить"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Обрезать"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Нестандартный"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Документ"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Справка"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "US _Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Нет"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Страница"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Пароль:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Повернуть выбранное"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "Имя поль_зователя для ресурса:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Не могу подключиться к сканеру"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Не могу начать сканирование"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Ошибка при работе со сканером"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Сканирование не удалось"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Не удалось сохранить файл"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Использование:\n"
+" %s [УСТРОЙСТВО...] - Инструмент для сканирования"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Параметры GTK+:\n"
+" --class=КЛАСС Класс программы в оконном менеджере\n"
+" --name=НАЗВАНИЕ Название программы в оконном менеджере\n"
+" --screen=ЭКРАН Используемый экран X\n"
+" --sync Сделать вызовы X синхронными\n"
+" --gtk-module=МОДУЛИ Загрузить дополнительные модули GTK+\n"
+" --g-fatal-warnings Сделать все предупреждения фатальными"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Для доступа к '%s' нужны имя пользователя и пароль"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Сканеры не обнаружены"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Пожалуйста, проверьте, что сканер подсоединен и включен"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Сохранить как..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Эта программа является свободным программным обеспечением: вы можете "
+"распространять и/или модифицировать её согласно условиям Открытого "
+"лицензионного соглашения GNU (GNU General Public License), опубликованного "
+"Free Software Foundation, версии 3 или (на ваш выбор) более поздней. \n"
+"Эта программа распространяется с надеждой на то, что она будет полезна "
+"пользователям, однако БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; не гарантируется также "
+"КОММЕРЧЕСКОЕ КАЧЕСТВО или ВОЗМОЖНОСТЬ РЕШЕНИЯ ОПРЕДЕЛЕННЫХ ЗАДАЧ. Более "
+"подробная информация содержится в тексте Открытого лицензионного соглашения "
+"GNU (GNU General Public License). \n"
+"Копия текста Открытого лицензионного соглашения GNU (GNU General Public "
+"License) должная поставляться с этой программой. В остальных случаях "
+"пройдите по ссылке: <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "О Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Простой инструмент для сканирования документов"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alexander Telenga https://launchpad.net/~telenga\n"
+" Alexey Kotlyarov https://launchpad.net/~koterpillar\n"
+" Andrew Sudarikov https://launchpad.net/~andrey-interra\n"
+" Oleg Koptev https://launchpad.net/~koptev-oleg\n"
+" Артём Попов https://launchpad.net/~artfwo"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Файлы отсутствуют"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Пожалуйста, проверьте правильность установки программы"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Сканированный документ.pdf"
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..afe9d6c
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,616 @@
+# Slovak translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-13 20:04+0000\n"
+"Last-Translator: Laco Gubík <Unknown>\n"
+"Language-Team: Slovak <sk@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "_Všetky stránky zo zásobníka"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Orezanie"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Email"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Odoslať oskenované dokumenty emailom"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Nový"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fotografia"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Predvoľby"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Tlačiť"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Vytlačiť oskenované dokumenty"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Otočiť doľava"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Otočiť doprava"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Otočiť _doľava"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Otočiť do_prava"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Uložiť"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Uložiť aktuálny dokument do súboru"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Skenovať"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Zdroj s_kenovania:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Oskenovať jednu stránku zo skeneru"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Jednoduché skenovanie"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Jedna stránka"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Vytvoriť nový dokument"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Text"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Schváliť"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Orezanie"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Vlastné"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokument"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Pomocník"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "US _List"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "Žia_dne"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Stránka"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Heslo:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Otočiť výrez"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Zastaviť skenovanie"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Užívateľské meno pre zdroj:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Skenovať dokumenty"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Zariadenie z ktorého skenovať"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Smer skenovania"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Výška skenovaného obrázku"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Zariadenie SANE z ktorého získať obrázky."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE pokiaľ je aplikačné okno v maximálnej veľkosti"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"Smer skeneru naprieč skenovanou stránkou. Môže to byť jedno z následujúcich: "
+"'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Výška skenovaného obrázku. Táto hodnota sa aktualizuje podľa poslednej "
+"skenovanej stránky."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Šírka skenovaného obrázku. Táto hodnota sa aktualizuje podľa poslednej "
+"skenovanej stránky."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Druh dokumentu ktorý sa skenuje"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Druh dokumentu ktorý sa skenuje. 'text' pre textové dokumenty, 'photo' pre "
+"fotografie. Táto hodnota určuje rozlíšenie skenovania, farby a koncové "
+"spracovanie."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Šírka skenovaného obrázku v pixeloch"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Výška okna v pixeloch"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Šírka okna v pixeloch"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Žiaden skener nie je k dispozícii. Prosím pripojte skener."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Nie je možné pripojiť sa ku skeneru"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Nie je možné začať skenovať"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Chyba v komunikácii so skenerom"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Skenovanie zlyhalo"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Ukladanie súboru zlyhalo"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Použitie:\n"
+" %s [ZARIADENIE...] - Skenovacia pomôcka"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Možnosti pomocníka:\n"
+" -d, --debug Zobraziť ladiace správy\n"
+" -v, --version Zobraziť verziu vydania\n"
+" -h, --help Zobraziť možnosti pomocníka\n"
+" --help-all Zobraziť všetky možnosti pomocníka\n"
+" --help-gtk Zobraziť GTK+ možnosti"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ Options:\n"
+" --class=TRIEDA Trieda programu použitá správcom okien\n"
+" --name=MENO Meno programu použité správcom okien\n"
+" --screen=OBRAZOVKA X obrazovka ktorá sa má použiť\n"
+" --sync Zmeniť X volania na asynchrónne\n"
+" --gtk-module=MODULY Zaviesť dodatočné GTK+ moduly\n"
+" --g-fatal-warnings Zmeniť všetky upozornenia na terminálne"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Meno používateľa a heslo je vyžadované pre prístup k '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Žiadne skenery neboli nájdené"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Prosím skontrolujte či je skener pripojený a zapnutý"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Uložiť ako..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Tento program je slobodný softvér: môžete ho šíriť a/alebo upravovať podľa "
+"podmienok Všeobecnej verejnej licencie GNU (GNU General Public Licence) "
+"vydanej Nadáciou slobodného softvéru (Free Software Foundation) a to buď "
+"podľa verzie 3 tejto licencie, alebo (podľa vášho uváženia) ktorejkoľvek "
+"neskoršej verzie.\n"
+"\n"
+"Tento program je šírený v nádeji, že bude užitočný, avšak BEZ AKEJKOĽVEK "
+"ZÁRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE "
+"URČITÝ ÚČEL. Ďalšie podrobnosti nájdete vo Všeobecnej verejnej licencii "
+"GNU.\n"
+"\n"
+"Spolu s týmto programom by ste mali obdržať kópiu Všeobecnej verejnej "
+"licencie GNU. Ak sa tak nestalo, navštívte <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "O programe Jednoduché skenovanie"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Nástroj na jednoduché skenovanie dokumentov"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Laco Gubík https://launchpad.net/~lacogubik-gmail\n"
+" Laco Horváth https://launchpad.net/~6205"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Chýbajúce súbory"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Prosím skontrolujte vašu inštaláciu"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Zmeniť _skener"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Naskenovaný dokument.pdf"
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..c2dd901
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,623 @@
+# Slovenian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-13 09:16+0000\n"
+"Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n"
+"Language-Team: Slovenian <sl@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-03-14 05:08+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Vse strani iz _podajalnika"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Nastavi možnosti programa"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Obreži"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Obreži izbrano stran"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Elektronska pošta"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Pošlji skenirane dokumente po e-pošti"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Velikost ZDA Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Novo"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fotografija"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Možnosti"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Natisni"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Tiskanje skeniranih dokumentov"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Zavrti levo"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Zavrti desno"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Zavrti _levo"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Zavrti _desno"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Obrni stran v levo (nasprotna smer urinega kazalca)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Obrni stran v desno (smer urinega kazalca)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Shrani"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Shrani trenutni dokument v datoteko"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "Sk_eniraj"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Skeniraj"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Vir s_keniranja:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Skeniranje ene streni iz skenerja"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Preprosto skeniranje"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Ena _stran"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Začni nov dokument"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Zaustavi"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Ustavi trenutno skeniranje"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Besedilo"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"Vrsta dokumenta za skeniranje. Uporabi \"Besedilo\" za hitro skeniranje "
+"besedil srednje kakovosti oziroma \"Fotografija\" za počasnejše vendar bolj "
+"kvalitetno skeniranje fotografij ali grafike."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Pooblasti"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "Vsebina pomoči"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Obreži"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Po meri"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokument"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_E-pošta"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "Pomo_č"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Pismo"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Brez"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "Stran"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Geslo:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "_Ločljivost za fotografije:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Zavrti obrezovano območje"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Zaustavi skeniranje"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "_Ločljivost za besedila:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Uporabniško ime za vir:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Skeniraj dokumente"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Naprava za skeniranje"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Smer skeniranja"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Mapa za shranjevanje datotek"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Višina skenirane slike v točkah"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Ločljivost za skeniranje fotografij"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Ločljivost za skeniranje besedil"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Ločljivost zadnjega skeniranja"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Naprava SANE za pridobivanje slik."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "PRAV, če je okno programa razpeto"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"Smer skenerja čez skenirano stran. Lahko je ena od sledečih: 'od-zgoraj-"
+"navzdol' 'od-spodaj-navzgor' 'od-leve-proti-desni' 'od-desne-proti-levi'"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+"Mapa za shranjevanje datotek. Privzeto mapa dokumentov, če ni nastavljena."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Višina skenirane slike v točkah. Ta vrednost je posodobljena na vrednost "
+"zadnje skenirane strani."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr "Ločljivost zadnjega skeniranja v točkah na palec (dpi)"
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr "Ločljivost pri skeniranju fotografij v točkah na palec (dpi)"
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr "Ločljivost pri skeniranju besedil v točkah na palec (dpi)"
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Širina skenirane slike v točkah. Ta vrednost je posodobljena na vrednost "
+"zadnje skenirane strani."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Vrsta skeniranega dokumenta"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Vrsta skeniranega dokumenta. 'besedilo' za dokumente z besedilom, "
+"'fotografije' za fotografije. Ta nastavitev določi ločljivost skeniranje, "
+"barve in nadaljnje odvelovanje"
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Širina skenirane slike v točkah"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Višina okna v točkah"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Širina okna v točkah"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Ni skenerjev na voljo. Priklopite skener."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "S skenerjem se ni mogoče povezati"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Skeniranja ni mogoče začeti"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Napaka med komuniciranjem s skenerjem"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Skeniranje je spodletelo"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Skeniran dokument"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Shranjevanje datoteke je spodletelo"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Uporaba:\n"
+" %s [NAPRAVA ...] - Pripomoček skeniranja"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Možnosti pomoči\n"
+" -d, --debug Natisne sporočila razhroščevanja\n"
+" -v, --version Pokaže podrobnosti različice\n"
+" -h, --help Pokaže možnosti pomoči\n"
+" --help-all Pokaže vse možnosti pomoči\n"
+" --help-gtk Pokaže možnosti GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Možnosti GTK+:\n"
+" --class=CLASS Programski razred uporabljen v upravljalniku oken\n"
+" --name=NAME Ime programa, ki uporabljen v upravljalniku oken\n"
+" --screen=SCREEN X zaslon za uporabo\n"
+" --sync Uskladi klice X\n"
+" --gtk-module=MODULES Naloži dodatnemodule GTK+\n"
+" --g-fatal-warnings Določi vsa opozorila usodna"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Za dostop do '%s' je zahtevano uporabniško ime in geslo"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Skenerja ni mogoče zaznati"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Preverite da je vaš skener povezan in vklopljen"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr "Ni mogoče odpreti programa predogleda slik"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (večstranski dokument)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (stisnjen)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (brez izgub)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Shrani kot..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Slikovne datoteke"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Vse datoteke"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Izberite _vrsto datoteke"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Ni mogoče odpreti datoteke pomoči"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Ta program je prosta programska oprema; program lahko širite in/ali "
+"spreminjate\n"
+"pod pogoji Splošnega javnega dovoljenja kot je objavljena s strani Free "
+"Software \n"
+"Foundation; ali različico 3 Licence ali (na vašo željo) katerakoli kasnejša "
+"različica.\n"
+"\n"
+"Ta program je distribuiran v upanju da bo uporaben,\n"
+"toda BREZ KAKRŠNIHKOLI ZAGOTOVIL; tudi brez impliciranih\n"
+"zagotovila za PRODAJO ali PRIMERNOST ZA DOLOČEN NAMEN. \n"
+"Oglejte si GNU General Public Licence za več podrobnosti.\n"
+"\n"
+"Skupaj s programom bi morali prejeti tudi kopijo splošnega javnega potrdila; "
+"\n"
+"v primeru, da kopije niste prejeli si oglejte <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "O Programu"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Preprosto orodje za skeniranje dokumentov"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Andrej Znidarsic https://launchpad.net/~andrej-znidarsic\n"
+" Robert Hrovat https://launchpad.net/~robi-hipnos\n"
+" grofaty https://launchpad.net/~grofaty"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d točk na palec (osnutek)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d točk na palec"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d točk na palec (visoka ločljivost)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d točk na palec (privzeto)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Datoteke manjkajo"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Preverite vašo namestitev"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Spremeni _Skener"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Skeniran dokument.pdf"
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..24efb5c
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,602 @@
+# Serbian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Serbian <sr@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-03-11 05:11+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Све странице из _фиоке"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Америчко писмо"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Слика"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Подешавања"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Ротирај _лево"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Ротирај _десно"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Извор скенирања"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Обично скенирање"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Једна _страна"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Текст"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "О_власти"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Исеци"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Кориснички"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Документ"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Помоћ"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Летер"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Ништа"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Страна"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Лозинка:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "Ротирај осечено"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Корисничко име за извор:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Није могуће повезати се са скенером"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Није могуће започети скенирање"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Грешка у коминикацији са скенером"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Грешка у скенирању"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Грешка у снимању датотеке"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Коришћење:\n"
+" %s [DEVICE...] - алатка за скенирање"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Гтк+ опције:\n"
+" --class=CLASS Класа програма коју користи управљач "
+"прозора\n"
+" --name=NAME Име програма како га приказује управљач "
+"прозора\n"
+" --screen=SCREEN Икс екран који да користи\n"
+" --sync Поставља Икс позиве синхроним\n"
+" --gtk-module=MODULES Учитава допунске Гтк+ додатке\n"
+" --g-fatal-warnings Поставља сва упозорења као кобна"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Корисничко име и лозинка су обавезни за приступ '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Нема препознатих скенера"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Проверите да ли је скенер повезан и укључен"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Сачувај као..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Овај програм је слободан софтвер: можете делити и/или мењати\n"
+"под условима ГНУ-ове опште јавне лиценце коју је објавила\n"
+"Задужбина за слободни софтвер, било верзије 3 лиценце, или\n"
+"(по вашем избору) било које касније верзије.\n"
+"\n"
+"Овај програм је дистрибуиран у нади да ће бити користан,\n"
+"али БЕЗ БИЛО КАКВЕ ГАРАНЦИЈЕ, чак и без подразумеване гаранције за\n"
+"ПРОДАЈУ или ПРИЛАГОЂАВАЊЕ ЗА ОДРЕЂЕНЕ ПОТРЕБЕ. Погледајте\n"
+"ГНУ Општу јавну лиценцу за више детаља.\n"
+"\n"
+"Требало би да сте примили копију ГНУ Опште јавне лиценце\n"
+"заједно са овим програмом. Ако не, види <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "О Једноставно скенирање"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Алатка за једноставно скенирање докумената"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Ivan Petrovic https://launchpad.net/~ivanpetrovic"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Недостају датотеке"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Проверите вашу инсталацију"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Скенирани документ.pdf"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..329178e
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,625 @@
+# Swedish translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-15 19:01+0000\n"
+"Last-Translator: Daniel Nylander <yeager@ubuntu.com>\n"
+"Language-Team: Swedish <sv@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-03-16 04:53+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Alla sidor från _matare"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Konfigurera programinställningar"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Beskär"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Beskär den valda sidan"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "E-post"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Skicka inlästa dokument via e-post"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Ny"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Foto"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Inställningar"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Skriv ut"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Skriv ut de inlästa dokumenten"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Rotera åt vänster"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Rotera åt höger"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Rotera _vänster"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Rotera _höger"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Rotera sidan åt vänster (motsols)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Rotera sidan åt höger (medsols)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Spara"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Spara det aktuella dokumentet till en fil"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "Läs _in"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Läs in"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Inläsnings_källa:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Läs in en enstaka sida från bildläsaren"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Simple Scan"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Enkel _sida"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Starta ett nytt dokument"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "Stoppa"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "Stoppa den aktuella bildinläsningen"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Text"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+"Typ av dokument som ska läsas in. Använd \"Text\" för snabba, "
+"medelkvalitativa inläsningar av textdokument, eller \"Foto\" för långsammare "
+"inläsningar med högre kvalitet med grafik eller fotografier."
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "A_uktorisera"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "_Innehåll"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Beskär"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "An_passad"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Dokument"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "_E-post"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Hjälp"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Ingen"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Sida"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Lösenord:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "_Fotoupplösning:"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Rotera beskär"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "_Stoppa inläsning"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr "_Textupplösning:"
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Användarnamn för källa:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Läs in dokument"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Enhet att läsa in från"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Riktning för inläsning"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr "Katalog att spara filer i"
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Höjd för den inlästa bilden i bildpunkter"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr "Upplösning för fotoinläsningar"
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr "Upplösning för textinläsningar"
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr "Upplösning för senaste inlästa bild"
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "SANE-enhet att hämta in bilder från."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE om programfönstret är maximerat"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"Riktningen för bildläsaren över den inlästa sidan. Det kan vara en av "
+"följande: \"top-to-bottom\" \"bottom-to-top\" \"left-to-right\" \"right-to-"
+"left\""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+"Katalogen att spara filer i. Standardvärdet är dokumentkatalogen om den inte "
+"är inställd."
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Höjd för den inlästa bilden i bildpunkter. Detta värde uppdateras till vad "
+"som senaste inlästa bilden använde."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr "Upplösningen i punkter per tum för den föregående inlästa bilden."
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr "Upplösningen i punkter per tum att använda när foton läses in."
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr "Upplösning i punkter per tum att använda när text läses in."
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Bredd för den inlästa bilden i bildpunkter. Detta värde uppdateras till vad "
+"som senaste inlästa bilden använde."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Typ av dokument som ska läsas in"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Typ av dokument som läses in. \"text\" för textdokument, \"photo\" för "
+"foton. Denna inställning bestämmer inläsningens upplösning, färger och "
+"efterbehandling."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Bredd för den inlästa bilden i bildpunkter"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Fönsterhöjd i bildpunkter"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Fönsterbredd i bildpunkter"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "Inga bildläsare finns tillgängliga. Anslut en bildläsare."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Kan inte ansluta till bildläsare"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Kan inte starta inläsning"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Fel i kommunikation med bildläsare"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Misslyckades med att läsa in"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr "Inläst dokument"
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Misslyckades med att spara filen"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Användning:\n"
+" %s [ENHET...] - Inläsningsverktyg"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Hjälpflaggor:\n"
+" -d, --debug Skriv ut felsökningsmeddelanden\n"
+" -v, --version Visa utgåvans version\n"
+" -h, --help Visa hjälpflaggor\n"
+" --help-all Visa alla hjälpflaggor\n"
+" --help-gtk Visa GTK+-flaggor"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+-flaggor:\n"
+" --class=KLASS Programklass som används av "
+"fönsterhanteraren\n"
+" --name=NAMN Programnamn som används av "
+"fönsterhanteraren\n"
+" --screen=SKÄRM X-skärm att använda\n"
+" --sync Gör X-anrop synkrona\n"
+" --gtk-module=MODULER Läs in ytterligare GTK+-moduler\n"
+" --g-fatal-warnings Gör alla varningar ödesdigra"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Användarnamn och lösenord krävs för åtkomst till \"%s\""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Inga bildinläsare hittades"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Kontrollera att din bildläsare är ansluten och påslagen"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr "Kunde inte öppna förhandsvisningsprogrammet för bilder"
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr "PDF (flersidigt dokument)"
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr "JPEG (komprimerad)"
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr "PNG (förlustfri)"
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Spara som..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr "Bildfiler"
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr "Alla filer"
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr "Välj fil_typ"
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr "Kunde inte öppna hjälpfilen"
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Detta program är fri programvara. Du kan distribuera det och/eller\n"
+"modifiera det under villkoren i GNU General Public License, publicerad\n"
+"av Free Software Foundation, antingen version 3 eller (om du så vill)\n"
+"någon senare version.\n"
+"\n"
+"Detta program distribueras i hopp om att det ska vara användbart,\n"
+"men UTAN NÅGON SOM HELST GARANTI, även utan underförstådd\n"
+"garanti om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT\n"
+"SPECIELLT ÄNDAMÅL. Se GNU General Public License för ytterligare\n"
+"information.\n"
+"\n"
+"Du bör ha fått en kopia av GNU General Public License tillsammans\n"
+"med detta program. Om inte, se <http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Om Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Enkelt verktyg för inläsning av dokument"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Anders Pamdal https://launchpad.net/~anders-pamdal\n"
+" Daniel Nylander https://launchpad.net/~yeager\n"
+" Jens Askengren https://launchpad.net/~jens-askengren"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr "%d dpi (utkast)"
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr "%d dpi"
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr "%d dpi (hög upplösning)"
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr "%d dpi (standard)"
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Filer saknas"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Kontrollera din installation"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "Byt _bildinläsare"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Inläst dokument.pdf"
diff --git a/po/te.po b/po/te.po
new file mode 100644
index 0000000..3d21e95
--- /dev/null
+++ b/po/te.po
@@ -0,0 +1,579 @@
+# Telugu translation for simple-scan
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Telugu <te@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr ""
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr ""
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr ""
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr ""
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "ఫొటో"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "అభిరుచులు"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr ""
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr ""
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr ""
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr ""
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr ""
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "పాఠ్యం"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr ""
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr ""
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr ""
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr ""
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "సహాయం (_H)"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr ""
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr ""
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "సంకేతపదం (_P):"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr ""
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr ""
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr ""
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr ""
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr ""
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr ""
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr ""
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr ""
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" వీవెన్ (Veeven) https://launchpad.net/~veeven"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr ""
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr ""
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr ""
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..2812d45
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,591 @@
+# Turkish translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-03-20 15:22+0000\n"
+"Last-Translator: Yalçın Can <Unknown>\n"
+"Language-Team: Turkish <tr@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-03-21 04:48+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Kaynaktaki Tüm Say_falar"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "Uygulama tercihlerini yapılandır"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Kırp"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr "Seçili sayfayı kırp"
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Eposta"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Taranan belgeleri e-posta olarak gönder"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Yeni"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Fotoğraf"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Tercihler"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Yazdır"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Taranan belgeleri yazdır"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Sola Döndür"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Sağa Döndür"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "_Sola Çevir"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Sa_ğa Çevir"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "Sayfayı sola döndür (saat yönünün tersine)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "Sayfayı sağa döndür (saat yönünde)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Kaydet"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Geçerli belgeyi bir dosyaya kaydet"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr "T_ara"
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Tara"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Ta_rama Kaynağı:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Tarayıcıdan tek bir sayfa tara"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Basit Tarama"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "_Tek Sayfa"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Metin"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Yetkilendir"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Kırp"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Özel"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Belge"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Yardım"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr ""
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Hiçbiri"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Sayfa"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Parola:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Tarayıcıya bağlanılamadı"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Tarama başlatılamadı"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Tarayıcı ile iletişim kurulamıyor"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Tarama başarısız oldu"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Dosya kaydedilemedi"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Usage:\n"
+" %s [AYGIT...] - Tarama aracı"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ Seçenekleri: \n"
+" --class=SINIF Pencere yöneticisi tarafından kullanılan "
+"program sınıfı\n"
+" --name=İSİM Pencere yöneticisi tarafından kullanılacak "
+"program ismi\n"
+" --screen=EKRAN Kullanılacak X ekranı\n"
+" --sync X çağrılarını eş zamanlı yapar\n"
+" --gtk-module=MODULLER Tüm ek GTK+ modullerini yükler\n"
+" --g-fatal-warnings Tüm uyarıları ölümcül yapar"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr ""
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Tarayıcı bulunamadı"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Lütfen tarayıcınızın bağlı ve açık olduğundan emin olun"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Farklı Kaydet..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr ""
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Basit bir belge tarama aracı"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Efe Çiftci https://launchpad.net/~efeciftci\n"
+" Yalçın Can https://launchpad.net/~echza\n"
+" aries https://launchpad.net/~sonagirbas"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Dosyalar eksik"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Lütfen kurulumunuzu denetleyiniz"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Taranan Belge.pdf"
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..09856fb
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,619 @@
+# Ukrainian translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+#
+# Yuri Chornoivan <yurchor@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-13 11:19+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
+"Language-Team: Ukrainian <translation@linux.org.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "Всі сторінки з _лотка"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "Обрізати"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "Надіслати ел. поштою"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "Надіслати заскановані документи електронною поштою"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "Створити"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Фотографія"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Параметри"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "Надрукувати"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "Надрукувати заскановані документи"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "Обернути ліворуч"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "Обернути праворуч"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Обернути _ліворуч"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Обернути п_раворуч"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "Зберегти"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "Зберегти поточний документ до файла"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "Сканувати"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "_Джерело даних сканування:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "Сканувати одну сторінку"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Просте сканування"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Одинарна _сторінка"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "Почати новий документ"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Текстовий"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Уповноваження"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Обрізати"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "_Нетипові"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "Д_окумент"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Довідка"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Без обрізання"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "С_торінка"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Пароль:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "_Обернути область обрізання"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "П_рипинити сканування"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "_Користувач ресурсу:"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "Сканувати документи"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "Пристрій сканування"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "Напрямок сканування"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "Висота сканованого зображення у пікселях"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "Пристрій SANE, з якого слід отримувати зображення."
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "Якщо позначено, вікно програми буде максимізовано"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+"Напрямок сканування сторінки. Може мати такі значення: «top-to-bottom» "
+"(згори вниз), «bottom-to-top» (знизу вгору), «left-to-right» (зліва "
+"праворуч), «right-to-left» (справа ліворуч)"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+"Висота сканованого зображення у пікселях. Це значення буде оновлено на те, "
+"яке було використано для попереднього зображення."
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+"Ширина сканованого зображення у пікселях. Це значення буде оновлено на те, "
+"яке було використано для попереднього зображення."
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "Тип документа, який ви скануєте"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+"Тип документа, який ви скануєте. «text» — текстовий документ, «photo» — "
+"фотографії. Значення цього параметра впливає на роздільну здатність "
+"сканування, використання кольорів та остаточну обробку зображення."
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "Ширина сканованого зображення у пікселях"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "Висота вікна у пікселях"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "Ширина вікна у пікселях"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+"Не вдалося виявити жодного сканера. Будь ласка, з’єднайте сканер з "
+"комп’ютером."
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Не вдалося з’єднатися зі сканером"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Не вдалося розпочати сканування"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Помилка під час спроби обміну даними зі сканером"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Помилка сканування"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Не вдалося зберегти файл"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Користування:\n"
+" %s [ПРИСТРІЙ...] — інструмент сканування"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"Додаткові параметри:\n"
+" -d, --debug Виводити діагностичні повідомлення\n"
+" -v, --version Показати відомості щодо випуску\n"
+" -h, --help Показати довідку щодо параметрів\n"
+" --help-all Показати всі параметри\n"
+" --help-gtk Показати параметри GTK+"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Параметри GTK+:\n"
+" --class=КЛАС Клас програми, який використовуватиметься "
+"інструментом керування вікнами\n"
+" --name=НАЗВА Назва програми, що використовуватиметься "
+"інструментом керування вікнами\n"
+" --screen=ЕКРАН Екран сервера X, яким слід скористатися\n"
+" --sync Синхронізувати виклики X\n"
+" --gtk-module=МОДУЛІ Завантажити додаткові модулі GTK+\n"
+" --g-fatal-warnings Завершувати роботу у разі появи попереджень"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Для доступу до «%s» слід вказати ім’я користувача та пароль"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Сканерів не виявлено"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Будь ласка, перевірте, чи з’єднано ваш сканер і чи увімкнено його"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Зберегти як..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"Ця програма є вільним програмним забезпеченням; ви можете поширювати її "
+"і/або змінювати її за умов дотримання GNU General Public License у тому "
+"вигляді, у якому її оприлюднено Free Software Foundation; версії 3 цієї "
+"ліцензії, або (за потреби) будь-якої пізнішої версії.\n"
+"\n"
+"Ця програма поширюється у сподіванні, що вона буде корисною, але БЕЗ БУДЬ-"
+"ЯКИХ ГАРАНТІЙ; навіть без очевидної гарантії КОМЕРЦІЙНОЇ ЦІННОСТІ або "
+"ПРИДАТНОСТІ ДЛЯ ЯКОЇСЬ МЕТИ. Докладніше про це ви можете дізнатися з \n"
+"GNU General Public License.\n"
+"Разом з цією програмою ви маєте отримати копію GNU General Public License. "
+"Якщо ви її не отримали, зверніться за адресою "
+"<http://www.gnu.org/licenses/>, щоб дізнатися про подальші дії."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Про «Просте сканування»"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Інструмент для спрощення сканування документів"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Yuri Chornoivan https://launchpad.net/~yurchor-gmail"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Не виявлено таких файлів"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Будь ласка, перевірте, чи належним чином встановлено програму"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "З_мінити сканер"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Сканований документ.pdf"
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..8b686ae
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,590 @@
+# Vietnamese translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-01-26 22:27+0000\n"
+"Last-Translator: Launchpad Translations Administrators "
+"<rosetta@launchpad.net>\n"
+"Language-Team: Vietnamese <vi@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr ""
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr ""
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr ""
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr ""
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "Le_gal"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr ""
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "Ảnh chụp"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "Tùy thích"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr ""
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr ""
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr ""
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr ""
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "Xoay _trái"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "Xoay _Phải"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr ""
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr ""
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr ""
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr ""
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "Quét _Nguồn:"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr ""
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "Quét đơn giản"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "Trang Đơn"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr ""
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr ""
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr ""
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "Văn bản"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "_Xác thực"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr ""
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "_Xén"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "Tự _chọn"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "_Tài liệu"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr ""
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "_Trợ giúp"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "_Letter"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "_Không có"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "_Trang"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "_Mật khẩu:"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr ""
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr ""
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr ""
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr ""
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr ""
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr ""
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "Không nối được với máy quét hình"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "Không quét hình được"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "Lỗi khi giao dịch với máy quét hình"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "Quét hình thất bại"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "Không lưu được tệp"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"Cách dùng:\n"
+" %s [DEVICE...] - Scanning utility"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"Lựa chọn GTK+ :\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "Tên đăng nhập và mật mã cần thiết để truy cập '%s'"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "Không phát hiện máy quét hình nào hết"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "Vui lòng kiểm tra đã cắm và bật máy quét hình chưa"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "Lưu thành..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "Về Simple Scan"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "Công cụ đơn giản để quét tài liệu"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Vu Do Quynh https://launchpad.net/~vu-do-quynh"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "Thiếu các tệp"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "Vui lòng kiểm tra lại việc cài đặt"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr ""
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "Tài liệu quét.pdf"
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..56c3b0e
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,608 @@
+# Chinese (Simplified) translation for simple-scan
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the simple-scan package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: simple-scan\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-03-11 09:46+1100\n"
+"PO-Revision-Date: 2010-02-28 10:59+0000\n"
+"Last-Translator: Xhacker Liu <liu.dongyuan@gmail.com>\n"
+"Language-Team: Chinese (Simplified) <zh_CN@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-03-11 05:12+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. Radio button for cropping page to 4x6 inch
+#: ../data/simple-scan.ui.h:2
+msgid "4&#xD7;6"
+msgstr "4&#xD7;6"
+
+#. Radio button for cropping page to A4 size
+#: ../data/simple-scan.ui.h:4
+msgid "A_4"
+msgstr "A_4"
+
+#. Radio button for cropping page to A5 size
+#: ../data/simple-scan.ui.h:6
+msgid "A_5"
+msgstr "A_5"
+
+#. Radio button for cropping page to A6 size
+#: ../data/simple-scan.ui.h:8
+msgid "A_6"
+msgstr "A_6"
+
+#. Toolbar scan menu item to scan all pages from a document feeder
+#: ../data/simple-scan.ui.h:10
+msgid "All Pages From _Feeder"
+msgstr "传送来的所有页面(_F)"
+
+#. Tooltip for preferences button
+#: ../data/simple-scan.ui.h:12
+msgid "Configure application preferences"
+msgstr "配置程序首选项"
+
+#: ../data/simple-scan.ui.h:13
+msgid "Crop"
+msgstr "剪裁"
+
+#. Tooltip for crop button
+#: ../data/simple-scan.ui.h:15
+msgid "Crop the selected page"
+msgstr ""
+
+#. Label on email toolbar item
+#: ../data/simple-scan.ui.h:17
+msgid "Email"
+msgstr "电子邮件"
+
+#. Tooltip for the email toolbar button
+#: ../data/simple-scan.ui.h:19
+msgid "Email the scanned documents"
+msgstr "使用电子邮件发送扫描的文档"
+
+#. Radio button for cropping to page to US legal size
+#: ../data/simple-scan.ui.h:21
+msgid "Le_gal"
+msgstr "法定(_G)"
+
+#: ../data/simple-scan.ui.h:22
+msgid "New"
+msgstr "新建"
+
+#. Combo box label for photo scan mode
+#: ../data/simple-scan.ui.h:24
+msgid "Photo"
+msgstr "照片"
+
+#. Title of preferences dialog
+#: ../data/simple-scan.ui.h:26
+msgid "Preferences"
+msgstr "设置"
+
+#. Label on print toolbar item
+#: ../data/simple-scan.ui.h:28
+msgid "Print"
+msgstr "打印"
+
+#. Tooltip for print toolbar button
+#: ../data/simple-scan.ui.h:30
+msgid "Print the scanned documents"
+msgstr "打印扫描的文档"
+
+#. Label on rotate page left (anti-clockwise) item
+#: ../data/simple-scan.ui.h:32
+msgid "Rotate Left"
+msgstr "向左旋转"
+
+#. Label on rotate page right (clockwise) item
+#: ../data/simple-scan.ui.h:34
+msgid "Rotate Right"
+msgstr "向右旋转"
+
+#. Menu item to rotate page to left (anti-clockwise)
+#: ../data/simple-scan.ui.h:36
+msgid "Rotate _Left"
+msgstr "向左旋转(_L)"
+
+#. Menu item to rotate page to right (clockwise)
+#: ../data/simple-scan.ui.h:38
+msgid "Rotate _Right"
+msgstr "向右旋转(_R)"
+
+#. Tooltip for rotate left (counter-clockwise) button
+#: ../data/simple-scan.ui.h:40
+msgid "Rotate the page to the left (counter-clockwise)"
+msgstr "左旋页面(逆时针)"
+
+#. Tooltip for rotate right (clockwise) button
+#: ../data/simple-scan.ui.h:42
+msgid "Rotate the page to the right (clockwise)"
+msgstr "右旋页面(顺时针)"
+
+#. Label on save to file toolbar item
+#: ../data/simple-scan.ui.h:44
+msgid "Save"
+msgstr "保存"
+
+#. Tooltip for save toolbar button
+#: ../data/simple-scan.ui.h:46
+msgid "Save the current document to a file"
+msgstr "将文档保存到文件"
+
+#. Scan menu item
+#: ../data/simple-scan.ui.h:48
+msgid "Sc_an"
+msgstr ""
+
+#. Label on scan toolbar item
+#: ../data/simple-scan.ui.h:50
+msgid "Scan"
+msgstr "扫描"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:52
+msgid "Scan S_ource:"
+msgstr "扫描来源(_O):"
+
+#. Tooltip for scan toolbar button
+#: ../data/simple-scan.ui.h:54
+msgid "Scan a single page from the scanner"
+msgstr "从扫描仪扫描一个单页"
+
+#. Title of scan window
+#: ../data/simple-scan.ui.h:56 ../data/simple-scan.desktop.in.h:2
+msgid "Simple Scan"
+msgstr "扫描易"
+
+#. Toolbar scan menu item to scan a single page from the scanner
+#: ../data/simple-scan.ui.h:58
+msgid "Single _Page"
+msgstr "单页(_P)"
+
+#. Tooltip for new document button
+#: ../data/simple-scan.ui.h:60
+msgid "Start a new document"
+msgstr "开始一个新的文档"
+
+#: ../data/simple-scan.ui.h:61
+msgid "Stop"
+msgstr "停止"
+
+#. Tooltip for stop button
+#: ../data/simple-scan.ui.h:63
+msgid "Stop the current scan"
+msgstr "停止当前扫描"
+
+#. Combo box label for text scan mode
+#: ../data/simple-scan.ui.h:65
+msgid "Text"
+msgstr "文本"
+
+#. Tooltip for the toolbar document type combo box
+#: ../data/simple-scan.ui.h:67
+msgid ""
+"The type of document being scanned. Use \"Text\" for quick, medium quality "
+"scans of text documents, or \"Photo\" for slower, higher quality scans of "
+"documents with graphics or photographs."
+msgstr ""
+
+#. Button to submit authorization dialog
+#: ../data/simple-scan.ui.h:69
+msgid "_Authorize"
+msgstr "批准(_A)"
+
+#. Help|Contents menu
+#: ../data/simple-scan.ui.h:71
+msgid "_Contents"
+msgstr "内容(_C)"
+
+#. Label for page crop submenu
+#: ../data/simple-scan.ui.h:73
+msgid "_Crop"
+msgstr "剪裁(_C)"
+
+#. Radio button for cropping to custom page size
+#: ../data/simple-scan.ui.h:75
+msgid "_Custom"
+msgstr "自定义(_C)"
+
+#. Label on document menu (contains actions for this document, e.g. save, print)
+#: ../data/simple-scan.ui.h:77
+msgid "_Document"
+msgstr "文档 (_D)"
+
+#. Label on email menu item
+#: ../data/simple-scan.ui.h:79
+msgid "_Email"
+msgstr "电子邮件(_E)"
+
+#. Label on help menu
+#: ../data/simple-scan.ui.h:81
+msgid "_Help"
+msgstr "帮助 (_H)"
+
+#. Radio button for cropping page to US letter size
+#: ../data/simple-scan.ui.h:83
+msgid "_Letter"
+msgstr "信件(_L)"
+
+#. Radio button for no crop
+#: ../data/simple-scan.ui.h:85
+msgid "_None"
+msgstr "无(_N)"
+
+#. Page menu (contains action for each page, e.g. delete, crop)
+#: ../data/simple-scan.ui.h:87
+msgid "_Page"
+msgstr "页面(_P)"
+
+#. Label beside password entry
+#: ../data/simple-scan.ui.h:89
+msgid "_Password:"
+msgstr "密码(_P):"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:91
+msgid "_Photo Resolution:"
+msgstr "图像分辨率(_P)"
+
+#. Menu item to rotate the crop area
+#: ../data/simple-scan.ui.h:93
+msgid "_Rotate Crop"
+msgstr "旋转剪裁(_R)"
+
+#. Menu entry to stop current scan
+#: ../data/simple-scan.ui.h:95
+msgid "_Stop Scan"
+msgstr "停止扫描(_S)"
+
+#. Label beside scan source combo box
+#: ../data/simple-scan.ui.h:97
+msgid "_Text Resolution:"
+msgstr ""
+
+#. Label beside username entry
+#: ../data/simple-scan.ui.h:99
+msgid "_Username for resource:"
+msgstr "资源用户名(_U):"
+
+#: ../data/simple-scan.desktop.in.h:1
+msgid "Scan Documents"
+msgstr "扫描文档"
+
+#: ../data/simple-scan.schemas.in.h:1
+msgid "Device to scan from"
+msgstr "扫描设备"
+
+#: ../data/simple-scan.schemas.in.h:2
+msgid "Direction of scan"
+msgstr "扫描方向"
+
+#: ../data/simple-scan.schemas.in.h:3
+msgid "Directory to save files to"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:4
+msgid "Height of scanned image in pixels"
+msgstr "所扫描图像的以像素计的高度"
+
+#: ../data/simple-scan.schemas.in.h:5
+msgid "Resolution for photo scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:6
+msgid "Resolution for text scans"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:7
+msgid "Resolution of last scanned image"
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:8
+msgid "SANE device to acquire images from."
+msgstr "从 SANE 设备来获取图像。"
+
+#: ../data/simple-scan.schemas.in.h:9
+msgid "TRUE if the application window is maximized"
+msgstr "TRUE 如果应用程序窗口是最大化的"
+
+#: ../data/simple-scan.schemas.in.h:10
+msgid ""
+"The direction of the scanner across the scanned page. It can be one of the "
+"following: 'top-to-bottom' 'bottom-to-top' 'left-to-right' 'right-to-left'"
+msgstr "扫描仪扫描页面的方式。可以是如下几种:顶部到底部、底部到顶部、左边到右边,右边到左边"
+
+#: ../data/simple-scan.schemas.in.h:11
+msgid ""
+"The directory to save files to. Defaults to the documents directory if unset."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:12
+msgid ""
+"The height of scanned image in pixels. This value is updated to what the "
+"last scanned page was."
+msgstr "所扫描图像的以像素计的高度。这是最后一次扫描的页面的值。"
+
+#: ../data/simple-scan.schemas.in.h:13
+msgid "The resolution in dots-per-inch of the previously scanned image."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:14
+msgid "The resolution in dots-per-inch to use when scanning photos."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:15
+msgid "The resolution in dots-per-inch to use when scanning text."
+msgstr ""
+
+#: ../data/simple-scan.schemas.in.h:16
+msgid ""
+"The width of scanned image in pixels. This value is updated to what the last "
+"scanned page was."
+msgstr "所扫描图像的以像素计的宽度。这是最后一次扫描的页面的值。"
+
+#: ../data/simple-scan.schemas.in.h:17
+msgid "Type of document being scanned"
+msgstr "扫描文档的类型"
+
+#: ../data/simple-scan.schemas.in.h:18
+msgid ""
+"Type of document being scanned. 'text' for text documents, 'photo' for "
+"photos. This setting decides on the scan resolution, colors and post-"
+"processing."
+msgstr "扫描文档的类型。“文本”适用于文本文档,“照片”适用于照片。这些设置将会决定扫描分辨率、色彩和预处理。"
+
+#: ../data/simple-scan.schemas.in.h:19
+msgid "Width of scanned image in pixels"
+msgstr "所扫描图像的以像素计的宽度。"
+
+#: ../data/simple-scan.schemas.in.h:20
+msgid "Window height in pixels"
+msgstr "窗口高度(像素)"
+
+#: ../data/simple-scan.schemas.in.h:21
+msgid "Window width in pixels"
+msgstr "窗口宽度(像素)"
+
+#. Error displayed when no scanners to scan with
+#: ../src/scanner.c:852
+msgid "No scanners available. Please connect a scanner."
+msgstr "没有可用的扫描仪。请连接一个扫描仪。"
+
+#. Error displayed when cannot connect to scanner
+#: ../src/scanner.c:879
+msgid "Unable to connect to scanner"
+msgstr "不能连接到扫描仪"
+
+#. Error display when unable to start scan
+#: ../src/scanner.c:1101
+msgid "Unable to start scan"
+msgstr "不能开始扫描"
+
+#. Error displayed when communication with scanner broken
+#: ../src/scanner.c:1119 ../src/scanner.c:1212
+msgid "Error communicating with scanner"
+msgstr "与扫描仪通信错误"
+
+#. Title of error dialog when scan failed
+#: ../src/simple-scan.c:176
+msgid "Failed to scan"
+msgstr "扫描失败"
+
+#. Default filename to use when saving document (and extension will be added, e.g. .jpg)
+#: ../src/simple-scan.c:194
+msgid "Scanned Document"
+msgstr ""
+
+#. Title of error dialog when save failed
+#: ../src/simple-scan.c:263
+msgid "Failed to save file"
+msgstr "保存文件错误"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:380
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [DEVICE...] - Scanning utility"
+msgstr ""
+"用法:\n"
+" %s [设备...] - 扫描工具"
+
+#. Description on how to use simple-scan displayed on command-line
+#: ../src/simple-scan.c:388
+#, c-format
+msgid ""
+"Help Options:\n"
+" -d, --debug Print debugging messages\n"
+" -v, --version Show release version\n"
+" -h, --help Show help options\n"
+" --help-all Show all help options\n"
+" --help-gtk Show GTK+ options"
+msgstr ""
+"帮助选项:\n"
+" -d, --debug 输出调试信息\n"
+" -v, --version 显示版本信息\n"
+" -h, --help 显示帮助选项\n"
+" --help-all 显示所有帮助选项\n"
+" --help-gtk 显示 GTK+ 选项"
+
+#. Description on simple-scan command-line GTK+ options displayed on command-line
+#: ../src/simple-scan.c:400
+#, c-format
+msgid ""
+"GTK+ Options:\n"
+" --class=CLASS Program class as used by the window "
+"manager\n"
+" --name=NAME Program name as used by the window "
+"manager\n"
+" --screen=SCREEN X screen to use\n"
+" --sync Make X calls synchronous\n"
+" --gtk-module=MODULES Load additional GTK+ modules\n"
+" --g-fatal-warnings Make all warnings fatal"
+msgstr ""
+"GTK+ 选项:\n"
+" --class=CLASS 窗口管理器所用的程序类\n"
+" --name=NAME 窗口管理器所用的程序名\n"
+" --screen=SCREEN 要使用的 X 屏幕\n"
+" --sync 同步 X 调用\n"
+" --gtk-module=MODULES 加载额外的 GTK+ 模块\n"
+" --g-fatal-warnings 将所有警告置为致命"
+
+#. Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization
+#: ../src/ui.c:127
+#, c-format
+msgid "Username and password required to access '%s'"
+msgstr "使用 '%s' 需要用户名和密码"
+
+#. Warning displayed when no scanners are detected
+#: ../src/ui.c:226
+msgid "No scanners detected"
+msgstr "没有发现扫描器"
+
+#. Hint to user on why there are no scanners detected
+#: ../src/ui.c:228
+msgid "Please check your scanner is connected and powered on"
+msgstr "请检查您的扫描仪已经连接并且打开"
+
+#. Error message display when unable to preview image
+#: ../src/ui.c:517
+msgid "Unable to open image preview application"
+msgstr ""
+
+#. Save dialog: Label for saving in PDF format
+#: ../src/ui.c:756
+msgid "PDF (multi-page document)"
+msgstr ""
+
+#. Save dialog: Label for saving in JPEG format
+#: ../src/ui.c:758
+msgid "JPEG (compressed)"
+msgstr ""
+
+#. Save dialog: Label for saving in PNG format
+#: ../src/ui.c:760
+msgid "PNG (lossless)"
+msgstr ""
+
+#. Save dialog: Dialog title
+#: ../src/ui.c:772
+msgid "Save As..."
+msgstr "另存为..."
+
+#. Save dialog: Filter name to show only image files
+#: ../src/ui.c:788
+msgid "Image Files"
+msgstr ""
+
+#. Save dialog: Filter name to show all files
+#: ../src/ui.c:795
+msgid "All Files"
+msgstr ""
+
+#.
+#: ../src/ui.c:800
+msgid "Select File _Type"
+msgstr ""
+
+#. Error message displayed when unable to launch help browser
+#: ../src/ui.c:939
+msgid "Unable to open help file"
+msgstr ""
+
+#. The license this software is under (GPL3+)
+#: ../src/ui.c:955
+msgid ""
+"This program is free software: you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation, either version 3 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program. If not, see <http://www.gnu.org/licenses/>."
+msgstr ""
+"本程序为自由软件;您可依据自由软件基金会所发布的 GNU 通用公共授权条款,\n"
+"对本程序进行重新分发和/或修改;无论您依据的是本授权的第三版,或(您自由\n"
+"选择的)任一日后发行的版本。\n"
+"\n"
+"本程序是基于使用目的而加以发布,然而不承担何担保责任;亦无对适售性或特\n"
+"定目的适用性所为的默示性担保。详情请参照 GNU 通用公共授权。\n"
+"\n"
+"您应已收到附随于本程序的 GNU 通用公共授权的副本;如果没有,请参照\n"
+"<http://www.gnu.org/licenses/>."
+
+#. Title of about dialog
+#: ../src/ui.c:969
+msgid "About Simple Scan"
+msgstr "关于扫描易"
+
+#. Description of program
+#: ../src/ui.c:972
+msgid "Simple document scanning tool"
+msgstr "简易的文件扫描工具"
+
+#: ../src/ui.c:981
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Alexey Kotlyarov https://launchpad.net/~koterpillar\n"
+" Aron Xu https://launchpad.net/~happyaron\n"
+" Heling Yao https://launchpad.net/~hyao\n"
+" Jimhu https://launchpad.net/~huyiwei\n"
+" Xhacker Liu https://launchpad.net/~xhacker\n"
+" YunQiang Su https://launchpad.net/~wzssyqa\n"
+" ZhangCheng https://launchpad.net/~xxzc"
+
+#. Preferences dialog: Label for minimum resolution in resolution list
+#: ../src/ui.c:1114
+#, c-format
+msgid "%d dpi (draft)"
+msgstr ""
+
+#. Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch)
+#: ../src/ui.c:1116 ../src/ui.c:1117 ../src/ui.c:1118 ../src/ui.c:1121
+#, c-format
+msgid "%d dpi"
+msgstr ""
+
+#. Preferences dialog: Label for maximum resolution in resolution list
+#: ../src/ui.c:1120
+#, c-format
+msgid "%d dpi (high resolution)"
+msgstr ""
+
+#. Preferences dialog: Label for default resolution in resolution list
+#: ../src/ui.c:1143
+#, c-format
+msgid "%d dpi (default)"
+msgstr ""
+
+#. Title of dialog when cannot load required files
+#: ../src/ui.c:1175
+msgid "Files missing"
+msgstr "文件丢失"
+
+#. Description in dialog when cannot load required files
+#: ../src/ui.c:1177
+msgid "Please check your installation"
+msgstr "请检查您的安装"
+
+#. Button in error dialog to open prefereces dialog and change scanner
+#: ../src/ui.c:1339
+msgid "Change _Scanner"
+msgstr "更换扫描仪(_S)"
+
+#: ../src/ui.c:1463
+msgid "Scanned Document.pdf"
+msgstr "扫描的文件.pdf"
diff --git a/simple-scan.doap b/simple-scan.doap
new file mode 100644
index 0000000..de2ac8e
--- /dev/null
+++ b/simple-scan.doap
@@ -0,0 +1,21 @@
+<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:foaf="http://xmlns.com/foaf/0.1/"
+ xmlns:gnome="http://api.gnome.org/doap-extensions#"
+ xmlns="http://usefulinc.com/ns/doap#">
+
+ <name xml:lang="en">simple-scan</name>
+ <shortdesc xml:lang="en">Document Scanning Application</shortdesc>
+ <homepage rdf:resource="https://launchpad.net/simple-scan" />
+ <download-page rdf:resource="http://people.ubuntu.com/~robert-ancell/simple-scan/" />
+ <bug-database rdf:resource="https://bugs.launchpad.net/simple-scan" />
+ <category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
+
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Robert Ancell</foaf:name>
+ <foaf:mbox rdf:resource="mailto:robert.ancell@gmail.com" />
+ <gnome:userid>rancell</gnome:userid>
+ </foaf:Person>
+ </maintainer>
+</Project>
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..e6654d0
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,35 @@
+bin_PROGRAMS = simple-scan
+
+simple_scan_SOURCES = \
+ book.c \
+ book.h \
+ book-view.c \
+ book-view.h \
+ page.c \
+ page.h \
+ page-view.c \
+ page-view.h \
+ simple-scan.c \
+ scanner.c \
+ scanner.h \
+ ui.c \
+ ui.h
+
+simple_scan_CFLAGS = \
+ $(SIMPLE_SCAN_CFLAGS) \
+ $(WARN_CFLAGS) \
+ -DVERSION=\"$(VERSION)\" \
+ -DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" \
+ -DLOCALE_DIR=\"$(localedir)\" \
+ -DUI_DIR=\"$(datadir)/simple-scan/\" \
+ -DICON_DIR=\"$(datadir)/simple-scan/icons\" \
+ -DGCONF_DIR=\"/apps/simple-scan\" \
+ -DSIMPLE_SCAN_BINARY=\"simple-scan\"
+
+simple_scan_LDADD = \
+ $(SIMPLE_SCAN_LIBS) \
+ -lsane \
+ -lm
+
+DISTCLEANFILES = \
+ Makefile.in
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..5665293
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,661 @@
+# 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.
+
+@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 = :
+bin_PROGRAMS = simple-scan$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+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)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_simple_scan_OBJECTS = simple_scan-book.$(OBJEXT) \
+ simple_scan-book-view.$(OBJEXT) simple_scan-page.$(OBJEXT) \
+ simple_scan-page-view.$(OBJEXT) \
+ simple_scan-simple-scan.$(OBJEXT) \
+ simple_scan-scanner.$(OBJEXT) simple_scan-ui.$(OBJEXT)
+simple_scan_OBJECTS = $(am_simple_scan_OBJECTS)
+am__DEPENDENCIES_1 =
+simple_scan_DEPENDENCIES = $(am__DEPENDENCIES_1)
+simple_scan_LINK = $(CCLD) $(simple_scan_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+SOURCES = $(simple_scan_SOURCES)
+DIST_SOURCES = $(simple_scan_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
+DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
+DOC_USER_FORMATS = @DOC_USER_FORMATS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HELP_DIR = @HELP_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OMF_DIR = @OMF_DIR@
+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@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMPLE_SCAN_CFLAGS = @SIMPLE_SCAN_CFLAGS@
+SIMPLE_SCAN_LIBS = @SIMPLE_SCAN_LIBS@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+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@
+simple_scan_SOURCES = \
+ book.c \
+ book.h \
+ book-view.c \
+ book-view.h \
+ page.c \
+ page.h \
+ page-view.c \
+ page-view.h \
+ simple-scan.c \
+ scanner.c \
+ scanner.h \
+ ui.c \
+ ui.h
+
+simple_scan_CFLAGS = \
+ $(SIMPLE_SCAN_CFLAGS) \
+ $(WARN_CFLAGS) \
+ -DVERSION=\"$(VERSION)\" \
+ -DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" \
+ -DLOCALE_DIR=\"$(localedir)\" \
+ -DUI_DIR=\"$(datadir)/simple-scan/\" \
+ -DICON_DIR=\"$(datadir)/simple-scan/icons\" \
+ -DGCONF_DIR=\"/apps/simple-scan\" \
+ -DSIMPLE_SCAN_BINARY=\"simple-scan\"
+
+simple_scan_LDADD = \
+ $(SIMPLE_SCAN_LIBS) \
+ -lsane \
+ -lm
+
+DISTCLEANFILES = \
+ Makefile.in
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+simple-scan$(EXEEXT): $(simple_scan_OBJECTS) $(simple_scan_DEPENDENCIES)
+ @rm -f simple-scan$(EXEEXT)
+ $(AM_V_CCLD)$(simple_scan_LINK) $(simple_scan_OBJECTS) $(simple_scan_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-book-view.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-book.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-page-view.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-page.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-scanner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-simple-scan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple_scan-ui.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+simple_scan-book.o: book.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-book.o -MD -MP -MF $(DEPDIR)/simple_scan-book.Tpo -c -o simple_scan-book.o `test -f 'book.c' || echo '$(srcdir)/'`book.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-book.Tpo $(DEPDIR)/simple_scan-book.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='book.c' object='simple_scan-book.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-book.o `test -f 'book.c' || echo '$(srcdir)/'`book.c
+
+simple_scan-book.obj: book.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-book.obj -MD -MP -MF $(DEPDIR)/simple_scan-book.Tpo -c -o simple_scan-book.obj `if test -f 'book.c'; then $(CYGPATH_W) 'book.c'; else $(CYGPATH_W) '$(srcdir)/book.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-book.Tpo $(DEPDIR)/simple_scan-book.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='book.c' object='simple_scan-book.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-book.obj `if test -f 'book.c'; then $(CYGPATH_W) 'book.c'; else $(CYGPATH_W) '$(srcdir)/book.c'; fi`
+
+simple_scan-book-view.o: book-view.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-book-view.o -MD -MP -MF $(DEPDIR)/simple_scan-book-view.Tpo -c -o simple_scan-book-view.o `test -f 'book-view.c' || echo '$(srcdir)/'`book-view.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-book-view.Tpo $(DEPDIR)/simple_scan-book-view.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='book-view.c' object='simple_scan-book-view.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-book-view.o `test -f 'book-view.c' || echo '$(srcdir)/'`book-view.c
+
+simple_scan-book-view.obj: book-view.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-book-view.obj -MD -MP -MF $(DEPDIR)/simple_scan-book-view.Tpo -c -o simple_scan-book-view.obj `if test -f 'book-view.c'; then $(CYGPATH_W) 'book-view.c'; else $(CYGPATH_W) '$(srcdir)/book-view.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-book-view.Tpo $(DEPDIR)/simple_scan-book-view.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='book-view.c' object='simple_scan-book-view.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-book-view.obj `if test -f 'book-view.c'; then $(CYGPATH_W) 'book-view.c'; else $(CYGPATH_W) '$(srcdir)/book-view.c'; fi`
+
+simple_scan-page.o: page.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-page.o -MD -MP -MF $(DEPDIR)/simple_scan-page.Tpo -c -o simple_scan-page.o `test -f 'page.c' || echo '$(srcdir)/'`page.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-page.Tpo $(DEPDIR)/simple_scan-page.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page.c' object='simple_scan-page.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-page.o `test -f 'page.c' || echo '$(srcdir)/'`page.c
+
+simple_scan-page.obj: page.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-page.obj -MD -MP -MF $(DEPDIR)/simple_scan-page.Tpo -c -o simple_scan-page.obj `if test -f 'page.c'; then $(CYGPATH_W) 'page.c'; else $(CYGPATH_W) '$(srcdir)/page.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-page.Tpo $(DEPDIR)/simple_scan-page.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page.c' object='simple_scan-page.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-page.obj `if test -f 'page.c'; then $(CYGPATH_W) 'page.c'; else $(CYGPATH_W) '$(srcdir)/page.c'; fi`
+
+simple_scan-page-view.o: page-view.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-page-view.o -MD -MP -MF $(DEPDIR)/simple_scan-page-view.Tpo -c -o simple_scan-page-view.o `test -f 'page-view.c' || echo '$(srcdir)/'`page-view.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-page-view.Tpo $(DEPDIR)/simple_scan-page-view.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page-view.c' object='simple_scan-page-view.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-page-view.o `test -f 'page-view.c' || echo '$(srcdir)/'`page-view.c
+
+simple_scan-page-view.obj: page-view.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-page-view.obj -MD -MP -MF $(DEPDIR)/simple_scan-page-view.Tpo -c -o simple_scan-page-view.obj `if test -f 'page-view.c'; then $(CYGPATH_W) 'page-view.c'; else $(CYGPATH_W) '$(srcdir)/page-view.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-page-view.Tpo $(DEPDIR)/simple_scan-page-view.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page-view.c' object='simple_scan-page-view.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-page-view.obj `if test -f 'page-view.c'; then $(CYGPATH_W) 'page-view.c'; else $(CYGPATH_W) '$(srcdir)/page-view.c'; fi`
+
+simple_scan-simple-scan.o: simple-scan.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-simple-scan.o -MD -MP -MF $(DEPDIR)/simple_scan-simple-scan.Tpo -c -o simple_scan-simple-scan.o `test -f 'simple-scan.c' || echo '$(srcdir)/'`simple-scan.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-simple-scan.Tpo $(DEPDIR)/simple_scan-simple-scan.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='simple-scan.c' object='simple_scan-simple-scan.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-simple-scan.o `test -f 'simple-scan.c' || echo '$(srcdir)/'`simple-scan.c
+
+simple_scan-simple-scan.obj: simple-scan.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-simple-scan.obj -MD -MP -MF $(DEPDIR)/simple_scan-simple-scan.Tpo -c -o simple_scan-simple-scan.obj `if test -f 'simple-scan.c'; then $(CYGPATH_W) 'simple-scan.c'; else $(CYGPATH_W) '$(srcdir)/simple-scan.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-simple-scan.Tpo $(DEPDIR)/simple_scan-simple-scan.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='simple-scan.c' object='simple_scan-simple-scan.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-simple-scan.obj `if test -f 'simple-scan.c'; then $(CYGPATH_W) 'simple-scan.c'; else $(CYGPATH_W) '$(srcdir)/simple-scan.c'; fi`
+
+simple_scan-scanner.o: scanner.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-scanner.o -MD -MP -MF $(DEPDIR)/simple_scan-scanner.Tpo -c -o simple_scan-scanner.o `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-scanner.Tpo $(DEPDIR)/simple_scan-scanner.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scanner.c' object='simple_scan-scanner.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-scanner.o `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c
+
+simple_scan-scanner.obj: scanner.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-scanner.obj -MD -MP -MF $(DEPDIR)/simple_scan-scanner.Tpo -c -o simple_scan-scanner.obj `if test -f 'scanner.c'; then $(CYGPATH_W) 'scanner.c'; else $(CYGPATH_W) '$(srcdir)/scanner.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-scanner.Tpo $(DEPDIR)/simple_scan-scanner.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scanner.c' object='simple_scan-scanner.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-scanner.obj `if test -f 'scanner.c'; then $(CYGPATH_W) 'scanner.c'; else $(CYGPATH_W) '$(srcdir)/scanner.c'; fi`
+
+simple_scan-ui.o: ui.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-ui.o -MD -MP -MF $(DEPDIR)/simple_scan-ui.Tpo -c -o simple_scan-ui.o `test -f 'ui.c' || echo '$(srcdir)/'`ui.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-ui.Tpo $(DEPDIR)/simple_scan-ui.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ui.c' object='simple_scan-ui.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-ui.o `test -f 'ui.c' || echo '$(srcdir)/'`ui.c
+
+simple_scan-ui.obj: ui.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -MT simple_scan-ui.obj -MD -MP -MF $(DEPDIR)/simple_scan-ui.Tpo -c -o simple_scan-ui.obj `if test -f 'ui.c'; then $(CYGPATH_W) 'ui.c'; else $(CYGPATH_W) '$(srcdir)/ui.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple_scan-ui.Tpo $(DEPDIR)/simple_scan-ui.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ui.c' object='simple_scan-ui.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(simple_scan_CFLAGS) $(CFLAGS) -c -o simple_scan-ui.obj `if test -f 'ui.c'; then $(CYGPATH_W) 'ui.c'; else $(CYGPATH_W) '$(srcdir)/ui.c'; fi`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @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
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-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)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+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-binPROGRAMS
+
+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 -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ 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-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-binPROGRAMS
+
+
+# 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/src/book-view.c b/src/book-view.c
new file mode 100644
index 0000000..e45e22c
--- /dev/null
+++ b/src/book-view.c
@@ -0,0 +1,743 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <gdk/gdkkeysyms.h>
+
+#include "book-view.h"
+#include "page-view.h"
+
+// FIXME: When scrolling, copy existing render sideways?
+// FIXME: Only render pages that change and only the part that changed
+
+enum {
+ PAGE_SELECTED,
+ SHOW_PAGE,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+struct BookViewPrivate
+{
+ /* Book being rendered */
+ Book *book;
+ GHashTable *page_data;
+
+ /* True if the view needs to be laid out again */
+ gboolean need_layout, laying_out, show_selected_page;
+
+ /* Currently selected page */
+ PageView *selected_page;
+
+ /* Widget being rendered to */
+ GtkWidget *widget;
+
+ /* Horizontal adjustment */
+ GtkAdjustment *adjustment;
+
+ GtkWidget *box, *scroll;
+
+ GtkWidget *page_menu;
+
+ gint cursor;
+};
+
+G_DEFINE_TYPE (BookView, book_view, G_TYPE_OBJECT);
+
+
+BookView *
+book_view_new ()
+{
+ return g_object_new (BOOK_VIEW_TYPE, NULL);
+}
+
+
+static PageView *
+get_nth_page (BookView *view, gint n)
+{
+ Page *page = book_get_page (view->priv->book, n);
+ return g_hash_table_lookup (view->priv->page_data, page);
+}
+
+
+static PageView *
+get_next_page (BookView *view, PageView *page)
+{
+ gint i;
+
+ for (i = 0; ; i++) {
+ Page *p;
+ p = book_get_page (view->priv->book, i);
+ if (!p)
+ break;
+ if (p == page_view_get_page (page)) {
+ p = book_get_page (view->priv->book, i + 1);
+ if (p)
+ return g_hash_table_lookup (view->priv->page_data, p);
+ }
+ }
+
+ return page;
+}
+
+
+static PageView *
+get_prev_page (BookView *view, PageView *page)
+{
+ gint i;
+ PageView *prev_page = page;
+
+ for (i = 0; ; i++) {
+ Page *p;
+ p = book_get_page (view->priv->book, i);
+ if (!p)
+ break;
+ if (p == page_view_get_page (page))
+ return prev_page;
+ prev_page = g_hash_table_lookup (view->priv->page_data, p);
+ }
+
+ return page;
+}
+
+
+static void
+page_view_changed_cb (PageView *page, BookView *view)
+{
+ book_view_redraw (view);
+}
+
+
+static void
+page_view_size_changed_cb (PageView *page, BookView *view)
+{
+ view->priv->need_layout = TRUE;
+ book_view_redraw (view);
+}
+
+
+static void
+add_cb (Book *book, Page *page, BookView *view)
+{
+ PageView *page_view;
+ page_view = page_view_new (page);
+ g_signal_connect (page_view, "changed", G_CALLBACK (page_view_changed_cb), view);
+ g_signal_connect (page_view, "size-changed", G_CALLBACK (page_view_size_changed_cb), view);
+ g_hash_table_insert (view->priv->page_data, page, page_view);
+ view->priv->need_layout = TRUE;
+ book_view_redraw (view);
+}
+
+
+static void
+set_selected_page (BookView *view, PageView *page)
+{
+ /* Deselect existing page if changed */
+ if (view->priv->selected_page && page != view->priv->selected_page)
+ page_view_set_selected (view->priv->selected_page, FALSE);
+
+ view->priv->selected_page = page;
+ if (!view->priv->selected_page)
+ return;
+
+ /* Select new page if widget has focus */
+ if (!gtk_widget_has_focus (view->priv->widget))
+ page_view_set_selected (view->priv->selected_page, FALSE);
+ else
+ page_view_set_selected (view->priv->selected_page, TRUE);
+}
+
+
+static void
+set_x_offset (BookView *view, gint offset)
+{
+ gtk_adjustment_set_value (view->priv->adjustment, offset);
+}
+
+
+static gint
+get_x_offset (BookView *view)
+{
+ return (gint) gtk_adjustment_get_value (view->priv->adjustment);
+}
+
+
+static void
+show_page (BookView *view, PageView *page)
+{
+ gint left_edge, right_edge;
+
+ if (!page || !gtk_widget_get_visible (view->priv->scroll))
+ return;
+
+ left_edge = page_view_get_x_offset (page);
+ right_edge = page_view_get_x_offset (page) + page_view_get_width (page);
+
+ if (left_edge - get_x_offset (view) < 0)
+ set_x_offset(view, left_edge);
+ else if (right_edge - get_x_offset (view) > view->priv->widget->allocation.width)
+ set_x_offset(view, right_edge - view->priv->widget->allocation.width);
+}
+
+
+static void
+select_page (BookView *view, PageView *page)
+{
+ Page *p = NULL;
+
+ if (view->priv->selected_page == page)
+ return;
+
+ set_selected_page (view, page);
+
+ if (view->priv->need_layout)
+ view->priv->show_selected_page = TRUE;
+ else
+ show_page (view, page);
+
+ if (page)
+ p = page_view_get_page (page);
+ g_signal_emit (view, signals[PAGE_SELECTED], 0, p);
+}
+
+
+static void
+remove_cb (Book *book, Page *page, BookView *view)
+{
+ PageView *new_selection = view->priv->selected_page;
+
+ /* Select previous page or next if removing the selected page */
+ if (page == book_view_get_selected (view)) {
+ new_selection = get_prev_page (view, view->priv->selected_page);
+ if (new_selection == view->priv->selected_page)
+ new_selection = get_next_page (view, view->priv->selected_page);
+ view->priv->selected_page = NULL;
+ }
+
+ g_hash_table_remove (view->priv->page_data, page);
+
+ select_page (view, new_selection);
+
+ view->priv->need_layout = TRUE;
+ book_view_redraw (view);
+}
+
+
+static void
+clear_cb (Book *book, BookView *view)
+{
+ g_hash_table_remove_all (view->priv->page_data);
+ view->priv->selected_page = NULL;
+ g_signal_emit (view, signals[PAGE_SELECTED], 0, NULL);
+ view->priv->need_layout = TRUE;
+ book_view_redraw (view);
+}
+
+
+void
+book_view_set_book (BookView *view, Book *book)
+{
+ gint i, n_pages;
+
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (book != NULL);
+
+ view->priv->book = g_object_ref (book);
+
+ /* Load existing pages */
+ n_pages = book_get_n_pages (view->priv->book);
+ for (i = 0; i < n_pages; i++) {
+ Page *page = book_get_page (book, i);
+ add_cb (book, page, view);
+ }
+
+ book_view_select_page (view, book_get_page (book, 0));
+
+ /* Watch for new pages */
+ g_signal_connect (book, "page-added", G_CALLBACK (add_cb), view);
+ g_signal_connect (book, "page-removed", G_CALLBACK (remove_cb), view);
+ g_signal_connect (book, "cleared", G_CALLBACK (clear_cb), view);
+}
+
+
+Book *
+book_view_get_book (BookView *view)
+{
+ g_return_val_if_fail (view != NULL, NULL);
+
+ return view->priv->book;
+}
+
+
+static gboolean
+configure_cb (GtkWidget *widget, GdkEventConfigure *event, BookView *view)
+{
+ view->priv->need_layout = TRUE;
+ return FALSE;
+}
+
+
+static void
+layout_into (BookView *view, gint width, gint height, gint *book_width, gint *book_height)
+{
+ gint spacing = 12;
+ gint max_width = 0, max_height = 0;
+ gdouble aspect, max_aspect;
+ gint x_offset = 0;
+ gint i, n_pages;
+ gint max_dpi = 0;
+
+ n_pages = book_get_n_pages (view->priv->book);
+
+ /* Get maximum page resolution */
+ for (i = 0; i < n_pages; i++) {
+ Page *page = book_get_page (view->priv->book, i);
+ if (page_get_dpi (page) > max_dpi)
+ max_dpi = page_get_dpi (page);
+ }
+
+ /* Get area required to fit all pages */
+ for (i = 0; i < n_pages; i++) {
+ Page *page = book_get_page (view->priv->book, i);
+ gint w, h;
+
+ w = page_get_width (page);
+ h = page_get_height (page);
+
+ /* Scale to the same DPI */
+ w = (double)w * max_dpi / page_get_dpi (page) + 0.5;
+ h = (double)h * max_dpi / page_get_dpi (page) + 0.5;
+
+ if (w > max_width)
+ max_width = w;
+ if (h > max_height)
+ max_height = h;
+ }
+
+ aspect = (double)width / height;
+ max_aspect = (double)max_width / max_height;
+
+ /* Get total dimensions of all pages */
+ *book_width = 0;
+ *book_height = 0;
+ for (i = 0; i < n_pages; i++) {
+ PageView *page = get_nth_page (view, i);
+ Page *p = page_view_get_page (page);
+ gint h;
+
+ /* NOTE: Using double to avoid overflow for large images */
+ if (max_aspect > aspect) {
+ /* Set width scaled on DPI and maximum width */
+ gint w = (double)page_get_width (p) * max_dpi * width / (page_get_dpi (p) * max_width);
+ page_view_set_width (page, w);
+ }
+ else {
+ /* Set height scaled on DPI and maximum height */
+ gint h = (double)page_get_height (p) * max_dpi * height / (page_get_dpi (p) * max_height);
+ page_view_set_height (page, h);
+ }
+
+ h = page_view_get_height (page);
+ if (h > *book_height)
+ *book_height = h;
+ *book_width += page_view_get_width (page);
+ if (i != 0)
+ *book_width += spacing;
+ }
+
+ for (i = 0; i < n_pages; i++) {
+ PageView *page = get_nth_page (view, i);
+
+ /* Layout pages left to right */
+ page_view_set_x_offset (page, x_offset);
+ x_offset += page_view_get_width (page) + spacing;
+
+ /* Centre page vertically */
+ page_view_set_y_offset (page, (height - page_view_get_height (page)) / 2);
+ }
+}
+
+
+static void
+layout (BookView *view)
+{
+ gint width, height, book_width, book_height;
+ gboolean right_aligned = TRUE;
+
+ if (!view->priv->need_layout)
+ return;
+
+ view->priv->laying_out = TRUE;
+
+ /* If scroll is right aligned then keep that after layout */
+ if (gtk_adjustment_get_value (view->priv->adjustment) < gtk_adjustment_get_upper (view->priv->adjustment) - gtk_adjustment_get_page_size (view->priv->adjustment))
+ right_aligned = FALSE;
+
+ /* Try and fit without scrollbar */
+ width = view->priv->widget->allocation.width;
+ height = view->priv->box->allocation.height;
+ layout_into (view, width, height, &book_width, &book_height);
+
+ /* Relayout with scrollbar */
+ if (book_width > view->priv->widget->allocation.width) {
+ gint max_offset;
+
+ /* Re-layout leaving space for scrollbar */
+ height = view->priv->widget->allocation.height;
+ layout_into (view, width, height, &book_width, &book_height);
+
+ /* Set scrollbar limits */
+ gtk_adjustment_set_lower (view->priv->adjustment, 0);
+ gtk_adjustment_set_upper (view->priv->adjustment, book_width);
+ gtk_adjustment_set_page_size (view->priv->adjustment, view->priv->widget->allocation.width);
+
+ /* Keep right-aligned */
+ max_offset = book_width - view->priv->widget->allocation.width;
+ if (right_aligned || get_x_offset (view) > max_offset)
+ set_x_offset(view, max_offset);
+
+ gtk_widget_show (view->priv->scroll);
+ } else {
+ gint offset;
+ gtk_widget_hide (view->priv->scroll);
+ offset = (book_width - view->priv->widget->allocation.width) / 2;
+ gtk_adjustment_set_lower (view->priv->adjustment, offset);
+ gtk_adjustment_set_upper (view->priv->adjustment, offset);
+ gtk_adjustment_set_page_size (view->priv->adjustment, 0);
+ set_x_offset(view, offset);
+ }
+
+ if (view->priv->show_selected_page)
+ show_page (view, view->priv->selected_page);
+
+ view->priv->need_layout = FALSE;
+ view->priv->show_selected_page = FALSE;
+ view->priv->laying_out = FALSE;
+}
+
+
+static gboolean
+expose_cb (GtkWidget *widget, GdkEventExpose *event, BookView *view)
+{
+ gint i, n_pages;
+ cairo_t *context;
+
+ n_pages = book_get_n_pages (view->priv->book);
+ if (n_pages == 0)
+ return FALSE;
+
+ layout (view);
+
+ context = gdk_cairo_create (widget->window);
+
+ /* Render each page */
+ for (i = 0; i < n_pages; i++) {
+ PageView *page = get_nth_page (view, i);
+ gint left_edge, right_edge;
+
+ left_edge = page_view_get_x_offset (page) - get_x_offset (view);
+ right_edge = page_view_get_x_offset (page) + page_view_get_width (page) - get_x_offset (view);
+
+ /* Page not visible, don't render */
+ if (right_edge < event->area.x || left_edge > event->area.x + event->area.width)
+ continue;
+
+ cairo_save (context);
+ cairo_translate (context, -get_x_offset (view), 0);
+ page_view_render (page, context);
+ cairo_restore (context);
+
+ if (page_view_get_selected (page))
+ gtk_paint_focus (gtk_widget_get_style (view->priv->widget),
+ gtk_widget_get_window (view->priv->widget),
+ GTK_STATE_SELECTED,
+ &event->area,
+ NULL,
+ NULL,
+ page_view_get_x_offset (page) - get_x_offset (view),
+ page_view_get_y_offset (page),
+ page_view_get_width (page),
+ page_view_get_height (page));
+ }
+
+ cairo_destroy (context);
+
+ return FALSE;
+}
+
+
+static PageView *
+get_page_at (BookView *view, gint x, gint y, gint *x_, gint *y_)
+{
+ gint i, n_pages;
+
+ n_pages = book_get_n_pages (view->priv->book);
+ for (i = 0; i < n_pages; i++) {
+ PageView *page;
+ gint left, right, top, bottom;
+
+ page = get_nth_page (view, i);
+ left = page_view_get_x_offset (page);
+ right = left + page_view_get_width (page);
+ top = page_view_get_y_offset (page);
+ bottom = top + page_view_get_height (page);
+ if (x >= left && x <= right && y >= top && y <= bottom)
+ {
+ *x_ = x - left;
+ *y_ = y - top;
+ return page;
+ }
+ }
+
+ return NULL;
+}
+
+
+static gboolean
+button_cb (GtkWidget *widget, GdkEventButton *event, BookView *view)
+{
+ gint x, y;
+
+ layout (view);
+
+ gtk_widget_grab_focus (view->priv->widget);
+
+ if (event->type == GDK_BUTTON_PRESS)
+ select_page (view, get_page_at (view, event->x + get_x_offset (view), event->y, &x, &y));
+
+ if (!view->priv->selected_page)
+ return FALSE;
+
+ /* Modify page */
+ if (event->button == 1) {
+ if (event->type == GDK_BUTTON_PRESS)
+ page_view_button_press (view->priv->selected_page, x, y);
+ else if (event->type == GDK_BUTTON_RELEASE)
+ page_view_button_release (view->priv->selected_page, x, y);
+ else if (event->type == GDK_2BUTTON_PRESS)
+ g_signal_emit (view, signals[SHOW_PAGE], 0, book_view_get_selected (view));
+ }
+
+ /* Show pop-up menu on right click */
+ if (event->button == 3) {
+ gtk_menu_popup (GTK_MENU (view->priv->page_menu), NULL, NULL, NULL, NULL,
+ event->button, event->time);
+ }
+
+ return FALSE;
+}
+
+
+static void
+set_cursor (BookView *view, gint cursor)
+{
+ GdkCursor *c;
+
+ if (view->priv->cursor == cursor)
+ return;
+ view->priv->cursor = cursor;
+
+ c = gdk_cursor_new (cursor);
+ gdk_window_set_cursor (gtk_widget_get_window (view->priv->widget), c);
+ gdk_cursor_destroy (c);
+}
+
+
+static gboolean
+motion_cb (GtkWidget *widget, GdkEventMotion *event, BookView *view)
+{
+ gint x, y;
+ gint cursor = GDK_ARROW;
+
+ /* Dragging */
+ if (view->priv->selected_page && (event->state & GDK_BUTTON1_MASK) != 0) {
+ x = event->x + get_x_offset (view) - page_view_get_x_offset (view->priv->selected_page);
+ y = event->y - page_view_get_y_offset (view->priv->selected_page);
+ page_view_motion (view->priv->selected_page, x, y);
+ cursor = page_view_get_cursor (view->priv->selected_page);
+ }
+ else {
+ PageView *over_page;
+ over_page = get_page_at (view, event->x + get_x_offset (view), event->y, &x, &y);
+ if (over_page) {
+ page_view_motion (over_page, x, y);
+ cursor = page_view_get_cursor (over_page);
+ }
+ }
+
+ set_cursor (view, cursor);
+
+ return FALSE;
+}
+
+
+static gboolean
+key_cb (GtkWidget *widget, GdkEventKey *event, BookView *view)
+{
+ switch (event->keyval) {
+ case GDK_Home:
+ book_view_select_page (view, book_get_page (view->priv->book, 0));
+ return TRUE;
+ case GDK_Left:
+ select_page (view, get_prev_page (view, view->priv->selected_page));
+ return TRUE;
+ case GDK_Right:
+ select_page (view, get_next_page (view, view->priv->selected_page));
+ return TRUE;
+ case GDK_End:
+ book_view_select_page (view, book_get_page (view->priv->book, book_get_n_pages (view->priv->book) - 1));
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+}
+
+
+static gboolean
+focus_cb (GtkWidget *widget, GdkEventFocus *event, BookView *view)
+{
+ set_selected_page (view, view->priv->selected_page);
+ return FALSE;
+}
+
+
+static void
+scroll_cb (GtkAdjustment *adjustment, BookView *view)
+{
+ if (!view->priv->laying_out)
+ book_view_redraw (view);
+}
+
+
+void
+book_view_set_widgets (BookView *view, GtkWidget *box, GtkWidget *area, GtkWidget *scroll, GtkWidget *page_menu)
+{
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (view->priv->widget == NULL);
+
+ view->priv->widget = area;
+ view->priv->box = box;
+ view->priv->scroll = scroll;
+ view->priv->adjustment = gtk_range_get_adjustment (GTK_RANGE (scroll));
+ view->priv->page_menu = page_menu;
+
+ g_signal_connect (area, "configure-event", G_CALLBACK (configure_cb), view);
+ g_signal_connect (area, "expose-event", G_CALLBACK (expose_cb), view);
+ g_signal_connect (area, "motion-notify-event", G_CALLBACK (motion_cb), view);
+ g_signal_connect (area, "key-press-event", G_CALLBACK (key_cb), view);
+ g_signal_connect (area, "button-press-event", G_CALLBACK (button_cb), view);
+ g_signal_connect (area, "button-release-event", G_CALLBACK (button_cb), view);
+ g_signal_connect_after (area, "focus-in-event", G_CALLBACK (focus_cb), view);
+ g_signal_connect_after (area, "focus-out-event", G_CALLBACK (focus_cb), view);
+ g_signal_connect (view->priv->adjustment, "value-changed", G_CALLBACK (scroll_cb), view);
+}
+
+
+void
+book_view_redraw (BookView *view)
+{
+ g_return_if_fail (view != NULL);
+ gtk_widget_queue_draw (view->priv->widget);
+}
+
+
+void
+book_view_select_page (BookView *view, Page *page)
+{
+ g_return_if_fail (view != NULL);
+
+ if (book_view_get_selected (view) == page)
+ return;
+
+ if (page)
+ select_page (view, g_hash_table_lookup (view->priv->page_data, page));
+ else
+ select_page (view, NULL);
+}
+
+
+void
+book_view_select_next_page (BookView *view)
+{
+ g_return_if_fail (view != NULL);
+ select_page (view, get_next_page (view, view->priv->selected_page));
+}
+
+
+void
+book_view_select_prev_page (BookView *view)
+{
+ g_return_if_fail (view != NULL);
+ select_page (view, get_prev_page (view, view->priv->selected_page));
+}
+
+
+Page *
+book_view_get_selected (BookView *view)
+{
+ g_return_val_if_fail (view != NULL, NULL);
+
+ if (view->priv->selected_page)
+ return page_view_get_page (view->priv->selected_page);
+ else
+ return NULL;
+}
+
+
+static void
+book_view_finalize (GObject *object)
+{
+ BookView *view = BOOK_VIEW (object);
+ g_object_unref (view->priv->book);
+ view->priv->book = NULL;
+ g_hash_table_unref (view->priv->page_data);
+ view->priv->page_data = NULL;
+ G_OBJECT_CLASS (book_view_parent_class)->finalize (object);
+}
+
+
+static void
+book_view_class_init (BookViewClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = book_view_finalize;
+
+ signals[PAGE_SELECTED] =
+ g_signal_new ("page-selected",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BookViewClass, page_selected),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[SHOW_PAGE] =
+ g_signal_new ("show-page",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BookViewClass, show_page),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ g_type_class_add_private (klass, sizeof (BookViewPrivate));
+}
+
+
+static void
+book_view_init (BookView *view)
+{
+ view->priv = G_TYPE_INSTANCE_GET_PRIVATE (view, BOOK_VIEW_TYPE, BookViewPrivate);
+ view->priv->need_layout = TRUE;
+ view->priv->page_data = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ NULL, (GDestroyNotify) g_object_unref);
+ view->priv->cursor = GDK_ARROW;
+}
diff --git a/src/book-view.h b/src/book-view.h
new file mode 100644
index 0000000..acc3899
--- /dev/null
+++ b/src/book-view.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#ifndef _BOOK_VIEW_H_
+#define _BOOK_VIEW_H_
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <cairo.h>
+#include "book.h"
+
+G_BEGIN_DECLS
+
+#define BOOK_VIEW_TYPE (book_view_get_type ())
+#define BOOK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOOK_VIEW_TYPE, BookView))
+
+
+typedef struct BookViewPrivate BookViewPrivate;
+
+typedef struct
+{
+ GObject parent_instance;
+ BookViewPrivate *priv;
+} BookView;
+
+typedef struct
+{
+ GObjectClass parent_class;
+
+ void (*page_selected) (BookView *view, Page *page);
+ void (*show_page) (BookView *view, Page *page);
+} BookViewClass;
+
+
+GType book_view_get_type (void);
+
+BookView *book_view_new (void);
+
+// FIXME: Book view should extend GtkVBox
+void book_view_set_widgets (BookView *view, GtkWidget *box, GtkWidget *area, GtkWidget *scroll, GtkWidget *page_menu);
+
+// FIXME: Should be part of book_view_new
+void book_view_set_book (BookView *view, Book *book);
+
+void book_view_redraw (BookView *view);
+
+Book *book_view_get_book (BookView *view);
+
+void book_view_select_page (BookView *view, Page *page);
+
+void book_view_select_next_page (BookView *view);
+
+void book_view_select_prev_page (BookView *view);
+
+Page *book_view_get_selected (BookView *view);
+
+#endif /* _BOOK_VIEW_H_ */
diff --git a/src/book.c b/src/book.c
new file mode 100644
index 0000000..6bf4d0a
--- /dev/null
+++ b/src/book.c
@@ -0,0 +1,466 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <string.h>
+#include <math.h>
+#include <gdk/gdk.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <cairo/cairo-pdf.h>
+#include <cairo/cairo-ps.h>
+#include <unistd.h> // TEMP: Needed for close() in get_temporary_filename()
+
+#include "book.h"
+
+
+enum {
+ PAGE_ADDED,
+ PAGE_REMOVED,
+ CLEARED,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+struct BookPrivate
+{
+ GList *pages;
+};
+
+G_DEFINE_TYPE (Book, book, G_TYPE_OBJECT);
+
+
+Book *
+book_new ()
+{
+ return g_object_new (BOOK_TYPE, NULL);
+}
+
+
+void
+book_clear (Book *book)
+{
+ GList *iter;
+ for (iter = book->priv->pages; iter; iter = iter->next) {
+ Page *page = iter->data;
+ g_object_unref (page);
+ }
+ g_list_free (book->priv->pages);
+ book->priv->pages = NULL;
+ g_signal_emit (book, signals[CLEARED], 0);
+}
+
+
+Page *
+book_append_page (Book *book, gint width, gint height, gint dpi, Orientation orientation)
+{
+ Page *page;
+
+ page = page_new ();
+ page_setup (page, width, height, dpi, orientation);
+
+ book->priv->pages = g_list_append (book->priv->pages, page);
+
+ g_signal_emit (book, signals[PAGE_ADDED], 0, page);
+
+ return page;
+}
+
+
+void
+book_delete_page (Book *book, Page *page)
+{
+ g_signal_emit (book, signals[PAGE_REMOVED], 0, page);
+
+ book->priv->pages = g_list_remove (book->priv->pages, page);
+ g_object_unref (page);
+}
+
+
+gint
+book_get_n_pages (Book *book)
+{
+ return g_list_length (book->priv->pages);
+}
+
+
+Page *
+book_get_page (Book *book, gint page_number)
+{
+ if (page_number < 0)
+ page_number = g_list_length (book->priv->pages) + page_number;
+ return g_list_nth_data (book->priv->pages, page_number);
+}
+
+
+static GFile *
+make_indexed_file (const gchar *uri, gint i)
+{
+ gchar *basename, *suffix, *indexed_uri;
+ GFile *file;
+
+ if (i == 0)
+ return g_file_new_for_uri (uri);
+
+ basename = g_path_get_basename (uri);
+ suffix = g_strrstr (basename, ".");
+
+ if (suffix)
+ indexed_uri = g_strdup_printf ("%.*s-%d%s", (int) (strlen (uri) - strlen (suffix)), uri, i, suffix);
+ else
+ indexed_uri = g_strdup_printf ("%s-%d", uri, i);
+ g_free (basename);
+
+ file = g_file_new_for_uri (indexed_uri);
+ g_free (indexed_uri);
+
+ return file;
+}
+
+
+static gboolean
+book_save_multi_file (Book *book, const gchar *type, GFile *file, GError **error)
+{
+ GList *iter;
+ gboolean result = TRUE;
+ gint i;
+ gchar *uri;
+
+ uri = g_file_get_uri (file);
+ for (iter = book->priv->pages, i = 0; iter && result; iter = iter->next, i++) {
+ Page *page = iter->data;
+ GFile *file;
+
+ file = make_indexed_file (uri, i);
+ result = page_save (page, type, file, error);
+ g_object_unref (file);
+ }
+ g_free (uri);
+
+ return result;
+}
+
+
+static void
+save_ps_pdf_surface (cairo_surface_t *surface, GdkPixbuf *image, gdouble dpi)
+{
+ cairo_t *context;
+
+ context = cairo_create (surface);
+
+ cairo_scale (context, 72.0 / dpi, 72.0 / dpi);
+ gdk_cairo_set_source_pixbuf (context, image, 0, 0);
+ cairo_pattern_set_filter (cairo_get_source (context), CAIRO_FILTER_BEST);
+ cairo_paint (context);
+
+ cairo_destroy (context);
+}
+
+
+static cairo_status_t
+write_cairo_data (GFileOutputStream *stream, unsigned char *data, unsigned int length)
+{
+ gboolean result;
+ GError *error = NULL;
+
+ result = g_output_stream_write_all (G_OUTPUT_STREAM (stream), data, length, NULL, NULL, &error);
+
+ if (error) {
+ g_warning ("Error writing data: %s", error->message);
+ g_error_free (error);
+ }
+
+ return result ? CAIRO_STATUS_SUCCESS : CAIRO_STATUS_WRITE_ERROR;
+}
+
+
+static gboolean
+book_save_ps (Book *book, GFile *file, GError **error)
+{
+ GFileOutputStream *stream;
+ GList *iter;
+ cairo_surface_t *surface;
+
+ stream = g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error);
+ if (!stream)
+ return FALSE;
+
+ surface = cairo_ps_surface_create_for_stream ((cairo_write_func_t) write_cairo_data,
+ stream, 0, 0);
+
+ for (iter = book->priv->pages; iter; iter = iter->next) {
+ Page *page = iter->data;
+ double width, height;
+ GdkPixbuf *image;
+
+ image = page_get_cropped_image (page);
+
+ width = gdk_pixbuf_get_width (image) * 72.0 / page_get_dpi (page);
+ height = gdk_pixbuf_get_height (image) * 72.0 / page_get_dpi (page);
+ cairo_ps_surface_set_size (surface, width, height);
+ save_ps_pdf_surface (surface, image, page_get_dpi (page));
+ cairo_surface_show_page (surface);
+
+ g_object_unref (image);
+ }
+
+ cairo_surface_destroy (surface);
+
+ g_object_unref (stream);
+
+ return TRUE;
+}
+
+
+// TEMP: Copied from simple-scan.c
+static GFile *
+get_temporary_file (const gchar *prefix, const gchar *extension)
+{
+ gint fd;
+ GFile *file;
+ gchar *filename, *path;
+ GError *error = NULL;
+
+ /* NOTE: I'm not sure if this is a 100% safe strategy to use g_file_open_tmp(), close and
+ * use the filename but it appears to work in practise */
+
+ filename = g_strdup_printf ("%s-XXXXXX.%s", prefix, extension);
+ fd = g_file_open_tmp (filename, &path, &error);
+ g_free (filename);
+ if (fd < 0) {
+ g_warning ("Error saving email attachment: %s", error->message);
+ g_clear_error (&error);
+ return NULL;
+ }
+ close (fd);
+
+ file = g_file_new_for_path (path);
+ g_free (path);
+
+ return file;
+}
+
+
+static goffset
+get_file_size (GFile *file)
+{
+ GFileInfo *info;
+ goffset size = 0;
+
+ info = g_file_query_info (file,
+ G_FILE_ATTRIBUTE_STANDARD_SIZE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL,
+ NULL);
+ if (info) {
+ size = g_file_info_get_size (info);
+ g_object_unref (info);
+ }
+
+ return size;
+}
+
+
+static gboolean
+book_save_pdf_with_imagemagick (Book *book, GFile *file, GError **error)
+{
+ GList *iter;
+ GString *command_line;
+ gboolean result = TRUE;
+ gint exit_status = 0;
+ GFile *output_file = NULL;
+ GList *link, *temporary_files = NULL;
+
+ /* ImageMagick command to create a PDF */
+ command_line = g_string_new ("convert -adjoin");
+
+ /* Save each page to a file */
+ for (iter = book->priv->pages; iter && result; iter = iter->next) {
+ Page *page = iter->data;
+ GFile *jpeg_file, *tiff_file;
+ gchar *path;
+ gint jpeg_size, tiff_size;
+
+ jpeg_file = get_temporary_file ("simple-scan", "jpg");
+ result = page_save (page, "jpeg", jpeg_file, error);
+ jpeg_size = get_file_size (jpeg_file);
+ temporary_files = g_list_append (temporary_files, jpeg_file);
+
+ tiff_file = get_temporary_file ("simple-scan", "tiff");
+ result = page_save (page, "tiff", tiff_file, error);
+ tiff_size = get_file_size (tiff_file);
+ temporary_files = g_list_append (temporary_files, tiff_file);
+
+ /* Use the smallest file */
+ if (jpeg_size < tiff_size)
+ path = g_file_get_path (jpeg_file);
+ else
+ path = g_file_get_path (tiff_file);
+ g_string_append_printf (command_line, " %s", path);
+ g_free (path);
+ }
+
+ /* Use ImageMagick command to create a PDF */
+ if (result) {
+ gchar *path, *stdout_text = NULL, *stderr_text = NULL;
+
+ output_file = get_temporary_file ("simple-scan", "pdf");
+ path = g_file_get_path (output_file);
+ g_string_append_printf (command_line, " %s", path);
+ g_free (path);
+
+ result = g_spawn_command_line_sync (command_line->str, &stdout_text, &stderr_text, &exit_status, error);
+ if (result && exit_status != 0) {
+ g_warning ("ImageMagick returned error code %d, command line was: %s", exit_status, command_line->str);
+ g_warning ("stdout: %s", stdout_text);
+ g_warning ("stderr: %s", stderr_text);
+ result = FALSE;
+ }
+ g_free (stdout_text);
+ g_free (stderr_text);
+ }
+
+ /* Move to target URI */
+ if (result) {
+ GFile *dest;
+ result = g_file_move (output_file, file, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, error);
+ g_object_unref (dest);
+ }
+
+ /* Delete page files */
+ for (link = temporary_files; link; link = link->next) {
+ GFile *f = link->data;
+
+ g_file_delete (f, NULL, NULL);
+ g_object_unref (f);
+ }
+ g_list_free (temporary_files);
+
+ if (output_file)
+ g_object_unref (output_file);
+ g_string_free (command_line, TRUE);
+
+ return result;
+}
+
+
+static gboolean
+book_save_pdf (Book *book, GFile *file, GError **error)
+{
+ GFileOutputStream *stream;
+ GList *iter;
+ cairo_surface_t *surface;
+ gchar *imagemagick_executable;
+
+ /* Use ImageMagick if it is available as then we can compress the images */
+ imagemagick_executable = g_find_program_in_path ("convert");
+ if (imagemagick_executable) {
+ g_free (imagemagick_executable);
+ return book_save_pdf_with_imagemagick (book, file, error);
+ }
+
+ stream = g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error);
+ if (!stream)
+ return FALSE;
+
+ surface = cairo_pdf_surface_create_for_stream ((cairo_write_func_t) write_cairo_data,
+ stream, 0, 0);
+
+ for (iter = book->priv->pages; iter; iter = iter->next) {
+ Page *page = iter->data;
+ double width, height;
+ GdkPixbuf *image;
+
+ image = page_get_cropped_image (page);
+
+ width = gdk_pixbuf_get_width (image) * 72.0 / page_get_dpi (page);
+ height = gdk_pixbuf_get_height (image) * 72.0 / page_get_dpi (page);
+ cairo_pdf_surface_set_size (surface, width, height);
+ save_ps_pdf_surface (surface, image, page_get_dpi (page));
+ cairo_surface_show_page (surface);
+
+ g_object_unref (image);
+ }
+
+ cairo_surface_destroy (surface);
+
+ g_object_unref (stream);
+
+ return TRUE;
+}
+
+
+gboolean
+book_save (Book *book, const gchar *type, GFile *file, GError **error)
+{
+ if (strcmp (type, "jpeg") == 0)
+ return book_save_multi_file (book, "jpeg", file, error);
+ else if (strcmp (type, "png") == 0)
+ return book_save_multi_file (book, "png", file, error);
+ else if (strcmp (type, "tiff") == 0)
+ return book_save_multi_file (book, "tiff", file, error);
+ else if (strcmp (type, "ps") == 0)
+ return book_save_ps (book, file, error);
+ else if (strcmp (type, "pdf") == 0)
+ return book_save_pdf (book, file, error);
+ else
+ return FALSE;
+}
+
+
+static void
+book_finalize (GObject *object)
+{
+ Book *book = BOOK (object);
+ book_clear (book);
+ G_OBJECT_CLASS (book_parent_class)->finalize (object);
+}
+
+
+static void
+book_class_init (BookClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = book_finalize;
+
+ signals[PAGE_ADDED] =
+ g_signal_new ("page-added",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BookClass, page_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[PAGE_REMOVED] =
+ g_signal_new ("page-removed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BookClass, page_removed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[CLEARED] =
+ g_signal_new ("cleared",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BookClass, cleared),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_type_class_add_private (klass, sizeof (BookPrivate));
+}
+
+
+static void
+book_init (Book *book)
+{
+ book->priv = G_TYPE_INSTANCE_GET_PRIVATE (book, BOOK_TYPE, BookPrivate);
+}
diff --git a/src/book.h b/src/book.h
new file mode 100644
index 0000000..4e9e05e
--- /dev/null
+++ b/src/book.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#ifndef _BOOK_H_
+#define _BOOK_H_
+
+#include <glib-object.h>
+#include <gio/gio.h>
+#include <cairo.h>
+#include "page.h"
+
+G_BEGIN_DECLS
+
+#define BOOK_TYPE (book_get_type ())
+#define BOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BOOK_TYPE, Book))
+
+
+typedef struct BookPrivate BookPrivate;
+
+typedef struct
+{
+ GObject parent_instance;
+ BookPrivate *priv;
+} Book;
+
+typedef struct
+{
+ GObjectClass parent_class;
+
+ void (*page_added) (Book *book, Page *page);
+ void (*page_removed) (Book *book, Page *page);
+ void (*cleared) (Book *book);
+} BookClass;
+
+
+GType book_get_type (void);
+
+Book *book_new (void);
+
+void book_clear (Book *book);
+
+Page *book_append_page (Book *book, gint width, gint height, gint dpi, Orientation orientation);
+
+void book_delete_page (Book *book, Page *page);
+
+gint book_get_n_pages (Book *book);
+
+Page *book_get_page (Book *book, gint page_number);
+
+gboolean book_save (Book *book, const gchar *type, GFile *file, GError **error);
+
+#endif /* _BOOK_H_ */
diff --git a/src/page-view.c b/src/page-view.c
new file mode 100644
index 0000000..2c37fc2
--- /dev/null
+++ b/src/page-view.c
@@ -0,0 +1,1170 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <math.h>
+
+#include "page-view.h"
+
+enum {
+ CHANGED,
+ SIZE_CHANGED,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+enum {
+ PROP_0,
+ PROP_PAGE
+};
+
+typedef enum
+{
+ CROP_NONE = 0,
+ CROP_MIDDLE,
+ CROP_TOP,
+ CROP_BOTTOM,
+ CROP_LEFT,
+ CROP_RIGHT,
+ CROP_TOP_LEFT,
+ CROP_TOP_RIGHT,
+ CROP_BOTTOM_LEFT,
+ CROP_BOTTOM_RIGHT
+} CropLocation;
+
+struct PageViewPrivate
+{
+ /* Page being rendered */
+ Page *page;
+
+ /* Image to render at current resolution */
+ GdkPixbuf *image;
+
+ /* Border around image */
+ gboolean selected;
+ gint border_width;
+
+ /* True if image needs to be regenerated */
+ gboolean update_image;
+
+ /* Next scan line to render */
+ gint scan_line;
+
+ /* Dimensions of image to generate */
+ gint width, height;
+
+ /* Location to place this page */
+ gint x, y;
+
+ CropLocation crop_location;
+ gdouble selected_crop_px, selected_crop_py;
+ gint selected_crop_x, selected_crop_y;
+ gint selected_crop_w, selected_crop_h;
+
+ /* Cursor over this page */
+ gint cursor;
+
+ gint animate_n_segments, animate_segment;
+ guint animate_timeout;
+};
+
+G_DEFINE_TYPE (PageView, page_view, G_TYPE_OBJECT);
+
+
+PageView *
+page_view_new (Page *page)
+{
+ return g_object_new (PAGE_VIEW_TYPE, "page", page, NULL);
+}
+
+
+Page *
+page_view_get_page (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, NULL);
+ return view->priv->page;
+}
+
+
+void
+page_view_set_selected (PageView *view, gboolean selected)
+{
+ g_return_if_fail (view != NULL);
+ if ((view->priv->selected && selected) || (!view->priv->selected && !selected))
+ return;
+ view->priv->selected = selected;
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+gboolean page_view_get_selected (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, FALSE);
+ return view->priv->selected;
+}
+
+
+void
+page_view_set_x_offset (PageView *view, gint offset)
+{
+ g_return_if_fail (view != NULL);
+ view->priv->x = offset;
+}
+
+
+void
+page_view_set_y_offset (PageView *view, gint offset)
+{
+ g_return_if_fail (view != NULL);
+ view->priv->y = offset;
+}
+
+
+gint
+page_view_get_x_offset (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, 0);
+ return view->priv->x;
+}
+
+
+gint
+page_view_get_y_offset (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, 0);
+ return view->priv->y;
+}
+
+
+static guchar *
+get_pixel (guchar *input, gint rowstride, gint n_channels, gint x, gint y)
+{
+ return input + rowstride * y + x * n_channels;
+}
+
+
+static void
+set_pixel (guchar *input, gint rowstride, gint n_channels,
+ double l, double r, double t, double b, guchar *pixel)
+{
+ gint x, y;
+ gint L, R, T, B;
+ double scale, red, green, blue;
+
+ /* Decimation:
+ *
+ * Target pixel is defined by (t,l)-(b,r)
+ * It touches 16 pixels in original image
+ * It completely covers 4 pixels in original image (T,L)-(B,R)
+ * Add covered pixels and add weighted partially covered pixels.
+ * Divide by total area.
+ *
+ * l L R r
+ * +-----+-----+-----+-----+
+ * | | | | |
+ * t | +--+-----+-----+---+ |
+ * T +--+--+-----+-----+---+-+
+ * | | | | | | |
+ * | | | | | | |
+ * +--+--+-----+-----+---+-+
+ * | | | | | | |
+ * | | | | | | |
+ * B +--+--+-----+-----+---+-+
+ * | | | | | | |
+ * b | +--+-----+-----+---+ |
+ * +-----+-----+-----+-----+
+ *
+ *
+ * Interpolation:
+ *
+ * l r
+ * +-----+-----+-----+-----+
+ * | | | | |
+ * | | | | |
+ * +-----+-----+-----+-----+
+ * t | | +-+--+ | |
+ * | | | | | | |
+ * +-----+---+-+--+--+-----+
+ * b | | +-+--+ | |
+ * | | | | |
+ * +-----+-----+-----+-----+
+ * | | | | |
+ * | | | | |
+ * +-----+-----+-----+-----+
+ *
+ * Same again, just no completely covered pixels.
+ */
+
+ L = l;
+ if (L != l)
+ L++;
+ R = r;
+ T = t;
+ if (T != t)
+ T++;
+ B = b;
+
+ red = green = blue = 0.0;
+
+ /* Target can fit inside one source pixel
+ * +-----+
+ * | |
+ * | +--+| +-----+-----+ +-----+ +-----+ +-----+
+ * +-+--++ or | +-++ | or | +-+ | or | +--+| or | +--+
+ * | +--+| | +-++ | | +-+ | | | || | | |
+ * | | +-----+-----+ +-----+ +-+--++ +--+--+
+ * +-----+
+ */
+ if ((r - l <= 1.0 && (gint)r == (gint)l) || (b - t <= 1.0 && (gint)b == (gint)t)) {
+ /* Inside */
+ if ((gint)l == (gint)r || (gint)t == (gint)b) {
+ guchar *p = get_pixel (input, rowstride, n_channels, (gint)l, (gint)t);
+ pixel[0] = p[0];
+ pixel[1] = p[1];
+ pixel[2] = p[2];
+ return;
+ }
+
+ /* Stradling horizontal edge */
+ if (L > R) {
+ guchar *p = get_pixel (input, rowstride, n_channels, R, T-1);
+ red += p[0] * (r-l)*(T-t);
+ green += p[1] * (r-l)*(T-t);
+ blue += p[2] * (r-l)*(T-t);
+ for (y = T; y < B; y++) {
+ guchar *p = get_pixel (input, rowstride, n_channels, R, y);
+ red += p[0] * (r-l);
+ green += p[1] * (r-l);
+ blue += p[2] * (r-l);
+ }
+ p = get_pixel (input, rowstride, n_channels, R, B);
+ red += p[0] * (r-l)*(b-B);
+ green += p[1] * (r-l)*(b-B);
+ blue += p[2] * (r-l)*(b-B);
+ }
+ /* Stradling vertical edge */
+ else {
+ guchar *p = get_pixel (input, rowstride, n_channels, L - 1, B);
+ red += p[0] * (b-t)*(L-l);
+ green += p[1] * (b-t)*(L-l);
+ blue += p[2] * (b-t)*(L-l);
+ for (x = L; x < R; x++) {
+ guchar *p = get_pixel (input, rowstride, n_channels, x, B);
+ red += p[0] * (b-t);
+ green += p[1] * (b-t);
+ blue += p[2] * (b-t);
+ }
+ p = get_pixel (input, rowstride, n_channels, R, B);
+ red += p[0] * (b-t)*(r-R);
+ green += p[1] * (b-t)*(r-R);
+ blue += p[2] * (b-t)*(r-R);
+ }
+
+ scale = 1.0 / ((r - l) * (b - t));
+ pixel[0] = (guchar)(red * scale + 0.5);
+ pixel[1] = (guchar)(green * scale + 0.5);
+ pixel[2] = (guchar)(blue * scale + 0.5);
+ return;
+ }
+
+ /* Add the middle pixels */
+ for (x = L; x < R; x++) {
+ for (y = T; y < B; y++) {
+ guchar *p = get_pixel (input, rowstride, n_channels, x, y);
+ red += p[0];
+ green += p[1];
+ blue += p[2];
+ }
+ }
+
+ /* Add the weighted top and bottom pixels */
+ for (x = L; x < R; x++) {
+ if (t != T) {
+ guchar *p = get_pixel (input, rowstride, n_channels, x, T - 1);
+ red += p[0] * (T - t);
+ green += p[1] * (T - t);
+ blue += p[2] * (T - t);
+ }
+
+ if (b != B) {
+ guchar *p = get_pixel (input, rowstride, n_channels, x, B);
+ red += p[0] * (b - B);
+ green += p[1] * (b - B);
+ blue += p[2] * (b - B);
+ }
+ }
+
+ /* Add the left and right pixels */
+ for (y = T; y < B; y++) {
+ if (l != L) {
+ guchar *p = get_pixel (input, rowstride, n_channels, L - 1, y);
+ red += p[0] * (L - l);
+ green += p[1] * (L - l);
+ blue += p[2] * (L - l);
+ }
+
+ if (r != R) {
+ guchar *p = get_pixel (input, rowstride, n_channels, R, y);
+ red += p[0] * (r - R);
+ green += p[1] * (r - R);
+ blue += p[2] * (r - R);
+ }
+ }
+
+ /* Add the corner pixels */
+ if (l != L && t != T) {
+ guchar *p = get_pixel (input, rowstride, n_channels, L - 1, T - 1);
+ red += p[0] * (L - l)*(T - t);
+ green += p[1] * (L - l)*(T - t);
+ blue += p[2] * (L - l)*(T - t);
+ }
+ if (r != R && t != T) {
+ guchar *p = get_pixel (input, rowstride, n_channels, R, T - 1);
+ red += p[0] * (r - R)*(T - t);
+ green += p[1] * (r - R)*(T - t);
+ blue += p[2] * (r - R)*(T - t);
+ }
+ if (r != R && b != B) {
+ guchar *p = get_pixel (input, rowstride, n_channels, R, B);
+ red += p[0] * (r - R)*(b - B);
+ green += p[1] * (r - R)*(b - B);
+ blue += p[2] * (r - R)*(b - B);
+ }
+ if (l != L && b != B) {
+ guchar *p = get_pixel (input, rowstride, n_channels, L - 1, B);
+ red += p[0] * (L - l)*(b - B);
+ green += p[1] * (L - l)*(b - B);
+ blue += p[2] * (L - l)*(b - B);
+ }
+
+ /* Scale pixel values and clamp in range [0, 255] */
+ scale = 1.0 / ((r - l) * (b - t));
+ pixel[0] = (guchar)(red * scale + 0.5);
+ pixel[1] = (guchar)(green * scale + 0.5);
+ pixel[2] = (guchar)(blue * scale + 0.5);
+}
+
+
+static void
+update_preview (GdkPixbuf *image,
+ GdkPixbuf **output_image, gint output_width, gint output_height,
+ Orientation orientation, gint old_scan_line, gint scan_line)
+{
+ guchar *input, *output;
+ gint input_width, input_height;
+ gint input_rowstride, input_n_channels;
+ gint output_rowstride, output_n_channels;
+ gint x, y;
+ gint L, R, T, B;
+
+ input = gdk_pixbuf_get_pixels (image);
+ input_width = gdk_pixbuf_get_width (image);
+ input_height = gdk_pixbuf_get_height (image);
+ input_rowstride = gdk_pixbuf_get_rowstride (image);
+ input_n_channels = gdk_pixbuf_get_n_channels (image);
+
+ /* Create new image if one does not exist or has changed size */
+ if (!*output_image ||
+ gdk_pixbuf_get_width (*output_image) != output_width ||
+ gdk_pixbuf_get_height (*output_image) != output_height) {
+ if (*output_image)
+ g_object_unref (*output_image);
+ *output_image = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
+ FALSE,
+ 8,
+ output_width,
+ output_height);
+
+ /* Update entire image */
+ L = 0;
+ R = output_width - 1;
+ T = 0;
+ B = output_height - 1;
+ }
+ /* Otherwise only update changed area */
+ else {
+ switch (orientation) {
+ case TOP_TO_BOTTOM:
+ L = 0;
+ R = output_width - 1;
+ T = (gint)((double)old_scan_line * output_height / input_height);
+ B = (gint)((double)scan_line * output_height / input_height + 0.5);
+ break;
+ case LEFT_TO_RIGHT:
+ L = (gint)((double)old_scan_line * output_width / input_width);
+ R = (gint)((double)scan_line * output_width / input_width + 0.5);
+ T = 0;
+ B = output_height - 1;
+ break;
+ case BOTTOM_TO_TOP:
+ L = 0;
+ R = output_width - 1;
+ T = (gint)((double)(input_height - scan_line) * output_height / input_height);
+ B = (gint)((double)(input_height - old_scan_line) * output_height / input_height + 0.5);
+ break;
+ case RIGHT_TO_LEFT:
+ L = (gint)((double)(input_width - scan_line) * output_width / input_width);
+ R = (gint)((double)(input_width - old_scan_line) * output_width / input_width + 0.5);
+ T = 0;
+ B = output_height - 1;
+ break;
+ default:
+ L = R = B = T = 0;
+ break;
+ }
+ }
+
+ /* FIXME: There's an off by one error in there somewhere... */
+ if (R >= output_width)
+ R = output_width - 1;
+ if (B >= output_height)
+ B = output_height - 1;
+
+ g_return_if_fail (L >= 0);
+ g_return_if_fail (R < output_width);
+ g_return_if_fail (T >= 0);
+ g_return_if_fail (B < output_height);
+ g_return_if_fail (*output_image != NULL);
+
+ output = gdk_pixbuf_get_pixels (*output_image);
+ output_rowstride = gdk_pixbuf_get_rowstride (*output_image);
+ output_n_channels = gdk_pixbuf_get_n_channels (*output_image);
+
+ /* Update changed area */
+ for (x = L; x <= R; x++) {
+ double l, r;
+
+ l = (double)x * input_width / output_width;
+ r = (double)(x + 1) * input_width / output_width;
+
+ for (y = T; y <= B; y++) {
+ double t, b;
+
+ t = (double)y * input_height / output_height;
+ b = (double)(y + 1) * input_height / output_height;
+
+ set_pixel (input, input_rowstride, input_n_channels,
+ l, r, t, b,
+ get_pixel (output, output_rowstride, output_n_channels, x, y));
+ }
+ }
+}
+
+
+static gint
+get_preview_width (PageView *view)
+{
+ return view->priv->width - view->priv->border_width * 2;
+}
+
+
+static gint
+get_preview_height (PageView *view)
+{
+ return view->priv->height - view->priv->border_width * 2;
+}
+
+
+static void
+update_page_view (PageView *view)
+{
+ GdkPixbuf *image;
+ gint old_scan_line, scan_line;
+
+ if (!view->priv->update_image)
+ return;
+
+ image = page_get_image (view->priv->page);
+ old_scan_line = view->priv->scan_line;
+ scan_line = page_get_scan_line (view->priv->page);
+
+ update_preview (image,
+ &view->priv->image,
+ get_preview_width (view),
+ get_preview_height (view),
+ page_get_orientation (view->priv->page), old_scan_line, scan_line);
+ g_object_unref (image);
+
+ view->priv->update_image = FALSE;
+ view->priv->scan_line = scan_line;
+}
+
+
+static gint
+page_to_screen_x (PageView *view, gint x)
+{
+ return (double) x * get_preview_width (view) / page_get_width (view->priv->page) + 0.5;
+}
+
+
+static gint
+page_to_screen_y (PageView *view, gint y)
+{
+ return (double) y * get_preview_height (view) / page_get_height (view->priv->page) + 0.5;
+}
+
+
+static gint
+screen_to_page_x (PageView *view, gint x)
+{
+ return (double) x * page_get_width (view->priv->page) / get_preview_width (view) + 0.5;
+}
+
+
+static gint
+screen_to_page_y (PageView *view, gint y)
+{
+ return (double) y * page_get_height (view->priv->page) / get_preview_height (view) + 0.5;
+}
+
+
+static CropLocation
+get_crop_location (PageView *view, gint x, gint y)
+{
+ gint cx, cy, cw, ch;
+ gint dx, dy, dw, dh;
+ gint ix, iy;
+ gint crop_border = 20;
+ gchar *name;
+
+ if (!page_has_crop (view->priv->page))
+ return 0;
+
+ page_get_crop (view->priv->page, &cx, &cy, &cw, &ch);
+ dx = page_to_screen_x (view, cx);
+ dy = page_to_screen_y (view, cy);
+ dw = page_to_screen_x (view, cw);
+ dh = page_to_screen_y (view, ch);
+ ix = x - dx;
+ iy = y - dy;
+
+ if (ix < 0 || ix > dw || iy < 0 || iy > dh)
+ return CROP_NONE;
+
+ /* Can't resize named crops */
+ name = page_get_named_crop (view->priv->page);
+ if (name != NULL) {
+ g_free (name);
+ return CROP_MIDDLE;
+ }
+
+ /* Adjust borders so can select */
+ if (dw < crop_border * 3)
+ crop_border = dw / 3;
+ if (dh < crop_border * 3)
+ crop_border = dh / 3;
+
+ /* Top left */
+ if (ix < crop_border && iy < crop_border)
+ return CROP_TOP_LEFT;
+ /* Top right */
+ if (ix > dw - crop_border && iy < crop_border)
+ return CROP_TOP_RIGHT;
+ /* Bottom left */
+ if (ix < crop_border && iy > dh - crop_border)
+ return CROP_BOTTOM_LEFT;
+ /* Bottom right */
+ if (ix > dw - crop_border && iy > dh - crop_border)
+ return CROP_BOTTOM_RIGHT;
+
+ /* Left */
+ if (ix < crop_border)
+ return CROP_LEFT;
+ /* Right */
+ if (ix > dw - crop_border)
+ return CROP_RIGHT;
+ /* Top */
+ if (iy < crop_border)
+ return CROP_TOP;
+ /* Bottom */
+ if (iy > dh - crop_border)
+ return CROP_BOTTOM;
+
+ /* In the middle */
+ return CROP_MIDDLE;
+}
+
+
+void
+page_view_button_press (PageView *view, gint x, gint y)
+{
+ CropLocation location;
+
+ g_return_if_fail (view != NULL);
+
+ /* See if selecting crop */
+ location = get_crop_location (view, x, y);;
+ if (location != CROP_NONE) {
+ view->priv->crop_location = location;
+ view->priv->selected_crop_px = x;
+ view->priv->selected_crop_py = y;
+ page_get_crop (view->priv->page,
+ &view->priv->selected_crop_x,
+ &view->priv->selected_crop_y,
+ &view->priv->selected_crop_w,
+ &view->priv->selected_crop_h);
+ }
+}
+
+
+void
+page_view_motion (PageView *view, gint x, gint y)
+{
+ gint pw, ph;
+ gint cx, cy, cw, ch, dx, dy;
+ gint new_x, new_y, new_w, new_h;
+ CropLocation location;
+ gint cursor;
+ gint min_size;
+
+ min_size = screen_to_page_x (view, 15);
+
+ g_return_if_fail (view != NULL);
+
+ location = get_crop_location (view, x, y);
+ switch (location) {
+ case CROP_MIDDLE:
+ cursor = GDK_HAND1;
+ break;
+ case CROP_TOP:
+ cursor = GDK_TOP_SIDE;
+ break;
+ case CROP_BOTTOM:
+ cursor = GDK_BOTTOM_SIDE;
+ break;
+ case CROP_LEFT:
+ cursor = GDK_LEFT_SIDE;
+ break;
+ case CROP_RIGHT:
+ cursor = GDK_RIGHT_SIDE;
+ break;
+ case CROP_TOP_LEFT:
+ cursor = GDK_TOP_LEFT_CORNER;
+ break;
+ case CROP_TOP_RIGHT:
+ cursor = GDK_TOP_RIGHT_CORNER;
+ break;
+ case CROP_BOTTOM_LEFT:
+ cursor = GDK_BOTTOM_LEFT_CORNER;
+ break;
+ case CROP_BOTTOM_RIGHT:
+ cursor = GDK_BOTTOM_RIGHT_CORNER;
+ break;
+ default:
+ cursor = GDK_ARROW;
+ break;
+ }
+
+ if (view->priv->crop_location == CROP_NONE) {
+ view->priv->cursor = cursor;
+ return;
+ }
+
+ /* Move the crop */
+ pw = page_get_width (view->priv->page);
+ ph = page_get_height (view->priv->page);
+ page_get_crop (view->priv->page, &cx, &cy, &cw, &ch);
+
+ dx = screen_to_page_x (view, x - view->priv->selected_crop_px);
+ dy = screen_to_page_y (view, y - view->priv->selected_crop_py);
+
+ new_x = view->priv->selected_crop_x;
+ new_y = view->priv->selected_crop_y;
+ new_w = view->priv->selected_crop_w;
+ new_h = view->priv->selected_crop_h;
+
+ /* Limit motion to remain within page and minimum crop size */
+ if (view->priv->crop_location == CROP_TOP_LEFT ||
+ view->priv->crop_location == CROP_LEFT ||
+ view->priv->crop_location == CROP_BOTTOM_LEFT) {
+ if (dx > new_w - min_size)
+ dx = new_w - min_size;
+ if (new_x + dx < 0)
+ dx = -new_x;
+ }
+ if (view->priv->crop_location == CROP_TOP_LEFT ||
+ view->priv->crop_location == CROP_TOP ||
+ view->priv->crop_location == CROP_TOP_RIGHT) {
+ if (dy > new_h - min_size)
+ dy = new_h - min_size;
+ if (new_y + dy < 0)
+ dy = -new_y;
+ }
+
+ if (view->priv->crop_location == CROP_TOP_RIGHT ||
+ view->priv->crop_location == CROP_RIGHT ||
+ view->priv->crop_location == CROP_BOTTOM_RIGHT) {
+ if (dx < min_size - new_w)
+ dx = min_size - new_w;
+ if (new_x + new_w + dx > pw)
+ dx = pw - new_x - new_w;
+ }
+ if (view->priv->crop_location == CROP_BOTTOM_LEFT ||
+ view->priv->crop_location == CROP_BOTTOM ||
+ view->priv->crop_location == CROP_BOTTOM_RIGHT) {
+ if (dy < min_size - new_h)
+ dy = min_size - new_h;
+ if (new_y + new_h + dy > ph)
+ dy = ph - new_y - new_h;
+ }
+ if (view->priv->crop_location == CROP_MIDDLE) {
+ if (new_x + dx + new_w > pw)
+ dx = pw - new_x - new_w;
+ if (new_x + dx < 0)
+ dx = -new_x;
+ if (new_y + dy + new_h > ph)
+ dy = ph - new_y - new_h;
+ if (new_y + dy < 0)
+ dy = -new_y;
+ }
+
+ /* Move crop */
+ if (view->priv->crop_location == CROP_MIDDLE) {
+ new_x += dx;
+ new_y += dy;
+ }
+ if (view->priv->crop_location == CROP_TOP_LEFT ||
+ view->priv->crop_location == CROP_LEFT ||
+ view->priv->crop_location == CROP_BOTTOM_LEFT)
+ {
+ new_x += dx;
+ new_w -= dx;
+ }
+ if (view->priv->crop_location == CROP_TOP_LEFT ||
+ view->priv->crop_location == CROP_TOP ||
+ view->priv->crop_location == CROP_TOP_RIGHT) {
+ new_y += dy;
+ new_h -= dy;
+ }
+
+ if (view->priv->crop_location == CROP_TOP_RIGHT ||
+ view->priv->crop_location == CROP_RIGHT ||
+ view->priv->crop_location == CROP_BOTTOM_RIGHT) {
+ new_w += dx;
+ }
+ if (view->priv->crop_location == CROP_BOTTOM_LEFT ||
+ view->priv->crop_location == CROP_BOTTOM ||
+ view->priv->crop_location == CROP_BOTTOM_RIGHT) {
+ new_h += dy;
+ }
+
+ page_move_crop (view->priv->page, new_x, new_y);
+
+ /* If reshaped crop, must be a custom crop */
+ if (new_w != cw || new_h != ch)
+ page_set_custom_crop (view->priv->page, new_w, new_h);
+}
+
+
+void
+page_view_button_release (PageView *view, gint x, gint y)
+{
+ g_return_if_fail (view != NULL);
+
+ /* Complete crop */
+ view->priv->crop_location = CROP_NONE;
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+gint
+page_view_get_cursor (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, 0);
+ return view->priv->cursor;
+}
+
+
+static gboolean
+animation_cb (PageView *view)
+{
+ view->priv->animate_segment = (view->priv->animate_segment + 1) % view->priv->animate_n_segments;
+ g_signal_emit (view, signals[CHANGED], 0);
+ return TRUE;
+}
+
+
+static void
+update_animation (PageView *view)
+{
+ gboolean animate, is_animating;
+
+ animate = page_is_scanning (view->priv->page) && !page_has_data (view->priv->page);
+ is_animating = view->priv->animate_timeout != 0;
+ if (animate == is_animating)
+ return;
+
+ if (animate) {
+ view->priv->animate_segment = 0;
+ if (view->priv->animate_timeout == 0)
+ view->priv->animate_timeout = g_timeout_add (150, (GSourceFunc) animation_cb, view);
+ }
+ else
+ {
+ if (view->priv->animate_timeout != 0)
+ g_source_remove (view->priv->animate_timeout);
+ view->priv->animate_timeout = 0;
+ }
+}
+
+
+void
+page_view_render (PageView *view, cairo_t *context)
+{
+ gint width, height;
+
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (context != NULL);
+
+ update_animation (view);
+ update_page_view (view);
+
+ width = get_preview_width (view);
+ height = get_preview_height (view);
+
+ cairo_set_line_width (context, 1);
+ cairo_translate (context, view->priv->x, view->priv->y);
+
+ /* Draw page border */
+ cairo_set_source_rgb (context, 0, 0, 0);
+ cairo_set_line_width (context, view->priv->border_width);
+ cairo_rectangle (context,
+ (double)view->priv->border_width / 2,
+ (double)view->priv->border_width / 2,
+ view->priv->width - view->priv->border_width,
+ view->priv->height - view->priv->border_width);
+ cairo_stroke (context);
+
+ /* Draw image */
+ cairo_translate (context, view->priv->border_width, view->priv->border_width);
+ if (view->priv->image) {
+ gdk_cairo_set_source_pixbuf (context, view->priv->image, 0, 0);
+ cairo_paint (context);
+ }
+ else {
+ cairo_scale (context,
+ (double) get_preview_width (view) / page_get_width (view->priv->page),
+ (double) get_preview_height (view) / page_get_height (view->priv->page));
+ gdk_cairo_set_source_pixbuf (context, page_get_image (view->priv->page), 0, 0);
+
+ cairo_paint (context);
+ }
+
+ /* Draw throbber */
+ if (page_is_scanning (view->priv->page) && !page_has_data (view->priv->page)) {
+ gdouble inner_radius, outer_radius, x, y, arc, offset = 0.0;
+ gint i;
+
+ if (width > height)
+ outer_radius = 0.15 * width;
+ else
+ outer_radius = 0.15 * height;
+ arc = M_PI / view->priv->animate_n_segments;
+
+ /* Space circles */
+ x = outer_radius * sin (arc);
+ y = outer_radius * (cos (arc) - 1.0);
+ inner_radius = 0.6 * sqrt (x*x + y*y);
+
+ for (i = 0; i < view->priv->animate_n_segments; i++, offset += arc * 2) {
+ x = width / 2 + outer_radius * sin (offset);
+ y = height / 2 - outer_radius * cos (offset);
+ cairo_arc (context, x, y, inner_radius, 0, 2 * M_PI);
+
+ if (i == view->priv->animate_segment) {
+ cairo_set_source_rgb (context, 0.75, 0.75, 0.75);
+ cairo_fill_preserve (context);
+ }
+
+ cairo_set_source_rgb (context, 0.5, 0.5, 0.5);
+ cairo_stroke (context);
+ }
+ }
+
+ /* Draw scan line */
+ if (page_is_scanning (view->priv->page) && page_get_scan_line (view->priv->page) > 0) {
+ gint scan_line;
+ double s;
+ double x1, y1, x2, y2;
+
+ scan_line = page_get_scan_line (view->priv->page);
+
+ switch (page_get_orientation (view->priv->page)) {
+ case TOP_TO_BOTTOM:
+ s = page_to_screen_y (view, scan_line);
+ x1 = 0; y1 = s + 0.5;
+ x2 = width; y2 = s + 0.5;
+ break;
+ case BOTTOM_TO_TOP:
+ s = page_to_screen_y (view, scan_line);
+ x1 = 0; y1 = height - s + 0.5;
+ x2 = width; y2 = height - s + 0.5;
+ break;
+ case LEFT_TO_RIGHT:
+ s = page_to_screen_x (view, scan_line);
+ x1 = s + 0.5; y1 = 0;
+ x2 = s + 0.5; y2 = height;
+ break;
+ case RIGHT_TO_LEFT:
+ s = page_to_screen_x (view, scan_line);
+ x1 = width - s + 0.5; y1 = 0;
+ x2 = width - s + 0.5; y2 = height;
+ break;
+ default:
+ x1 = y1 = x2 = y2 = 0;
+ break;
+ }
+
+ cairo_move_to (context, x1, y1);
+ cairo_line_to (context, x2, y2);
+ cairo_set_source_rgb (context, 1.0, 0.0, 0.0);
+ cairo_stroke (context);
+ }
+
+ /* Draw crop */
+ if (page_has_crop (view->priv->page)) {
+ gint x, y, crop_width, crop_height;
+ gdouble dx, dy, dw, dh;
+
+ page_get_crop (view->priv->page, &x, &y, &crop_width, &crop_height);
+
+ dx = page_to_screen_x (view, x);
+ dy = page_to_screen_y (view, y);
+ dw = page_to_screen_x (view, crop_width);
+ dh = page_to_screen_y (view, crop_height);
+
+ /* Shade out cropped area */
+ cairo_rectangle (context,
+ 0, 0,
+ width, height);
+ cairo_new_sub_path (context);
+ cairo_rectangle (context, dx, dy, dw, dh);
+ cairo_set_fill_rule (context, CAIRO_FILL_RULE_EVEN_ODD);
+ cairo_set_source_rgba (context, 0.25, 0.25, 0.25, 0.2);
+ cairo_fill (context);
+
+ /* Show new edge */
+ cairo_rectangle (context, dx - 1.5, dy - 1.5, dw + 3, dh + 3);
+ cairo_set_source_rgb (context, 1.0, 1.0, 1.0);
+ cairo_stroke (context);
+ cairo_rectangle (context, dx - 0.5, dy - 0.5, dw + 1, dh + 1);
+ cairo_set_source_rgb (context, 0.0, 0.0, 0.0);
+ cairo_stroke (context);
+ }
+}
+
+
+void
+page_view_set_width (PageView *view, gint width)
+{
+ gint height;
+
+ g_return_if_fail (view != NULL);
+
+ // FIXME: Automatically update when get updated image
+ height = (double)width * page_get_height (view->priv->page) / page_get_width (view->priv->page);
+ if (view->priv->width == width && view->priv->height == height)
+ return;
+
+ view->priv->width = width;
+ view->priv->height = height;
+
+ /* Regenerate image */
+ view->priv->update_image = TRUE;
+
+ g_signal_emit (view, signals[SIZE_CHANGED], 0);
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+void
+page_view_set_height (PageView *view, gint height)
+{
+ gint width;
+
+ g_return_if_fail (view != NULL);
+
+ // FIXME: Automatically update when get updated image
+ width = (double)height * page_get_width (view->priv->page) / page_get_height (view->priv->page);
+ if (view->priv->width == width && view->priv->height == height)
+ return;
+
+ view->priv->width = width;
+ view->priv->height = height;
+
+ /* Regenerate image */
+ view->priv->update_image = TRUE;
+
+ g_signal_emit (view, signals[SIZE_CHANGED], 0);
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+gint
+page_view_get_width (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, 0);
+ return view->priv->width;
+}
+
+
+gint
+page_view_get_height (PageView *view)
+{
+ g_return_val_if_fail (view != NULL, 0);
+ return view->priv->height;
+}
+
+
+static void
+page_image_changed_cb (Page *p, PageView *view)
+{
+ /* Regenerate image */
+ view->priv->update_image = TRUE;
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+static void
+page_size_changed_cb (Page *p, PageView *view)
+{
+ /* Regenerate image */
+ view->priv->update_image = TRUE;
+ g_signal_emit (view, signals[SIZE_CHANGED], 0);
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+static void
+page_overlay_changed_cb (Page *p, PageView *view)
+{
+ g_signal_emit (view, signals[CHANGED], 0);
+}
+
+
+static void
+page_view_set_page (PageView *view, Page *page)
+{
+ g_return_if_fail (view != NULL);
+ g_return_if_fail (view->priv->page == NULL);
+
+ view->priv->page = g_object_ref (page);
+ g_signal_connect (view->priv->page, "image-changed", G_CALLBACK (page_image_changed_cb), view);
+ g_signal_connect (view->priv->page, "size-changed", G_CALLBACK (page_size_changed_cb), view);
+ g_signal_connect (view->priv->page, "crop-changed", G_CALLBACK (page_overlay_changed_cb), view);
+ g_signal_connect (view->priv->page, "scan-line-changed", G_CALLBACK (page_overlay_changed_cb), view);
+}
+
+
+static void
+page_view_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ PageView *self;
+
+ self = PAGE_VIEW (object);
+
+ switch (prop_id) {
+ case PROP_PAGE:
+ page_view_set_page (self, g_value_get_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static void
+page_view_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ PageView *self;
+
+ self = PAGE_VIEW (object);
+
+ switch (prop_id) {
+ case PROP_PAGE:
+ g_value_set_object (value, self->priv->page);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static void
+page_view_finalize (GObject *object)
+{
+ PageView *view = PAGE_VIEW (object);
+ g_object_unref (view->priv->page);
+ view->priv->page = NULL;
+ if (view->priv->image)
+ g_object_unref (view->priv->image);
+ view->priv->image = NULL;
+ if (view->priv->animate_timeout != 0)
+ g_source_remove (view->priv->animate_timeout);
+ view->priv->animate_timeout = 0;
+ G_OBJECT_CLASS (page_view_parent_class)->finalize (object);
+}
+
+
+static void
+page_view_class_init (PageViewClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->get_property = page_view_get_property;
+ object_class->set_property = page_view_set_property;
+ object_class->finalize = page_view_finalize;
+
+ signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageViewClass, changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[SIZE_CHANGED] =
+ g_signal_new ("size-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageViewClass, size_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_type_class_add_private (klass, sizeof (PageViewPrivate));
+
+ g_object_class_install_property (object_class,
+ PROP_PAGE,
+ g_param_spec_object ("page",
+ "page",
+ "Page being rendered",
+ PAGE_TYPE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+}
+
+
+static void
+page_view_init (PageView *view)
+{
+ view->priv = G_TYPE_INSTANCE_GET_PRIVATE (view, PAGE_VIEW_TYPE, PageViewPrivate);
+ view->priv->update_image = TRUE;
+ view->priv->cursor = GDK_ARROW;
+ view->priv->border_width = 1;
+ view->priv->animate_n_segments = 7;
+}
diff --git a/src/page-view.h b/src/page-view.h
new file mode 100644
index 0000000..dd64197
--- /dev/null
+++ b/src/page-view.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#ifndef _PAGE_VIEW_H_
+#define _PAGE_VIEW_H_
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <cairo.h>
+#include "page.h"
+
+G_BEGIN_DECLS
+
+#define PAGE_VIEW_TYPE (page_view_get_type ())
+#define PAGE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PAGE_VIEW_TYPE, PageView))
+
+
+typedef struct PageViewPrivate PageViewPrivate;
+
+typedef struct
+{
+ GObject parent_instance;
+ PageViewPrivate *priv;
+} PageView;
+
+typedef struct
+{
+ GObjectClass parent_class;
+
+ void (*changed) (PageView *view);
+ void (*size_changed) (PageView *view);
+} PageViewClass;
+
+
+GType page_view_get_type (void);
+
+PageView *page_view_new (Page *page);
+
+Page *page_view_get_page (PageView *view);
+
+void page_view_set_selected (PageView *view, gboolean selected);
+
+gboolean page_view_get_selected (PageView *view);
+
+void page_view_set_x_offset (PageView *view, gint offset);
+
+void page_view_set_y_offset (PageView *view, gint offset);
+
+gint page_view_get_x_offset (PageView *view);
+
+gint page_view_get_y_offset (PageView *view);
+
+void page_view_set_width (PageView *view, gint width);
+
+void page_view_set_height (PageView *view, gint height);
+
+gint page_view_get_width (PageView *view);
+
+gint page_view_get_height (PageView *view);
+
+void page_view_button_press (PageView *view, gint x, gint y);
+
+void page_view_motion (PageView *view, gint x, gint y);
+
+void page_view_button_release (PageView *view, gint x, gint y);
+
+gint page_view_get_cursor (PageView *view);
+
+void page_view_render (PageView *view, cairo_t *context);
+
+#endif /* _PAGE_VIEW_H_ */
diff --git a/src/page.c b/src/page.c
new file mode 100644
index 0000000..5888a46
--- /dev/null
+++ b/src/page.c
@@ -0,0 +1,951 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <string.h>
+#include "page.h"
+
+
+enum {
+ IMAGE_CHANGED,
+ SIZE_CHANGED,
+ SCAN_LINE_CHANGED,
+ ORIENTATION_CHANGED,
+ CROP_CHANGED,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+struct PagePrivate
+{
+ /* Resolution of page */
+ gint dpi;
+
+ /* Number of rows in this page or -1 if currently unknown */
+ gint rows;
+
+ /* Color profile */
+ gchar *color_profile;
+
+ /* Scanned image data */
+ GdkPixbuf *image;
+
+ /* Page is getting data */
+ gboolean scanning;
+
+ /* TRUE if have some page data */
+ gboolean has_data;
+
+ /* Expected next scan row */
+ gint scan_line;
+
+ /* Rotation of scanned data */
+ Orientation orientation;
+
+ /* Crop */
+ gboolean has_crop;
+ gchar *crop_name;
+ gint crop_x, crop_y, crop_width, crop_height;
+};
+
+G_DEFINE_TYPE (Page, page, G_TYPE_OBJECT);
+
+
+Page *
+page_new ()
+{
+ return g_object_new (PAGE_TYPE, NULL);
+}
+
+
+void
+page_setup (Page *page, gint width, gint height, gint dpi, Orientation orientation)
+{
+ page->priv->orientation = orientation;
+ page->priv->dpi = dpi;
+ if (orientation == LEFT_TO_RIGHT || orientation == RIGHT_TO_LEFT)
+ page->priv->rows = width;
+ else
+ page->priv->rows = height;
+ page->priv->image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE,
+ 8,
+ width,
+ height);
+ g_return_if_fail (page->priv->image != NULL);
+ gdk_pixbuf_fill (page->priv->image, 0xFFFFFFFF);
+}
+
+
+void
+page_set_scan_area (Page *page, gint width, gint rows, gint dpi)
+{
+ gint height;
+
+ g_return_if_fail (page != NULL);
+
+ /* Variable height, try 50% of the width for now */
+ if (rows < 0)
+ height = width / 2;
+ else
+ height = rows;
+
+ /* Rotate page */
+ if (page->priv->orientation == LEFT_TO_RIGHT || page->priv->orientation == RIGHT_TO_LEFT) {
+ gint t;
+ t = width;
+ width = height;
+ height = t;
+ }
+
+ page->priv->rows = rows;
+ page->priv->dpi = dpi;
+
+ /* Create a white page */
+ /* NOTE: Pixbuf only supports 8 bit RGB images */
+ if (page->priv->image)
+ g_object_unref (page->priv->image);
+ page->priv->image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE,
+ 8,
+ width,
+ height);
+ g_return_if_fail (page->priv->image != NULL);
+
+ gdk_pixbuf_fill (page->priv->image, 0xFFFFFFFF);
+ g_signal_emit (page, signals[SIZE_CHANGED], 0);
+ g_signal_emit (page, signals[IMAGE_CHANGED], 0);
+}
+
+
+void
+page_start (Page *page)
+{
+ g_return_if_fail (page != NULL);
+
+ page->priv->scanning = TRUE;
+ g_signal_emit (page, signals[SCAN_LINE_CHANGED], 0);
+}
+
+
+gboolean page_is_scanning (Page *page)
+{
+ g_return_val_if_fail (page != NULL, FALSE);
+
+ return page->priv->scanning;
+}
+
+
+static gint
+get_sample (guchar *data, gint depth, gint index)
+{
+ gint i, offset, value, n_bits;
+
+ /* Optimise if using 8 bit samples */
+ if (depth == 8)
+ return data[index];
+
+ /* Bit offset for this sample */
+ offset = depth * index;
+
+ /* Get the remaining bits in the octet this sample starts in */
+ i = offset / 8;
+ n_bits = 8 - offset % 8;
+ value = data[i] & (0xFF >> (8 - n_bits));
+
+ /* Add additional octets until get enough bits */
+ while (n_bits < depth) {
+ value = value << 8 | data[i++];
+ n_bits += 8;
+ }
+
+ /* Trim remaining bits off */
+ if (n_bits > depth)
+ value >>= n_bits - depth;
+
+ return value;
+}
+
+
+gboolean page_has_data (Page *page)
+{
+ g_return_val_if_fail (page != NULL, FALSE);
+ return page->priv->has_data;
+}
+
+
+gint page_get_scan_line (Page *page)
+{
+ g_return_val_if_fail (page != NULL, -1);
+ return page->priv->scan_line;
+}
+
+
+static void
+set_pixel (ScanLine *line, gint n, gint x, guchar *pixel)
+{
+ gint sample;
+ guchar *data;
+
+ data = line->data + line->data_length * n;
+
+ switch (line->format) {
+ case LINE_RGB:
+ pixel[0] = get_sample (data, line->depth, x*3) * 0xFF / ((1 << line->depth) - 1);
+ pixel[1] = get_sample (data, line->depth, x*3+1) * 0xFF / ((1 << line->depth) - 1);
+ pixel[2] = get_sample (data, line->depth, x*3+2) * 0xFF / ((1 << line->depth) - 1);
+ break;
+ case LINE_GRAY:
+ /* Bitmap, 0 = white, 1 = black */
+ sample = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1);
+ if (line->depth == 1)
+ sample = sample ? 0x00 : 0xFF;
+
+ pixel[0] = pixel[1] = pixel[2] = sample;
+ break;
+ case LINE_RED:
+ pixel[0] = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1);
+ break;
+ case LINE_GREEN:
+ pixel[1] = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1);
+ break;
+ case LINE_BLUE:
+ pixel[2] = get_sample (data, line->depth, x) * 0xFF / ((1 << line->depth) - 1);
+ break;
+ }
+}
+
+
+static void
+parse_line (Page *page, ScanLine *line, gint n, gboolean *size_changed)
+{
+ guchar *pixels;
+ gint line_number;
+ gint i, x = 0, y = 0, x_step = 0, y_step = 0;
+ gint rowstride, n_channels;
+
+ line_number = line->number + n;
+
+ /* Extend image if necessary */
+ while (line_number >= page_get_scan_height (page)) {
+ GdkPixbuf *image;
+ gint height, width, new_width, new_height;
+
+ /* Extend image */
+ new_width = width = gdk_pixbuf_get_width (page->priv->image);
+ new_height = height = gdk_pixbuf_get_height (page->priv->image);
+ if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP) {
+ new_height = height + width / 2;
+ g_debug("Extending image height from %d pixels to %d pixels", height, new_height);
+ }
+ else {
+ new_width = width + height / 2;
+ g_debug("Extending image width from %d pixels to %d pixels", width, new_width);
+ }
+ image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE,
+ 8, new_width, new_height);
+
+ /* Copy old data */
+ gdk_pixbuf_fill (page->priv->image, 0xFFFFFFFF);
+ if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == LEFT_TO_RIGHT)
+ gdk_pixbuf_copy_area (page->priv->image, 0, 0, width, height,
+ image, 0, 0);
+ else
+ gdk_pixbuf_copy_area (page->priv->image, 0, 0, width, height,
+ image, new_width - width, new_height - height);
+
+ g_object_unref (page->priv->image);
+ page->priv->image = image;
+
+ *size_changed = TRUE;
+ }
+
+ switch (page->priv->orientation) {
+ case TOP_TO_BOTTOM:
+ x = 0;
+ y = line_number;
+ x_step = 1;
+ y_step = 0;
+ break;
+ case BOTTOM_TO_TOP:
+ x = page_get_width (page) - 1;
+ y = page_get_height (page) - line_number - 1;
+ x_step = -1;
+ y_step = 0;
+ break;
+ case LEFT_TO_RIGHT:
+ x = line_number;
+ y = page_get_height (page) - 1;
+ x_step = 0;
+ y_step = -1;
+ break;
+ case RIGHT_TO_LEFT:
+ x = page_get_width (page) - line_number - 1;
+ y = 0;
+ x_step = 0;
+ y_step = 1;
+ break;
+ }
+ pixels = gdk_pixbuf_get_pixels (page->priv->image);
+ rowstride = gdk_pixbuf_get_rowstride (page->priv->image);
+ n_channels = gdk_pixbuf_get_n_channels (page->priv->image);
+ for (i = 0; i < line->width; i++) {
+ guchar *pixel;
+
+ pixel = pixels + y * rowstride + x * n_channels;
+ set_pixel (line, n, i, pixel);
+ x += x_step;
+ y += y_step;
+ }
+
+ page->priv->scan_line = line_number;
+}
+
+
+void
+page_parse_scan_line (Page *page, ScanLine *line)
+{
+ gint i;
+ gboolean size_changed = FALSE;
+
+ g_return_if_fail (page != NULL);
+
+ for (i = 0; i < line->n_lines; i++)
+ parse_line (page, line, i, &size_changed);
+
+ page->priv->has_data = TRUE;
+
+ if (size_changed)
+ g_signal_emit (page, signals[SIZE_CHANGED], 0);
+ g_signal_emit (page, signals[SCAN_LINE_CHANGED], 0);
+ g_signal_emit (page, signals[IMAGE_CHANGED], 0);
+}
+
+
+void
+page_finish (Page *page)
+{
+ gboolean size_changed = FALSE;
+
+ g_return_if_fail (page != NULL);
+
+ /* Trim page */
+ if (page->priv->rows < 0 &&
+ page->priv->scan_line != gdk_pixbuf_get_height (page->priv->image)) {
+ GdkPixbuf *image;
+ gint width, height, new_width, new_height;
+
+ new_width = width = gdk_pixbuf_get_width (page->priv->image);
+ new_height = height = gdk_pixbuf_get_height (page->priv->image);
+ if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP) {
+ new_height = page->priv->scan_line;
+ g_debug("Trimming image height from %d pixels to %d pixels", height, new_height);
+ }
+ else {
+ new_width = page->priv->scan_line;
+ g_debug("Trimming image width from %d pixels to %d pixels", width, new_width);
+ }
+ image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE,
+ 8,
+ new_width, new_height);
+
+ /* Copy old data */
+ if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == LEFT_TO_RIGHT)
+ gdk_pixbuf_copy_area (page->priv->image, 0, 0, width, height,
+ image, 0, 0);
+ else
+ gdk_pixbuf_copy_area (page->priv->image, width - new_width, height - new_height, width, height,
+ image, 0, 0);
+
+ g_object_unref (page->priv->image);
+ page->priv->image = image;
+ size_changed = TRUE;
+ }
+ page->priv->scanning = FALSE;
+
+ if (size_changed)
+ g_signal_emit (page, signals[SIZE_CHANGED], 0);
+ g_signal_emit (page, signals[SCAN_LINE_CHANGED], 0);
+}
+
+
+Orientation
+page_get_orientation (Page *page)
+{
+ g_return_val_if_fail (page != NULL, TOP_TO_BOTTOM);
+
+ return page->priv->orientation;
+}
+
+
+void
+page_set_orientation (Page *page, Orientation orientation)
+{
+ gint left_steps, t;
+ GdkPixbuf *image;
+ gboolean size_changed = FALSE;
+ gint width, height;
+
+ g_return_if_fail (page != NULL);
+
+ if (page->priv->orientation == orientation)
+ return;
+
+ /* Work out how many times it has been rotated to the left */
+ left_steps = orientation - page->priv->orientation;
+ if (left_steps < 0)
+ left_steps += 4;
+
+ width = page_get_width (page);
+ height = page_get_height (page);
+
+ /* Rotate image */
+ if (left_steps == 1)
+ image = gdk_pixbuf_rotate_simple (page->priv->image, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE);
+ else if (left_steps == 2)
+ image = gdk_pixbuf_rotate_simple (page->priv->image, GDK_PIXBUF_ROTATE_UPSIDEDOWN);
+ else
+ image = gdk_pixbuf_rotate_simple (page->priv->image, GDK_PIXBUF_ROTATE_CLOCKWISE);
+ g_object_unref (page->priv->image);
+ page->priv->image = image;
+ if (left_steps != 2)
+ size_changed = TRUE;
+
+ /* Rotate crop */
+ if (page->priv->has_crop) {
+ switch (left_steps) {
+ /* 90 degrees counter-clockwise */
+ case 1:
+ t = page->priv->crop_x;
+ page->priv->crop_x = page->priv->crop_y;
+ page->priv->crop_y = width - (t + page->priv->crop_width);
+ t = page->priv->crop_width;
+ page->priv->crop_width = page->priv->crop_height;
+ page->priv->crop_height = t;
+ break;
+ /* 180 degrees */
+ case 2:
+ page->priv->crop_x = width - (page->priv->crop_x + page->priv->crop_width);
+ page->priv->crop_y = width - (page->priv->crop_y + page->priv->crop_height);
+ break;
+ /* 90 degrees clockwise */
+ case 3:
+ t = page->priv->crop_y;
+ page->priv->crop_y = page->priv->crop_x;
+ page->priv->crop_x = height - (t + page->priv->crop_height);
+ t = page->priv->crop_width;
+ page->priv->crop_width = page->priv->crop_height;
+ page->priv->crop_height = t;
+ break;
+ }
+ }
+
+ page->priv->orientation = orientation;
+ if (size_changed)
+ g_signal_emit (page, signals[SIZE_CHANGED], 0);
+ g_signal_emit (page, signals[IMAGE_CHANGED], 0);
+ g_signal_emit (page, signals[ORIENTATION_CHANGED], 0);
+ g_signal_emit (page, signals[CROP_CHANGED], 0);
+}
+
+
+void
+page_rotate_left (Page *page)
+{
+ Orientation orientation;
+
+ g_return_if_fail (page != NULL);
+
+ orientation = page_get_orientation (page);
+ if (orientation == RIGHT_TO_LEFT)
+ orientation = TOP_TO_BOTTOM;
+ else
+ orientation++;
+ page_set_orientation (page, orientation);
+}
+
+
+void
+page_rotate_right (Page *page)
+{
+ Orientation orientation;
+
+ orientation = page_get_orientation (page);
+ if (orientation == TOP_TO_BOTTOM)
+ orientation = RIGHT_TO_LEFT;
+ else
+ orientation--;
+ page_set_orientation (page, orientation);
+}
+
+
+gint
+page_get_dpi (Page *page)
+{
+ g_return_val_if_fail (page != NULL, 0);
+
+ return page->priv->dpi;
+}
+
+
+gboolean
+page_is_landscape (Page *page)
+{
+ return page_get_width (page) > page_get_height (page);
+}
+
+
+gint
+page_get_width (Page *page)
+{
+ g_return_val_if_fail (page != NULL, 0);
+ return gdk_pixbuf_get_width (page->priv->image);
+}
+
+
+gint
+page_get_height (Page *page)
+{
+ g_return_val_if_fail (page != NULL, 0);
+ return gdk_pixbuf_get_height (page->priv->image);
+}
+
+
+gint
+page_get_scan_width (Page *page)
+{
+ g_return_val_if_fail (page != NULL, 0);
+
+ if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP)
+ return gdk_pixbuf_get_width (page->priv->image);
+ else
+ return gdk_pixbuf_get_height (page->priv->image);
+}
+
+
+gint
+page_get_scan_height (Page *page)
+{
+ g_return_val_if_fail (page != NULL, 0);
+
+ if (page->priv->orientation == TOP_TO_BOTTOM || page->priv->orientation == BOTTOM_TO_TOP)
+ return gdk_pixbuf_get_height (page->priv->image);
+ else
+ return gdk_pixbuf_get_width (page->priv->image);
+}
+
+
+void page_set_color_profile (Page *page, const gchar *color_profile)
+{
+ g_free (page->priv->color_profile);
+ page->priv->color_profile = g_strdup (color_profile);
+}
+
+
+const gchar *page_get_color_profile (Page *page)
+{
+ return page->priv->color_profile;
+}
+
+
+void
+page_set_no_crop (Page *page)
+{
+ g_return_if_fail (page != NULL);
+
+ if (!page->priv->has_crop)
+ return;
+ page->priv->has_crop = FALSE;
+ g_signal_emit (page, signals[CROP_CHANGED], 0);
+}
+
+
+void
+page_set_custom_crop (Page *page, gint width, gint height)
+{
+ //gint pw, ph;
+
+ g_return_if_fail (page != NULL);
+ g_return_if_fail (width >= 1);
+ g_return_if_fail (height >= 1);
+
+ if (!page->priv->crop_name &&
+ page->priv->has_crop &&
+ page->priv->crop_width == width &&
+ page->priv->crop_height == height)
+ return;
+ g_free (page->priv->crop_name);
+ page->priv->crop_name = NULL;
+ page->priv->has_crop = TRUE;
+
+ page->priv->crop_width = width;
+ page->priv->crop_height = height;
+
+ /*pw = page_get_width (page);
+ ph = page_get_height (page);
+ if (page->priv->crop_width < pw)
+ page->priv->crop_x = (pw - page->priv->crop_width) / 2;
+ else
+ page->priv->crop_x = 0;
+ if (page->priv->crop_height < ph)
+ page->priv->crop_y = (ph - page->priv->crop_height) / 2;
+ else
+ page->priv->crop_y = 0;*/
+
+ g_signal_emit (page, signals[CROP_CHANGED], 0);
+}
+
+
+void
+page_set_named_crop (Page *page, const gchar *name)
+{
+ struct {
+ const gchar *name;
+ /* Width and height in inches */
+ gdouble width, height;
+ } named_crops[] =
+ {
+ {"A4", 8.3, 11.7},
+ {"A5", 5.8, 8.3},
+ {"A6", 4.1, 5.8},
+ {"letter", 8.5, 11},
+ {"legal", 8.5, 14},
+ {"4x6", 4, 6},
+ {NULL, 0, 0}
+ };
+ gint i;
+ gint pw, ph;
+ double width, height;
+
+ g_return_if_fail (page != NULL);
+
+ for (i = 0; named_crops[i].name && strcmp (name, named_crops[i].name) != 0; i++);
+ width = named_crops[i].width;
+ height = named_crops[i].height;
+
+ if (!named_crops[i].name) {
+ g_warning ("Unknown paper size '%s'", name);
+ return;
+ }
+
+ g_free (page->priv->crop_name);
+ page->priv->crop_name = g_strdup (name);
+ page->priv->has_crop = TRUE;
+
+ pw = page_get_width (page);
+ ph = page_get_height (page);
+
+ /* Rotate to match original aspect */
+ if (pw > ph) {
+ double t;
+ t = width;
+ width = height;
+ height = t;
+ }
+
+ /* Custom crop, make slightly smaller than original */
+ page->priv->crop_width = (int) (width * page->priv->dpi + 0.5);
+ page->priv->crop_height = (int) (height * page->priv->dpi + 0.5);
+
+ if (page->priv->crop_width < pw)
+ page->priv->crop_x = (pw - page->priv->crop_width) / 2;
+ else
+ page->priv->crop_x = 0;
+ if (page->priv->crop_height < ph)
+ page->priv->crop_y = (ph - page->priv->crop_height) / 2;
+ else
+ page->priv->crop_y = 0;
+ g_signal_emit (page, signals[CROP_CHANGED], 0);
+}
+
+
+void
+page_move_crop (Page *page, gint x, gint y)
+{
+ g_return_if_fail (x >= 0);
+ g_return_if_fail (y >= 0);
+ g_return_if_fail (x < page_get_width (page));
+ g_return_if_fail (y < page_get_height (page));
+
+ page->priv->crop_x = x;
+ page->priv->crop_y = y;
+ g_signal_emit (page, signals[CROP_CHANGED], 0);
+}
+
+
+void
+page_rotate_crop (Page *page)
+{
+ gint t;
+
+ g_return_if_fail (page != NULL);
+
+ if (!page->priv->has_crop)
+ return;
+
+ t = page->priv->crop_width;
+ page->priv->crop_width = page->priv->crop_height;
+ page->priv->crop_height = t;
+
+ /* Clip custom crops */
+ if (!page->priv->crop_name) {
+ gint w, h;
+
+ w = page_get_width (page);
+ h = page_get_height (page);
+
+ if (page->priv->crop_x + page->priv->crop_width > w)
+ page->priv->crop_x = w - page->priv->crop_width;
+ if (page->priv->crop_x < 0) {
+ page->priv->crop_x = 0;
+ page->priv->crop_width = w;
+ }
+ if (page->priv->crop_y + page->priv->crop_height > h)
+ page->priv->crop_y = h - page->priv->crop_height;
+ if (page->priv->crop_y < 0) {
+ page->priv->crop_y = 0;
+ page->priv->crop_height = h;
+ }
+ }
+
+ g_signal_emit (page, signals[CROP_CHANGED], 0);
+}
+
+
+gboolean
+page_has_crop (Page *page)
+{
+ g_return_val_if_fail (page != NULL, FALSE);
+ return page->priv->has_crop;
+}
+
+
+void
+page_get_crop (Page *page, gint *x, gint *y, gint *width, gint *height)
+{
+ g_return_if_fail (page != NULL);
+
+ if (x)
+ *x = page->priv->crop_x;
+ if (y)
+ *y = page->priv->crop_y;
+ if (width)
+ *width = page->priv->crop_width;
+ if (height)
+ *height = page->priv->crop_height;
+}
+
+
+gchar *
+page_get_named_crop (Page *page)
+{
+ g_return_val_if_fail (page != NULL, NULL);
+
+ if (page->priv->crop_name)
+ return g_strdup (page->priv->crop_name);
+ else
+ return NULL;
+}
+
+
+GdkPixbuf *
+page_get_image (Page *page)
+{
+ g_return_val_if_fail (page != NULL, NULL);
+ return g_object_ref (page->priv->image);
+}
+
+
+GdkPixbuf *
+page_get_cropped_image (Page *page)
+{
+ GdkPixbuf *image, *cropped_image;
+ gint x, y, w, h, pw, ph;
+
+ g_return_val_if_fail (page != NULL, NULL);
+
+ image = page_get_image (page);
+
+ if (!page->priv->has_crop)
+ return image;
+
+ x = page->priv->crop_x;
+ y = page->priv->crop_y;
+ w = page->priv->crop_width;
+ h = page->priv->crop_height;
+ pw = gdk_pixbuf_get_width (image);
+ ph = gdk_pixbuf_get_height (image);
+
+ /* Trim crop */
+ if (x + w >= pw)
+ w = pw - x;
+ if (y + h >= ph)
+ h = ph - y;
+
+ cropped_image = gdk_pixbuf_new_subpixbuf (image, x, y, w, h);
+ g_object_unref (image);
+
+ return cropped_image;
+}
+
+
+static gboolean
+write_pixbuf_data (const gchar *buf, gsize count, GError **error, GFileOutputStream *stream)
+{
+ return g_output_stream_write_all (G_OUTPUT_STREAM (stream), buf, count, NULL, NULL, error);
+}
+
+
+static gchar *
+get_icc_data_encoded (const gchar *icc_profile_filename)
+{
+ gchar *contents = NULL;
+ gchar *contents_encode = NULL;
+ gsize length;
+ gboolean ret;
+ GError *error = NULL;
+
+ /* Get binary data */
+ ret = g_file_get_contents (icc_profile_filename, &contents, &length, &error);
+ if (!ret) {
+ g_warning ("failed to get icc profile data: %s", error->message);
+ g_error_free (error);
+ }
+ else {
+ /* Encode into base64 */
+ contents_encode = g_base64_encode ((const guchar *) contents, length);
+ }
+
+ g_free (contents);
+ return contents_encode;
+}
+
+
+gboolean
+page_save (Page *page, const gchar *type, GFile *file, GError **error)
+{
+ GFileOutputStream *stream;
+ GdkPixbuf *image;
+ gboolean result = FALSE;
+ gchar *icc_profile_data = NULL;
+
+ stream = g_file_replace (file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error);
+ if (!stream)
+ return FALSE;
+
+ image = page_get_cropped_image (page);
+
+ if (page->priv->color_profile != NULL)
+ icc_profile_data = get_icc_data_encoded (page->priv->color_profile);
+
+ if (strcmp (type, "jpeg") == 0) {
+ /* ICC profile is awaiting review in gtk2+ bugzilla */
+ gchar *keys[] = { "quality", /* "icc-profile", */ NULL };
+ gchar *values[] = { "90", /* icc_profile_data, */ NULL };
+ result = gdk_pixbuf_save_to_callbackv (image,
+ (GdkPixbufSaveFunc) write_pixbuf_data, stream,
+ "jpeg", keys, values, error);
+ }
+ else if (strcmp (type, "png") == 0) {
+ gchar *keys[] = { "icc-profile", NULL };
+ gchar *values[] = { icc_profile_data, NULL };
+ if (icc_profile_data == NULL)
+ keys[0] = NULL;
+ result = gdk_pixbuf_save_to_callbackv (image,
+ (GdkPixbufSaveFunc) write_pixbuf_data, stream,
+ "png", keys, values, error);
+ }
+ else if (strcmp (type, "tiff") == 0) {
+ gchar *keys[] = { "compression", "icc-profile", NULL };
+ gchar *values[] = { "8" /* Deflate compression */, icc_profile_data, NULL };
+ if (icc_profile_data == NULL)
+ keys[1] = NULL;
+ result = gdk_pixbuf_save_to_callbackv (image,
+ (GdkPixbufSaveFunc) write_pixbuf_data, stream,
+ "tiff", keys, values, error);
+ }
+ else
+ result = FALSE; // FIXME: Set GError
+
+ g_free (icc_profile_data);
+ g_object_unref (image);
+ g_object_unref (stream);
+
+ return result;
+}
+
+
+static void
+page_finalize (GObject *object)
+{
+ Page *page = PAGE (object);
+ if (page->priv->image)
+ g_object_unref (page->priv->image);
+ page->priv->image = NULL;
+ G_OBJECT_CLASS (page_parent_class)->finalize (object);
+}
+
+
+static void
+page_class_init (PageClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = page_finalize;
+
+ signals[IMAGE_CHANGED] =
+ g_signal_new ("image-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageClass, image_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[SIZE_CHANGED] =
+ g_signal_new ("size-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageClass, size_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[SCAN_LINE_CHANGED] =
+ g_signal_new ("scan-line-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageClass, scan_line_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[ORIENTATION_CHANGED] =
+ g_signal_new ("orientation-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageClass, orientation_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[CROP_CHANGED] =
+ g_signal_new ("crop-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (PageClass, crop_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_type_class_add_private (klass, sizeof (PagePrivate));
+}
+
+
+static void
+page_init (Page *page)
+{
+ page->priv = G_TYPE_INSTANCE_GET_PRIVATE (page, PAGE_TYPE, PagePrivate);
+ page->priv->orientation = TOP_TO_BOTTOM;
+}
diff --git a/src/page.h b/src/page.h
new file mode 100644
index 0000000..b36fe32
--- /dev/null
+++ b/src/page.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#ifndef _PAGE_H_
+#define _PAGE_H_
+
+#include <glib-object.h>
+#include <gio/gio.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include "scanner.h"
+
+G_BEGIN_DECLS
+
+#define PAGE_TYPE (page_get_type ())
+#define PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PAGE_TYPE, Page))
+
+typedef enum
+{
+ TOP_TO_BOTTOM,
+ LEFT_TO_RIGHT,
+ BOTTOM_TO_TOP,
+ RIGHT_TO_LEFT
+} Orientation;
+
+
+typedef struct PagePrivate PagePrivate;
+
+typedef struct
+{
+ GObject parent_instance;
+ PagePrivate *priv;
+} Page;
+
+typedef struct
+{
+ GObjectClass parent_class;
+
+ void (*image_changed) (Page *page);
+ void (*size_changed) (Page *page);
+ void (*scan_line_changed) (Page *page);
+ void (*orientation_changed) (Page *page);
+ void (*crop_changed) (Page *page);
+} PageClass;
+
+
+GType page_get_type (void);
+
+Page *page_new (void);
+
+// FIXME: Should be part of page_new
+void page_setup (Page *page, gint width, gint height, gint dpi, Orientation orientation);
+
+void page_set_scan_area (Page *page, gint width, gint rows, gint dpi);
+
+gint page_get_dpi (Page *page);
+
+gboolean page_is_landscape (Page *page);
+
+gint page_get_width (Page *page);
+
+gint page_get_height (Page *page);
+
+gint page_get_scan_width (Page *page);
+
+gint page_get_scan_height (Page *page);
+
+void page_set_color_profile (Page *page, const gchar *color_profile);
+
+const gchar *page_get_color_profile (Page *page);
+
+void page_start (Page *page);
+
+gboolean page_is_scanning (Page *page);
+
+gboolean page_has_data (Page *page);
+
+gint page_get_scan_line (Page *page);
+
+void page_parse_scan_line (Page *page, ScanLine *line);
+
+void page_finish (Page *page);
+
+Orientation page_get_orientation (Page *page);
+
+void page_set_orientation (Page *page, Orientation orientation);
+
+void page_rotate_left (Page *page);
+
+void page_rotate_right (Page *page);
+
+void page_set_no_crop (Page *page);
+
+void page_set_custom_crop (Page *page, gint width, gint height);
+
+void page_set_named_crop (Page *page, const gchar *name);
+
+void page_move_crop (Page *page, gint x, gint y);
+
+void page_rotate_crop (Page *page);
+
+gboolean page_has_crop (Page *page);
+
+void page_get_crop (Page *page, gint *x, gint *y, gint *width, gint *height);
+
+gchar *page_get_named_crop (Page *page);
+
+GdkPixbuf *page_get_image (Page *page);
+
+GdkPixbuf *page_get_cropped_image (Page *page);
+
+gboolean page_save (Page *page, const gchar *type, GFile *file, GError **error);
+
+#endif /* _PAGE_H_ */
diff --git a/src/scanner.c b/src/scanner.c
new file mode 100644
index 0000000..daf1b15
--- /dev/null
+++ b/src/scanner.c
@@ -0,0 +1,1630 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sane/sane.h>
+#include <sane/saneopts.h>
+#include <glib/gi18n.h>
+
+#include "scanner.h"
+
+/* TODO: Could indicate the start of the next page immediately after the last page is received (i.e. before the sane_cancel()) */
+
+enum {
+ UPDATE_DEVICES,
+ AUTHORIZE,
+ EXPECT_PAGE,
+ GOT_PAGE_INFO,
+ GOT_LINE,
+ SCAN_FAILED,
+ PAGE_DONE,
+ DOCUMENT_DONE,
+ SCANNING_CHANGED,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+typedef struct
+{
+ Scanner *instance;
+ guint sig;
+ gpointer data;
+} SignalInfo;
+
+typedef struct
+{
+ gchar *device;
+ gdouble dpi;
+ ScanMode scan_mode;
+ gint depth;
+ gboolean type;
+ gint page_width, page_height;
+} ScanJob;
+
+typedef struct
+{
+ enum
+ {
+ REQUEST_CANCEL,
+ REQUEST_REDETECT,
+ REQUEST_START_SCAN,
+ REQUEST_QUIT
+ } type;
+ ScanJob *job;
+} ScanRequest;
+
+typedef struct
+{
+ gchar *username, *password;
+} Credentials;
+
+typedef enum
+{
+ STATE_IDLE = 0,
+ STATE_REDETECT,
+ STATE_OPEN,
+ STATE_GET_OPTION,
+ STATE_START,
+ STATE_GET_PARAMETERS,
+ STATE_READ
+} ScanState;
+
+struct ScannerPrivate
+{
+ GAsyncQueue *scan_queue, *authorize_queue;
+ GThread *thread;
+
+ gchar *default_device;
+
+ ScanState state;
+ gboolean redetect;
+
+ GList *job_queue;
+
+ /* Handle to SANE device */
+ SANE_Handle handle;
+ gchar *current_device;
+
+ SANE_Parameters parameters;
+
+ /* Last option read */
+ SANE_Int option_index;
+
+ /* Buffer for received line */
+ SANE_Byte *buffer;
+ SANE_Int buffer_size, n_used;
+
+ SANE_Int bytes_remaining, line_count, pass_number, page_number, notified_page;
+
+ gboolean scanning;
+};
+
+G_DEFINE_TYPE (Scanner, scanner, G_TYPE_OBJECT);
+
+
+/* Table of scanner objects for each thread (required for authorization callback) */
+static GHashTable *scanners;
+
+
+static gboolean
+send_signal (SignalInfo *info)
+{
+ g_signal_emit (info->instance, signals[info->sig], 0, info->data);
+
+ switch (info->sig) {
+ case UPDATE_DEVICES:
+ {
+ GList *iter, *devices = info->data;
+ for (iter = devices; iter; iter = iter->next) {
+ ScanDevice *device = iter->data;
+ g_free (device->name);
+ g_free (device->label);
+ g_free (device);
+ }
+ g_list_free (devices);
+ }
+ break;
+ case AUTHORIZE:
+ {
+ gchar *resource = info->data;
+ g_free (resource);
+ }
+ break;
+ case GOT_PAGE_INFO:
+ {
+ ScanPageInfo *page_info = info->data;
+ g_free (page_info);
+ }
+ break;
+ case GOT_LINE:
+ {
+ ScanLine *line = info->data;
+ g_free(line->data);
+ g_free(line);
+ }
+ break;
+ case SCAN_FAILED:
+ {
+ GError *error = info->data;
+ g_error_free (error);
+ }
+ break;
+ default:
+ case EXPECT_PAGE:
+ case PAGE_DONE:
+ case DOCUMENT_DONE:
+ case LAST_SIGNAL:
+ g_assert (info->data == NULL);
+ break;
+ }
+ g_free (info);
+
+ return FALSE;
+}
+
+
+/* Emit signals in main loop */
+static void
+emit_signal (Scanner *scanner, guint sig, gpointer data)
+{
+ SignalInfo *info;
+
+ info = g_malloc(sizeof(SignalInfo));
+ info->instance = scanner;
+ info->sig = sig;
+ info->data = data;
+ g_idle_add ((GSourceFunc) send_signal, info);
+}
+
+
+static void
+set_scanning (Scanner *scanner, gboolean is_scanning)
+{
+ if ((scanner->priv->scanning && !is_scanning) || (!scanner->priv->scanning && is_scanning)) {
+ scanner->priv->scanning = is_scanning;
+ emit_signal (scanner, SCANNING_CHANGED, NULL);
+ }
+}
+
+
+static gint
+get_device_weight (const gchar *device)
+{
+ /* NOTE: This is using trends in the naming of SANE devices, SANE should be able to provide this information better */
+
+ /* Use webcams as a last resort */
+ if (g_str_has_prefix (device, "vfl:"))
+ return 2;
+
+ /* Use locally connected devices first */
+ if (strstr (device, "usb"))
+ return 0;
+
+ return 1;
+}
+
+
+static gint
+compare_devices (ScanDevice *device1, ScanDevice *device2)
+{
+ gint weight1, weight2;
+
+ /* TODO: Should do some fuzzy matching on the last selected device and set that to the default */
+
+ weight1 = get_device_weight (device1->name);
+ weight2 = get_device_weight (device2->name);
+ if (weight1 != weight2)
+ return weight1 - weight2;
+
+ return strcmp (device1->label, device2->label);
+}
+
+
+static const char *
+get_status_string (SANE_Status status)
+{
+ struct {
+ SANE_Status status;
+ const char *name;
+ } status_names[] = {
+ { SANE_STATUS_GOOD, "SANE_STATUS_GOOD"},
+ { SANE_STATUS_UNSUPPORTED, "SANE_STATUS_UNSUPPORTED"},
+ { SANE_STATUS_CANCELLED, "SANE_STATUS_CANCELLED"},
+ { SANE_STATUS_DEVICE_BUSY, "SANE_STATUS_DEVICE_BUSY"},
+ { SANE_STATUS_INVAL, "SANE_STATUS_INVAL"},
+ { SANE_STATUS_EOF, "SANE_STATUS_EOF"},
+ { SANE_STATUS_JAMMED, "SANE_STATUS_JAMMED"},
+ { SANE_STATUS_NO_DOCS, "SANE_STATUS_NO_DOCS"},
+ { SANE_STATUS_COVER_OPEN, "SANE_STATUS_COVER_OPEN"},
+ { SANE_STATUS_IO_ERROR, "SANE_STATUS_IO_ERROR"},
+ { SANE_STATUS_NO_MEM, "SANE_STATUS_NO_MEM"},
+ { SANE_STATUS_ACCESS_DENIED, "SANE_STATUS_ACCESS_DENIED"},
+ { -1, NULL}
+ };
+ static char *unknown_string = NULL;
+ int i;
+
+ for (i = 0; status_names[i].name != NULL && status_names[i].status != status; i++);
+
+ if (status_names[i].name == NULL) {
+ g_free (unknown_string);
+ unknown_string = g_strdup_printf ("SANE_STATUS(%d)", status);
+ return unknown_string; /* Note result is undefined on second call to this function */
+ }
+
+ return status_names[i].name;
+}
+
+
+static const char *
+get_action_string (SANE_Action action)
+{
+ struct {
+ SANE_Action action;
+ const char *name;
+ } action_names[] = {
+ { SANE_ACTION_GET_VALUE, "SANE_ACTION_GET_VALUE" },
+ { SANE_ACTION_SET_VALUE, "SANE_ACTION_SET_VALUE" },
+ { SANE_ACTION_SET_AUTO, "SANE_ACTION_SET_AUTO" },
+ { -1, NULL}
+ };
+ static char *unknown_string = NULL;
+ int i;
+
+ for (i = 0; action_names[i].name != NULL && action_names[i].action != action; i++);
+
+ if (action_names[i].name == NULL) {
+ g_free (unknown_string);
+ unknown_string = g_strdup_printf ("SANE_ACTION(%d)", action);
+ return unknown_string; /* Note result is undefined on second call to this function */
+ }
+
+ return action_names[i].name;
+}
+
+
+static const char *
+get_frame_string (SANE_Frame frame)
+{
+ struct {
+ SANE_Frame frame;
+ const char *name;
+ } frame_names[] = {
+ { SANE_FRAME_GRAY, "SANE_FRAME_GRAY" },
+ { SANE_FRAME_RGB, "SANE_FRAME_RGB" },
+ { SANE_FRAME_RED, "SANE_FRAME_RED" },
+ { SANE_FRAME_GREEN, "SANE_FRAME_GREEN" },
+ { SANE_FRAME_BLUE, "SANE_FRAME_BLUE" },
+ { -1, NULL}
+ };
+ static char *unknown_string = NULL;
+ int i;
+
+ for (i = 0; frame_names[i].name != NULL && frame_names[i].frame != frame; i++);
+
+ if (frame_names[i].name == NULL) {
+ g_free (unknown_string);
+ unknown_string = g_strdup_printf ("SANE_FRAME(%d)", frame);
+ return unknown_string; /* Note result is undefined on second call to this function */
+ }
+
+ return frame_names[i].name;
+}
+
+
+static void
+do_redetect (Scanner *scanner)
+{
+ const SANE_Device **device_list, **device_iter;
+ SANE_Status status;
+ GList *devices = NULL;
+
+ status = sane_get_devices (&device_list, SANE_FALSE);
+ g_debug ("sane_get_devices () -> %s", get_status_string (status));
+ if (status != SANE_STATUS_GOOD) {
+ g_warning ("Unable to get SANE devices: %s", sane_strstatus(status));
+ scanner->priv->state = STATE_IDLE;
+ return;
+ }
+
+ for (device_iter = device_list; *device_iter; device_iter++) {
+ const SANE_Device *device = *device_iter;
+ ScanDevice *scan_device;
+ gchar *c, *label;
+
+ g_debug ("Device: name=\"%s\" vendor=\"%s\" model=\"%s\" type=\"%s\"",
+ device->name, device->vendor, device->model, device->type);
+
+ scan_device = g_malloc0 (sizeof (ScanDevice));
+
+ scan_device->name = g_strdup (device->name);
+
+ /* Abbreviate HP as it is a long string and does not match what is on the physical scanner */
+ if (strcmp (device->vendor, "Hewlett-Packard") == 0)
+ label = g_strdup_printf ("HP %s", device->model);
+ else
+ label = g_strdup_printf ("%s %s", device->vendor, device->model);
+
+ /* Replace underscored in name */
+ for (c = label; *c; c++)
+ if (*c == '_')
+ *c = ' ';
+
+ scan_device->label = label;
+
+ devices = g_list_append (devices, scan_device);
+ }
+
+ /* Sort devices by priority */
+ devices = g_list_sort (devices, (GCompareFunc) compare_devices);
+
+ scanner->priv->redetect = FALSE;
+ scanner->priv->state = STATE_IDLE;
+
+ g_free (scanner->priv->default_device);
+ if (devices) {
+ ScanDevice *device = g_list_nth_data (devices, 0);
+ scanner->priv->default_device = g_strdup (device->name);
+ }
+ else
+ scanner->priv->default_device = NULL;
+
+ emit_signal (scanner, UPDATE_DEVICES, devices);
+}
+
+
+static gboolean
+control_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int index, SANE_Action action, void *value)
+{
+ SANE_Status status;
+ gchar *old_value;
+
+ switch (option->type) {
+ case SANE_TYPE_BOOL:
+ old_value = g_strdup_printf (*((SANE_Bool *) value) ? "SANE_TRUE" : "SANE_FALSE");
+ break;
+ case SANE_TYPE_INT:
+ old_value = g_strdup_printf ("%d", *((SANE_Int *) value));
+ break;
+ case SANE_TYPE_FIXED:
+ old_value = g_strdup_printf ("%f", SANE_UNFIX (*((SANE_Fixed *) value)));
+ break;
+ case SANE_TYPE_STRING:
+ old_value = g_strdup_printf ("\"%s\"", (char *) value);
+ break;
+ default:
+ old_value = g_strdup ("?");
+ break;
+ }
+
+ status = sane_control_option (handle, index, action, value, NULL);
+ switch (option->type) {
+ case SANE_TYPE_BOOL:
+ g_debug ("sane_control_option (%d, %s, %s) -> (%s, %s)",
+ index, get_action_string (action),
+ *((SANE_Bool *) value) ? "SANE_TRUE" : "SANE_FALSE",
+ get_status_string (status),
+ old_value);
+ break;
+ case SANE_TYPE_INT:
+ g_debug ("sane_control_option (%d, %s, %d) -> (%s, %s)",
+ index, get_action_string (action),
+ *((SANE_Int *) value),
+ get_status_string (status),
+ old_value);
+ break;
+ case SANE_TYPE_FIXED:
+ g_debug ("sane_control_option (%d, %s, %f) -> (%s, %s)",
+ index, get_action_string (action),
+ SANE_UNFIX (*((SANE_Fixed *) value)),
+ get_status_string (status),
+ old_value);
+ break;
+ case SANE_TYPE_STRING:
+ g_debug ("sane_control_option (%d, %s, \"%s\") -> (%s, %s)",
+ index, get_action_string (action),
+ (char *) value,
+ get_status_string (status),
+ old_value);
+ break;
+ default:
+ break;
+ }
+ g_free (old_value);
+
+ if (status != SANE_STATUS_GOOD)
+ g_warning ("Error setting option %s: %s", option->name, sane_strstatus(status));
+
+ return status == SANE_STATUS_GOOD;
+}
+
+
+static gboolean
+set_default_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int option_index)
+{
+ SANE_Status status;
+
+ status = sane_control_option (handle, option_index, SANE_ACTION_SET_AUTO, NULL, NULL);
+ g_debug ("sane_control_option (%d, SANE_ACTION_SET_AUTO) -> %s",
+ option_index, get_status_string (status));
+ if (status != SANE_STATUS_GOOD)
+ g_warning ("Error setting default option %s: %s", option->name, sane_strstatus(status));
+
+ return status == SANE_STATUS_GOOD;
+}
+
+
+static void
+set_bool_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int option_index, SANE_Bool value, SANE_Bool *result)
+{
+ SANE_Bool v = value;
+ g_return_if_fail (option->type == SANE_TYPE_BOOL);
+ control_option (handle, option, option_index, SANE_ACTION_SET_VALUE, &v);
+ if (result)
+ *result = v;
+}
+
+
+static void
+set_int_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int option_index, SANE_Int value, SANE_Int *result)
+{
+ SANE_Int v = value;
+
+ g_return_if_fail (option->type == SANE_TYPE_INT);
+
+ if (option->constraint_type == SANE_CONSTRAINT_RANGE) {
+ if (option->constraint.range->quant)
+ v *= option->constraint.range->quant;
+ if (v < option->constraint.range->min)
+ v = option->constraint.range->min;
+ if (v > option->constraint.range->max)
+ v = option->constraint.range->max;
+ }
+ else if (option->constraint_type == SANE_CONSTRAINT_WORD_LIST) {
+ int i;
+ SANE_Int distance = INT_MAX, nearest = 0;
+
+ /* Find nearest value to requested */
+ for (i = 0; i < option->constraint.word_list[0]; i++) {
+ SANE_Int x = option->constraint.word_list[i+1];
+ if (abs (x - v) < distance) {
+ distance = abs (x - v);
+ nearest = x;
+ }
+ }
+ v = nearest;
+ }
+
+ control_option (handle, option, option_index, SANE_ACTION_SET_VALUE, &v);
+ if (result)
+ *result = v;
+}
+
+
+static void
+set_fixed_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int option_index, gdouble value, gdouble *result)
+{
+ gdouble v = value;
+ SANE_Fixed v_fixed;
+
+ g_return_if_fail (option->type == SANE_TYPE_FIXED);
+
+ if (option->constraint_type == SANE_CONSTRAINT_RANGE) {
+ double min = SANE_UNFIX (option->constraint.range->min);
+ double max = SANE_UNFIX (option->constraint.range->max);
+
+ if (v < min)
+ v = min;
+ if (v > max)
+ v = max;
+ }
+ else if (option->constraint_type == SANE_CONSTRAINT_WORD_LIST) {
+ int i;
+ double distance = DBL_MAX, nearest = 0.0;
+
+ /* Find nearest value to requested */
+ for (i = 0; i < option->constraint.word_list[0]; i++) {
+ double x = SANE_UNFIX (option->constraint.word_list[i+1]);
+ if (fabs (x - v) < distance) {
+ distance = fabs (x - v);
+ nearest = x;
+ }
+ }
+ v = nearest;
+ }
+
+ v_fixed = SANE_FIX (v);
+ control_option (handle, option, option_index, SANE_ACTION_SET_VALUE, &v_fixed);
+ if (result)
+ *result = SANE_UNFIX (v_fixed);
+}
+
+
+static gboolean
+set_string_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int option_index, const char *value, char **result)
+{
+ char *string;
+ gsize value_size, size;
+ gboolean error;
+
+ g_return_val_if_fail (option->type == SANE_TYPE_STRING, FALSE);
+
+ value_size = strlen (value) + 1;
+ size = option->size > value_size ? option->size : value_size;
+ string = g_malloc(sizeof(char) * size);
+ strcpy (string, value);
+ error = control_option (handle, option, option_index, SANE_ACTION_SET_VALUE, string);
+ if (result)
+ *result = string;
+ else
+ g_free (string);
+
+ return error;
+}
+
+
+static gboolean
+set_constrained_string_option (SANE_Handle handle, const SANE_Option_Descriptor *option, SANE_Int option_index, const char *values[], char **result)
+{
+ gint i, j;
+
+ g_return_val_if_fail (option->type == SANE_TYPE_STRING, FALSE);
+ g_return_val_if_fail (option->constraint_type == SANE_CONSTRAINT_STRING_LIST, FALSE);
+
+ for (i = 0; values[i] != NULL; i++) {
+ for (j = 0; option->constraint.string_list[j]; j++) {
+ if (strcmp (values[i], option->constraint.string_list[j]) == 0)
+ break;
+ }
+
+ if (option->constraint.string_list[j] != NULL)
+ return set_string_option (handle, option, option_index, values[i], result);
+ }
+
+ return FALSE;
+}
+
+
+static void
+log_option (SANE_Int index, const SANE_Option_Descriptor *option)
+{
+ GString *string;
+ SANE_Word i;
+ SANE_Int cap;
+
+ string = g_string_new ("");
+
+ g_string_append_printf (string, "Option %d:", index);
+
+ if (option->name)
+ g_string_append_printf (string, " name='%s'", option->name);
+
+ if (option->title)
+ g_string_append_printf (string, " title='%s'", option->title);
+
+ switch (option->type) {
+ case SANE_TYPE_BOOL:
+ g_string_append (string, " type=bool");
+ break;
+ case SANE_TYPE_INT:
+ g_string_append (string, " type=int");
+ break;
+ case SANE_TYPE_FIXED:
+ g_string_append (string, " type=fixed");
+ break;
+ case SANE_TYPE_STRING:
+ g_string_append (string, " type=string");
+ break;
+ case SANE_TYPE_BUTTON:
+ g_string_append (string, " type=button");
+ break;
+ case SANE_TYPE_GROUP:
+ g_string_append (string, " type=group");
+ break;
+ default:
+ g_string_append_printf (string, " type=%d", option->type);
+ break;
+ }
+
+ g_string_append_printf (string, " size=%d", option->size);
+
+ switch (option->unit) {
+ case SANE_UNIT_NONE:
+ break;
+ case SANE_UNIT_PIXEL:
+ g_string_append (string, " unit=pixels");
+ break;
+ case SANE_UNIT_BIT:
+ g_string_append (string, " unit=bits");
+ break;
+ case SANE_UNIT_MM:
+ g_string_append (string, " unit=mm");
+ break;
+ case SANE_UNIT_DPI:
+ g_string_append (string, " unit=dpi");
+ break;
+ case SANE_UNIT_PERCENT:
+ g_string_append (string, " unit=percent");
+ break;
+ case SANE_UNIT_MICROSECOND:
+ g_string_append (string, " unit=microseconds");
+ break;
+ default:
+ g_string_append_printf (string, " unit=%d", option->unit);
+ break;
+ }
+
+ switch (option->constraint_type) {
+ case SANE_CONSTRAINT_RANGE:
+ if (option->type == SANE_TYPE_FIXED)
+ g_string_append_printf (string, " min=%f, max=%f, quant=%d",
+ SANE_UNFIX (option->constraint.range->min), SANE_UNFIX (option->constraint.range->max),
+ option->constraint.range->quant);
+ else
+ g_string_append_printf (string, " min=%d, max=%d, quant=%d",
+ option->constraint.range->min, option->constraint.range->max,
+ option->constraint.range->quant);
+ break;
+ case SANE_CONSTRAINT_WORD_LIST:
+ g_string_append (string, " values=[");
+ for (i = 0; i < option->constraint.word_list[0]; i++) {
+ if (i != 0)
+ g_string_append (string, ", ");
+ if (option->type == SANE_TYPE_INT)
+ g_string_append_printf (string, "%d", option->constraint.word_list[i+1]);
+ else
+ g_string_append_printf (string, "%f", SANE_UNFIX (option->constraint.word_list[i+1]));
+ }
+ g_string_append (string, "]");
+ break;
+ case SANE_CONSTRAINT_STRING_LIST:
+ g_string_append (string, " values=[");
+ for (i = 0; option->constraint.string_list[i]; i++) {
+ if (i != 0)
+ g_string_append (string, ", ");
+ g_string_append_printf (string, "\"%s\"", option->constraint.string_list[i]);
+ }
+ g_string_append (string, "]");
+ break;
+ default:
+ break;
+ }
+
+ cap = option->cap;
+ if (cap) {
+ struct {
+ SANE_Int cap;
+ const char *name;
+ } caps[] = {
+ { SANE_CAP_SOFT_SELECT, "soft-select"},
+ { SANE_CAP_HARD_SELECT, "hard-select"},
+ { SANE_CAP_SOFT_DETECT, "soft-detect"},
+ { SANE_CAP_EMULATED, "emulated"},
+ { SANE_CAP_AUTOMATIC, "automatic"},
+ { SANE_CAP_INACTIVE, "inactive"},
+ { SANE_CAP_ADVANCED, "advanced"},
+ { 0, NULL}
+ };
+ int i, n = 0;
+
+ g_string_append (string, " cap=");
+ for (i = 0; caps[i].cap > 0; i++) {
+ if (cap & caps[i].cap) {
+ cap &= ~caps[i].cap;
+ if (n != 0)
+ g_string_append (string, ",");
+ g_string_append (string, caps[i].name);
+ n++;
+ }
+ }
+ /* Unknown capabilities */
+ if (cap) {
+ if (n != 0)
+ g_string_append (string, ",");
+ g_string_append_printf (string, "%x", cap);
+ }
+ }
+
+ g_debug ("%s", string->str);
+ g_string_free (string, TRUE);
+
+ if (option->desc)
+ g_debug (" Description: %s", option->desc);
+}
+
+
+static void
+authorization_cb (SANE_String_Const resource, SANE_Char username[SANE_MAX_USERNAME_LEN], SANE_Char password[SANE_MAX_PASSWORD_LEN])
+{
+ Scanner *scanner;
+ Credentials *credentials;
+
+ scanner = g_hash_table_lookup (scanners, g_thread_self ());
+
+ emit_signal (scanner, AUTHORIZE, g_strdup (resource));
+
+ credentials = g_async_queue_pop (scanner->priv->authorize_queue);
+ strncpy (username, credentials->username, SANE_MAX_USERNAME_LEN);
+ strncpy (password, credentials->password, SANE_MAX_PASSWORD_LEN);
+ g_free (credentials);
+}
+
+
+void
+scanner_authorize (Scanner *scanner, const gchar *username, const gchar *password)
+{
+ Credentials *credentials;
+
+ credentials = g_malloc (sizeof (Credentials));
+ credentials->username = g_strdup (username);
+ credentials->password = g_strdup (password);
+ g_async_queue_push (scanner->priv->authorize_queue, credentials);
+}
+
+
+static void
+close_device (Scanner *scanner)
+{
+ GList *iter;
+
+ if (scanner->priv->handle) {
+ sane_cancel (scanner->priv->handle);
+ g_debug ("sane_cancel ()");
+
+ sane_close (scanner->priv->handle);
+ g_debug ("sane_close ()");
+ scanner->priv->handle = NULL;
+ }
+
+ g_free (scanner->priv->buffer);
+ scanner->priv->buffer = NULL;
+
+ for (iter = scanner->priv->job_queue; iter; iter = iter->next) {
+ ScanJob *job = (ScanJob *) iter->data;
+ g_free (job->device);
+ g_free (job);
+ }
+ g_list_free (scanner->priv->job_queue);
+ scanner->priv->job_queue = NULL;
+
+ set_scanning (scanner, FALSE);
+}
+
+static void
+fail_scan (Scanner *scanner, gint error_code, const gchar *error_string)
+{
+ close_device (scanner);
+ scanner->priv->state = STATE_IDLE;
+ emit_signal (scanner, SCAN_FAILED, g_error_new (SCANNER_TYPE, error_code, "%s", error_string));
+}
+
+
+static gboolean
+handle_requests (Scanner *scanner)
+{
+ gint request_count = 0;
+
+ /* Redetect when idle */
+ if (scanner->priv->state == STATE_IDLE && scanner->priv->redetect)
+ scanner->priv->state = STATE_REDETECT;
+
+ /* Process all requests */
+ while (TRUE) {
+ ScanRequest *request = NULL;
+
+ if ((scanner->priv->state == STATE_IDLE && request_count == 0) ||
+ g_async_queue_length (scanner->priv->scan_queue) > 0)
+ request = g_async_queue_pop (scanner->priv->scan_queue);
+ else
+ return TRUE;
+
+ g_debug ("Processing request");
+ request_count++;
+
+ switch (request->type) {
+ case REQUEST_REDETECT:
+ break;
+
+ case REQUEST_START_SCAN:
+ scanner->priv->job_queue = g_list_append (scanner->priv->job_queue, request->job);
+ break;
+
+ case REQUEST_CANCEL:
+ fail_scan (scanner, SANE_STATUS_CANCELLED, "Scan cancelled - do not report this error");
+ break;
+
+ case REQUEST_QUIT:
+ close_device (scanner);
+ g_free (request);
+ return FALSE;
+ }
+
+ g_free (request);
+ }
+
+ return TRUE;
+}
+
+
+static void
+do_open (Scanner *scanner)
+{
+ SANE_Status status;
+ ScanJob *job;
+
+ job = (ScanJob *) scanner->priv->job_queue->data;
+
+ scanner->priv->line_count = 0;
+ scanner->priv->pass_number = 0;
+ scanner->priv->page_number = 0;
+ scanner->priv->notified_page = -1;
+ scanner->priv->option_index = 0;
+
+ if (!job->device && scanner->priv->default_device)
+ job->device = g_strdup (scanner->priv->default_device);
+
+ if (!job->device) {
+ g_warning ("No scan device available");
+ fail_scan (scanner, status,
+ /* Error displayed when no scanners to scan with */
+ _("No scanners available. Please connect a scanner."));
+ return;
+ }
+
+ /* See if we can use the already open device */
+ if (scanner->priv->handle) {
+ if (strcmp (scanner->priv->current_device, job->device) == 0) {
+ scanner->priv->state = STATE_GET_OPTION;
+ return;
+ }
+
+ sane_close (scanner->priv->handle);
+ g_debug ("sane_close ()");
+ scanner->priv->handle = NULL;
+ }
+
+ g_free (scanner->priv->current_device);
+ scanner->priv->current_device = NULL;
+
+ status = sane_open (job->device, &scanner->priv->handle);
+ g_debug ("sane_open (\"%s\") -> %s", job->device, get_status_string (status));
+
+ if (status != SANE_STATUS_GOOD) {
+ g_warning ("Unable to get open device: %s", sane_strstatus (status));
+ scanner->priv->handle = NULL;
+ fail_scan (scanner, status,
+ /* Error displayed when cannot connect to scanner */
+ _("Unable to connect to scanner"));
+ return;
+ }
+
+ scanner->priv->current_device = g_strdup (job->device);
+ scanner->priv->state = STATE_GET_OPTION;
+}
+
+
+static void
+do_get_option (Scanner *scanner)
+{
+ const SANE_Option_Descriptor *option;
+ SANE_Int option_index;
+ ScanJob *job;
+
+ job = (ScanJob *) scanner->priv->job_queue->data;
+
+ option = sane_get_option_descriptor (scanner->priv->handle, scanner->priv->option_index);
+ g_debug ("sane_get_option_descriptor (%d)", scanner->priv->option_index);
+ option_index = scanner->priv->option_index;
+ scanner->priv->option_index++;
+
+ if (!option) {
+ scanner->priv->state = STATE_START;
+ return;
+ }
+
+ log_option (option_index, option);
+
+ /* Ignore groups */
+ if (option->type == SANE_TYPE_GROUP)
+ return;
+
+ /* Option disabled */
+ if (option->cap & SANE_CAP_INACTIVE)
+ return;
+
+ /* Some options are unnammed (e.g. Option 0) */
+ if (option->name == NULL)
+ return;
+
+ if (strcmp (option->name, SANE_NAME_SCAN_RESOLUTION) == 0) {
+ if (option->type == SANE_TYPE_FIXED) {
+ set_fixed_option (scanner->priv->handle, option, option_index, job->dpi, &job->dpi);
+ }
+ else {
+ SANE_Int dpi;
+ set_int_option (scanner->priv->handle, option, option_index, job->dpi, &dpi);
+ job->dpi = dpi;
+ }
+ }
+ else if (strcmp (option->name, SANE_NAME_SCAN_SOURCE) == 0) {
+ const char *flatbed_sources[] =
+ {
+ "Flatbed",
+ SANE_I18N ("Flatbed"),
+ "FlatBed",
+ "Normal",
+ SANE_I18N ("Normal"),
+ NULL
+ };
+
+ const char *adf_sources[] =
+ {
+ "Automatic Document Feeder",
+ SANE_I18N ("Automatic Document Feeder"),
+ "ADF",
+ "Automatic Document Feeder(left aligned)", /* Seen in the proprietary brother3 driver */
+ "Automatic Document Feeder(centrally aligned)", /* Seen in the proprietary brother3 driver */
+ NULL
+ };
+
+ const char *adf_front_sources[] =
+ {
+ "ADF Front",
+ SANE_I18N ("ADF Front"),
+ NULL
+ };
+
+ const char *adf_back_sources[] =
+ {
+ "ADF Back",
+ SANE_I18N ("ADF Back"),
+ NULL
+ };
+
+ const char *adf_duplex_sources[] =
+ {
+ "ADF Duplex",
+ SANE_I18N ("ADF Duplex"),
+ NULL
+ };
+
+ switch (job->type) {
+ case SCAN_SINGLE:
+ if (!set_default_option (scanner->priv->handle, option, option_index))
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, flatbed_sources, NULL))
+ g_warning ("Unable to set single page source, please file a bug");
+ break;
+ case SCAN_ADF_FRONT:
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, adf_front_sources, NULL))
+ if (!!set_constrained_string_option (scanner->priv->handle, option, option_index, adf_sources, NULL))
+ g_warning ("Unable to set front ADF source, please file a bug");
+ break;
+ case SCAN_ADF_BACK:
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, adf_back_sources, NULL))
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, adf_sources, NULL))
+ g_warning ("Unable to set back ADF source, please file a bug");
+ break;
+ case SCAN_ADF_BOTH:
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, adf_duplex_sources, NULL))
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, adf_sources, NULL))
+ g_warning ("Unable to set duplex ADF source, please file a bug");
+ break;
+ }
+ }
+ else if (strcmp (option->name, SANE_NAME_BIT_DEPTH) == 0) {
+ if (job->depth > 0)
+ set_int_option (scanner->priv->handle, option, option_index, job->depth, NULL);
+ }
+ else if (strcmp (option->name, SANE_NAME_SCAN_MODE) == 0) {
+ /* The names of scan modes often used in drivers, as taken from the sane-backends source */
+ const char *color_scan_modes[] =
+ {
+ SANE_VALUE_SCAN_MODE_COLOR,
+ "Color",
+ "24bit Color", /* Seen in the proprietary brother3 driver */
+ NULL
+ };
+ const char *gray_scan_modes[] =
+ {
+ SANE_VALUE_SCAN_MODE_GRAY,
+ "Gray",
+ "Grayscale",
+ SANE_I18N ("Grayscale"),
+ NULL
+ };
+ const char *lineart_scan_modes[] =
+ {
+ SANE_VALUE_SCAN_MODE_LINEART,
+ "Lineart",
+ "LineArt",
+ SANE_I18N ("LineArt"),
+ "Black & White",
+ SANE_I18N ("Black & White"),
+ "Binary",
+ SANE_I18N ("Binary"),
+ "Thresholded",
+ SANE_VALUE_SCAN_MODE_GRAY,
+ "Gray",
+ "Grayscale",
+ SANE_I18N ("Grayscale"),
+ NULL
+ };
+
+ switch (job->scan_mode) {
+ case SCAN_MODE_COLOR:
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, color_scan_modes, NULL))
+ g_warning ("Unable to set Color mode, please file a bug");
+ break;
+ case SCAN_MODE_GRAY:
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, gray_scan_modes, NULL))
+ g_warning ("Unable to set Gray mode, please file a bug");
+ break;
+ case SCAN_MODE_LINEART:
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, lineart_scan_modes, NULL))
+ g_warning ("Unable to set Lineart mode, please file a bug");
+ break;
+ default:
+ break;
+ }
+ }
+ /* Disable compression, we will compress after scanning */
+ else if (strcmp (option->name, "compression") == 0) {
+ const char *disable_compression_names[] =
+ {
+ SANE_I18N ("None"),
+ SANE_I18N ("none"),
+ "None",
+ "none",
+ NULL
+ };
+
+ if (!set_constrained_string_option (scanner->priv->handle, option, option_index, disable_compression_names, NULL))
+ g_warning ("Unable to disable compression, please file a bug");
+ }
+ /* Always use maximum scan area - some scanners default to using partial areas. This should be patched in sane-backends */
+ else if (strcmp (option->name, SANE_NAME_SCAN_BR_X) == 0 ||
+ strcmp (option->name, SANE_NAME_SCAN_BR_Y) == 0) {
+ switch (option->constraint_type)
+ {
+ case SANE_CONSTRAINT_RANGE:
+ if (option->type == SANE_TYPE_FIXED)
+ set_fixed_option (scanner->priv->handle, option, option_index, SANE_UNFIX (option->constraint.range->max), NULL);
+ else
+ set_int_option (scanner->priv->handle, option, option_index, option->constraint.range->max, NULL);
+ break;
+ default:
+ break;
+ }
+ }
+ else if (strcmp (option->name, SANE_NAME_PAGE_WIDTH) == 0) {
+ if (job->page_width > 0.0) {
+ if (option->type == SANE_TYPE_FIXED)
+ set_fixed_option (scanner->priv->handle, option, option_index, job->page_width / 10.0, NULL);
+ else
+ set_int_option (scanner->priv->handle, option, option_index, job->page_width / 10, NULL);
+ }
+ }
+ else if (strcmp (option->name, SANE_NAME_PAGE_HEIGHT) == 0) {
+ if (job->page_height > 0.0) {
+ if (option->type == SANE_TYPE_FIXED)
+ set_fixed_option (scanner->priv->handle, option, option_index, job->page_height / 10.0, NULL);
+ else
+ set_int_option (scanner->priv->handle, option, option_index, job->page_height / 10, NULL);
+ }
+ }
+
+ /* Test scanner options (hoping will not effect other scanners...) */
+ if (strcmp (scanner->priv->current_device, "test") == 0) {
+ if (strcmp (option->name, "hand-scanner") == 0) {
+ set_bool_option (scanner->priv->handle, option, option_index, FALSE, NULL);
+ }
+ else if (strcmp (option->name, "three-pass") == 0) {
+ set_bool_option (scanner->priv->handle, option, option_index, FALSE, NULL);
+ }
+ else if (strcmp (option->name, "test-picture") == 0) {
+ set_string_option (scanner->priv->handle, option, option_index, "Color pattern", NULL);
+ }
+ else if (strcmp (option->name, "read-delay") == 0) {
+ set_bool_option (scanner->priv->handle, option, option_index, TRUE, NULL);
+ }
+ else if (strcmp (option->name, "read-delay-duration") == 0) {
+ set_int_option (scanner->priv->handle, option, option_index, 200000, NULL);
+ }
+ }
+}
+
+
+static void
+do_complete_document (Scanner *scanner)
+{
+ ScanJob *job;
+
+ job = (ScanJob *) scanner->priv->job_queue->data;
+ g_free (job->device);
+ g_free (job);
+ scanner->priv->job_queue = g_list_remove_link (scanner->priv->job_queue, scanner->priv->job_queue);
+
+ scanner->priv->state = STATE_IDLE;
+
+ /* Continue onto the next job */
+ if (scanner->priv->job_queue) {
+ scanner->priv->state = STATE_OPEN;
+ return;
+ }
+
+ /* Trigger timeout to close */
+ // TODO
+
+ emit_signal (scanner, DOCUMENT_DONE, NULL);
+ set_scanning (scanner, FALSE);
+}
+
+
+static void
+do_start (Scanner *scanner)
+{
+ SANE_Status status;
+
+ emit_signal (scanner, EXPECT_PAGE, NULL);
+
+ status = sane_start (scanner->priv->handle);
+ g_debug ("sane_start (page=%d, pass=%d) -> %s", scanner->priv->page_number, scanner->priv->pass_number, get_status_string (status));
+ if (status == SANE_STATUS_GOOD) {
+ scanner->priv->state = STATE_GET_PARAMETERS;
+ }
+ else if (status == SANE_STATUS_NO_DOCS) {
+ do_complete_document (scanner);
+ }
+ else {
+ g_warning ("Unable to start device: %s", sane_strstatus (status));
+ fail_scan (scanner, status,
+ /* Error display when unable to start scan */
+ _("Unable to start scan"));
+ }
+}
+
+
+static void
+do_get_parameters (Scanner *scanner)
+{
+ SANE_Status status;
+ ScanPageInfo *info;
+ ScanJob *job;
+
+ status = sane_get_parameters (scanner->priv->handle, &scanner->priv->parameters);
+ g_debug ("sane_get_parameters () -> %s", get_status_string (status));
+ if (status != SANE_STATUS_GOOD) {
+ g_warning ("Unable to get device parameters: %s", sane_strstatus (status));
+ fail_scan (scanner, status,
+ /* Error displayed when communication with scanner broken */
+ _("Error communicating with scanner"));
+ return;
+ }
+
+ job = (ScanJob *) scanner->priv->job_queue->data;
+
+ g_debug ("Parameters: format=%s last_frame=%s bytes_per_line=%d pixels_per_line=%d lines=%d depth=%d",
+ get_frame_string (scanner->priv->parameters.format),
+ scanner->priv->parameters.last_frame ? "SANE_TRUE" : "SANE_FALSE",
+ scanner->priv->parameters.bytes_per_line,
+ scanner->priv->parameters.pixels_per_line,
+ scanner->priv->parameters.lines,
+ scanner->priv->parameters.depth);
+
+ info = g_malloc(sizeof(ScanPageInfo));
+ info->width = scanner->priv->parameters.pixels_per_line;
+ info->height = scanner->priv->parameters.lines;
+ info->depth = scanner->priv->parameters.depth;
+ info->dpi = job->dpi; // FIXME: This is the requested DPI, not the actual DPI
+ info->device = g_strdup (scanner->priv->current_device);
+
+ if (scanner->priv->page_number != scanner->priv->notified_page) {
+ emit_signal (scanner, GOT_PAGE_INFO, info);
+ scanner->priv->notified_page = scanner->priv->page_number;
+ }
+
+ /* Prepare for read */
+ scanner->priv->buffer_size = scanner->priv->parameters.bytes_per_line + 1; /* Use +1 so buffer is not resized if driver returns one line per read */
+ scanner->priv->buffer = g_malloc (sizeof(SANE_Byte) * scanner->priv->buffer_size);
+ scanner->priv->n_used = 0;
+ scanner->priv->line_count = 0;
+ scanner->priv->pass_number = 0;
+ scanner->priv->state = STATE_READ;
+}
+
+
+static void
+do_complete_page (Scanner *scanner)
+{
+ ScanJob *job;
+
+ emit_signal (scanner, PAGE_DONE, NULL);
+
+ job = (ScanJob *) scanner->priv->job_queue->data;
+
+ /* If multi-pass then scan another page */
+ if (!scanner->priv->parameters.last_frame) {
+ scanner->priv->pass_number++;
+ scanner->priv->state = STATE_START;
+ return;
+ }
+
+ /* Go back for another page */
+ if (job->type != SCAN_SINGLE) {
+ scanner->priv->page_number++;
+ scanner->priv->pass_number = 0;
+ emit_signal (scanner, PAGE_DONE, NULL);
+ scanner->priv->state = STATE_START;
+ return;
+ }
+
+ sane_cancel (scanner->priv->handle);
+ g_debug ("sane_cancel ()");
+
+ do_complete_document (scanner);
+}
+
+
+static void
+do_read (Scanner *scanner)
+{
+ SANE_Status status;
+ SANE_Int n_to_read, n_read;
+ gboolean full_read = FALSE;
+
+ /* Read as many bytes as we expect */
+ n_to_read = scanner->priv->buffer_size - scanner->priv->n_used;
+
+ status = sane_read (scanner->priv->handle,
+ scanner->priv->buffer + scanner->priv->n_used,
+ n_to_read, &n_read);
+ g_debug ("sane_read (%d) -> (%s, %d)", n_to_read, get_status_string (status), n_read);
+
+ /* End of variable length frame */
+ if (status == SANE_STATUS_EOF &&
+ scanner->priv->parameters.lines == -1 &&
+ scanner->priv->bytes_remaining == scanner->priv->parameters.bytes_per_line) {
+ do_complete_page (scanner);
+ return;
+ }
+
+ /* Communication error */
+ if (status != SANE_STATUS_GOOD) {
+ g_warning ("Unable to read frame from device: %s", sane_strstatus (status));
+ fail_scan (scanner, status,
+ /* Error displayed when communication with scanner broken */
+ _("Error communicating with scanner"));
+ return;
+ }
+
+ if (scanner->priv->n_used == 0 && n_read == scanner->priv->buffer_size)
+ full_read = TRUE;
+ scanner->priv->n_used += n_read;
+
+ /* Feed out lines */
+ if (scanner->priv->n_used >= scanner->priv->parameters.bytes_per_line) {
+ ScanLine *line;
+
+ line = g_malloc(sizeof(ScanLine));
+ switch (scanner->priv->parameters.format) {
+ case SANE_FRAME_GRAY:
+ line->format = LINE_GRAY;
+ break;
+ case SANE_FRAME_RGB:
+ line->format = LINE_RGB;
+ break;
+ case SANE_FRAME_RED:
+ line->format = LINE_RED;
+ break;
+ case SANE_FRAME_GREEN:
+ line->format = LINE_GREEN;
+ break;
+ case SANE_FRAME_BLUE:
+ line->format = LINE_BLUE;
+ break;
+ }
+ line->width = scanner->priv->parameters.pixels_per_line;
+ line->depth = scanner->priv->parameters.depth;
+ line->data = scanner->priv->buffer;
+ line->data_length = scanner->priv->parameters.bytes_per_line;
+ line->number = scanner->priv->line_count;
+ line->n_lines = scanner->priv->n_used / line->data_length;
+
+ scanner->priv->buffer = NULL;
+ scanner->priv->line_count += line->n_lines;
+
+ /* On last line */
+ if (scanner->priv->parameters.lines > 0 && scanner->priv->line_count >= scanner->priv->parameters.lines) {
+ emit_signal (scanner, GOT_LINE, line);
+ do_complete_page (scanner);
+ }
+ else {
+ int i, n_remaining;
+
+ /* Increase buffer size if did full read */
+ if (full_read)
+ scanner->priv->buffer_size += scanner->priv->parameters.bytes_per_line;
+
+ scanner->priv->buffer = g_malloc(sizeof(SANE_Byte) * scanner->priv->buffer_size);
+ n_remaining = scanner->priv->n_used - (line->n_lines * line->data_length);
+ scanner->priv->n_used = 0;
+ for (i = 0; i < n_remaining; i++) {
+ scanner->priv->buffer[i] = line->data[i + (line->n_lines * line->data_length)];
+ scanner->priv->n_used++;
+ }
+ emit_signal (scanner, GOT_LINE, line);
+ }
+ }
+}
+
+
+static gpointer
+scan_thread (Scanner *scanner)
+{
+ SANE_Status status;
+ SANE_Int version_code;
+
+ g_hash_table_insert (scanners, g_thread_self (), scanner);
+
+ scanner->priv->state = STATE_IDLE;
+
+ status = sane_init (&version_code, authorization_cb);
+ g_debug ("sane_init () -> %s", get_status_string (status));
+ if (status != SANE_STATUS_GOOD) {
+ g_warning ("Unable to initialize SANE backend: %s", sane_strstatus(status));
+ return FALSE;
+ }
+ g_debug ("SANE version %d.%d.%d",
+ SANE_VERSION_MAJOR(version_code),
+ SANE_VERSION_MINOR(version_code),
+ SANE_VERSION_BUILD(version_code));
+
+ /* Scan for devices on first start */
+ scanner_redetect (scanner);
+
+ while (handle_requests (scanner)) {
+ switch (scanner->priv->state) {
+ case STATE_IDLE:
+ if (scanner->priv->job_queue) {
+ set_scanning (scanner, TRUE);
+ scanner->priv->state = STATE_OPEN;
+ }
+ break;
+ case STATE_REDETECT:
+ do_redetect (scanner);
+ break;
+ case STATE_OPEN:
+ do_open (scanner);
+ break;
+ case STATE_GET_OPTION:
+ do_get_option (scanner);
+ break;
+ case STATE_START:
+ do_start (scanner);
+ break;
+ case STATE_GET_PARAMETERS:
+ do_get_parameters (scanner);
+ break;
+ case STATE_READ:
+ do_read (scanner);
+ break;
+ }
+ }
+
+ return NULL;
+}
+
+
+Scanner *
+scanner_new ()
+{
+ return g_object_new (SCANNER_TYPE, NULL);
+}
+
+
+void
+scanner_start (Scanner *scanner)
+{
+ GError *error = NULL;
+ scanner->priv->thread = g_thread_create ((GThreadFunc) scan_thread, scanner, TRUE, &error);
+ if (error) {
+ g_critical ("Unable to create thread: %s", error->message);
+ g_error_free (error);
+ }
+}
+
+
+void
+scanner_redetect (Scanner *scanner)
+{
+ ScanRequest *request;
+
+ if (scanner->priv->redetect)
+ return;
+ scanner->priv->redetect = TRUE;
+
+ g_debug ("Requesting redetection of scan devices");
+
+ request = g_malloc0 (sizeof (ScanRequest));
+ request->type = REQUEST_REDETECT;
+ g_async_queue_push (scanner->priv->scan_queue, request);
+}
+
+
+gboolean
+scanner_is_scanning (Scanner *scanner)
+{
+ return scanner->priv->scanning;
+}
+
+
+void
+scanner_scan (Scanner *scanner, const char *device, ScanOptions *options)
+{
+ ScanRequest *request;
+ const gchar *type_string;
+
+ switch (options->type) {
+ case SCAN_SINGLE:
+ type_string = "SCAN_SINGLE";
+ break;
+ case SCAN_ADF_FRONT:
+ type_string = "SCAN_ADF_FRONT";
+ break;
+ case SCAN_ADF_BACK:
+ type_string = "SCAN_ADF_BACK";
+ break;
+ case SCAN_ADF_BOTH:
+ type_string = "SCAN_ADF_BOTH";
+ break;
+ default:
+ g_assert (FALSE);
+ return;
+ }
+
+ g_debug ("scanner_scan (\"%s\", %d, %s)", device ? device : "(null)", options->dpi, type_string);
+ request = g_malloc0 (sizeof (ScanRequest));
+ request->type = REQUEST_START_SCAN;
+ request->job = g_malloc0 (sizeof (ScanJob));
+ request->job->device = g_strdup (device);
+ request->job->dpi = options->dpi;
+ request->job->scan_mode = options->scan_mode;
+ request->job->depth = options->depth;
+ request->job->type = options->type;
+ request->job->page_width = options->paper_width;
+ request->job->page_height = options->paper_height;
+ g_async_queue_push (scanner->priv->scan_queue, request);
+}
+
+
+void
+scanner_cancel (Scanner *scanner)
+{
+ ScanRequest *request;
+
+ request = g_malloc0 (sizeof (ScanRequest));
+ request->type = REQUEST_CANCEL;
+ g_async_queue_push (scanner->priv->scan_queue, request);
+}
+
+
+void scanner_free (Scanner *scanner)
+{
+ ScanRequest *request;
+
+ g_debug ("Stopping scan thread");
+
+ request = g_malloc0 (sizeof (ScanRequest));
+ request->type = REQUEST_QUIT;
+ g_async_queue_push (scanner->priv->scan_queue, request);
+
+ if (scanner->priv->thread)
+ g_thread_join (scanner->priv->thread);
+
+ g_async_queue_unref (scanner->priv->scan_queue);
+ g_object_unref (scanner);
+
+ sane_exit ();
+ g_debug ("sane_exit ()");
+}
+
+
+static void
+scanner_class_init (ScannerClass *klass)
+{
+ signals[AUTHORIZE] =
+ g_signal_new ("authorize",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, authorize),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+ signals[UPDATE_DEVICES] =
+ g_signal_new ("update-devices",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, update_devices),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[EXPECT_PAGE] =
+ g_signal_new ("expect-page",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, expect_page),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[GOT_PAGE_INFO] =
+ g_signal_new ("got-page-info",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, got_page_info),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[GOT_LINE] =
+ g_signal_new ("got-line",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, got_line),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[SCAN_FAILED] =
+ g_signal_new ("scan-failed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, scan_failed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[PAGE_DONE] =
+ g_signal_new ("page-done",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, page_done),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[DOCUMENT_DONE] =
+ g_signal_new ("document-done",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, document_done),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[SCANNING_CHANGED] =
+ g_signal_new ("scanning-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ScannerClass, scanning_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_type_class_add_private (klass, sizeof (ScannerPrivate));
+
+ scanners = g_hash_table_new (g_direct_hash, g_direct_equal);
+}
+
+
+static void
+scanner_init (Scanner *scanner)
+{
+ scanner->priv = G_TYPE_INSTANCE_GET_PRIVATE (scanner, SCANNER_TYPE, ScannerPrivate);
+ scanner->priv->scan_queue = g_async_queue_new ();
+ scanner->priv->authorize_queue = g_async_queue_new ();
+}
diff --git a/src/scanner.h b/src/scanner.h
new file mode 100644
index 0000000..5acdc84
--- /dev/null
+++ b/src/scanner.h
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#ifndef _SCANNER_H_
+#define _SCANNER_H_
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define SCANNER_TYPE (scanner_get_type ())
+#define SCANNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCANNER_TYPE, Scanner))
+
+
+typedef struct
+{
+ gchar *name, *label;
+} ScanDevice;
+
+typedef struct
+{
+ /* Width, height in pixels */
+ gint width, height;
+
+ /* Bit depth */
+ gint depth;
+
+ /* Resolution */
+ gdouble dpi;
+
+ /* The device this page came from */
+ gchar *device;
+} ScanPageInfo;
+
+typedef struct
+{
+ /* Line number */
+ gint number;
+
+ /* Number of lines in this packet */
+ gint n_lines;
+
+ /* Width in pixels and format */
+ gint width, depth;
+ enum
+ {
+ LINE_GRAY,
+ LINE_RGB,
+ LINE_RED,
+ LINE_GREEN,
+ LINE_BLUE
+ } format;
+
+ /* Raw line data */
+ guchar *data;
+ gsize data_length;
+} ScanLine;
+
+typedef enum
+{
+ SCAN_MODE_DEFAULT,
+ SCAN_MODE_COLOR,
+ SCAN_MODE_GRAY,
+ SCAN_MODE_LINEART
+} ScanMode;
+
+typedef enum
+{
+ SCAN_SINGLE,
+ SCAN_ADF_FRONT,
+ SCAN_ADF_BACK,
+ SCAN_ADF_BOTH
+} ScanType;
+
+typedef struct
+{
+ gint dpi;
+ ScanMode scan_mode;
+ gint depth;
+ ScanType type;
+ gint paper_width, paper_height;
+} ScanOptions;
+
+typedef struct ScannerPrivate ScannerPrivate;
+
+typedef struct
+{
+ GObject parent_instance;
+ ScannerPrivate *priv;
+} Scanner;
+
+typedef struct
+{
+ GObjectClass parent_class;
+
+ void (*update_devices) (Scanner *scanner, GList *devices);
+ void (*authorize) (Scanner *scanner, const gchar *resource);
+ void (*expect_page) (Scanner *scanner);
+ void (*got_page_info) (Scanner *scanner, ScanPageInfo *info);
+ void (*got_line) (Scanner *scanner, ScanLine *line);
+ void (*scan_failed) (Scanner *scanner, GError *error);
+ void (*page_done) (Scanner *scanner);
+ void (*document_done) (Scanner *scanner);
+ void (*scanning_changed) (Scanner *scanner);
+} ScannerClass;
+
+
+GType scanner_get_type (void);
+
+Scanner *scanner_new (void);
+
+void scanner_start (Scanner *scanner);
+
+void scanner_authorize (Scanner *scanner, const gchar *username, const gchar *password);
+
+void scanner_redetect (Scanner *scanner);
+
+gboolean scanner_is_scanning (Scanner *scanner);
+
+void scanner_scan (Scanner *scanner, const char *device, ScanOptions *options);
+
+void scanner_cancel (Scanner *scanner);
+
+void scanner_free (Scanner *scanner);
+
+#endif /* _SCANNER_H_ */
diff --git a/src/simple-scan.c b/src/simple-scan.c
new file mode 100644
index 0000000..ab59299
--- /dev/null
+++ b/src/simple-scan.c
@@ -0,0 +1,633 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <unistd.h>
+#include <gudev/gudev.h>
+#include <dbus/dbus-glib.h>
+
+#include <sane/sane.h> // For SANE_STATUS_CANCELLED
+
+#include "ui.h"
+#include "scanner.h"
+#include "book.h"
+
+
+static const char *default_device = NULL;
+
+static GUdevClient *udev_client;
+
+static SimpleScan *ui;
+
+static Scanner *scanner;
+
+static Book *book;
+
+static GTimer *log_timer;
+
+static FILE *log_file;
+
+static gboolean debug = FALSE;
+
+
+static void
+update_scan_devices_cb (Scanner *scanner, GList *devices)
+{
+ ui_set_scan_devices (ui, devices);
+}
+
+
+static void
+authorize_cb (Scanner *scanner, const gchar *resource)
+{
+ gchar *username = NULL, *password = NULL;
+ ui_authorize (ui, resource, &username, &password);
+ scanner_authorize (scanner, username, password);
+ g_free (username);
+ g_free (password);
+}
+
+
+static Page *
+append_page ()
+{
+ Page *page;
+ Orientation orientation = TOP_TO_BOTTOM;
+ gboolean do_crop = FALSE;
+ gchar *named_crop = NULL;
+ gint width = 100, height = 100, dpi = 100, cx, cy, cw, ch;
+
+ /* Use current page if not used */
+ page = book_get_page (book, -1);
+ if (page && !page_has_data (page)) {
+ ui_set_selected_page (ui, page);
+ page_start (page);
+ return page;
+ }
+
+ /* Copy info from previous page */
+ if (page) {
+ orientation = page_get_orientation (page);
+ width = page_get_width (page);
+ height = page_get_height (page);
+ dpi = page_get_dpi (page);
+
+ do_crop = page_has_crop (page);
+ if (do_crop) {
+ named_crop = page_get_named_crop (page);
+ page_get_crop (page, &cx, &cy, &cw, &ch);
+ }
+ }
+
+ page = book_append_page (book, width, height, dpi, orientation);
+ if (do_crop) {
+ if (named_crop) {
+ page_set_named_crop (page, named_crop);
+ g_free (named_crop);
+ }
+ else
+ page_set_custom_crop (page, cw, ch);
+ page_move_crop (page, cx, cy);
+ }
+ ui_set_selected_page (ui, page);
+ page_start (page);
+
+ return page;
+}
+
+
+static void
+scanner_new_page_cb (Scanner *scanner)
+{
+ append_page ();
+}
+
+
+static gchar *
+get_profile_for_device (const gchar *current_device)
+{
+ gboolean ret;
+ DBusGConnection *connection;
+ DBusGProxy *proxy;
+ GError *error = NULL;
+ GType custom_g_type_string_string;
+ GPtrArray *profile_data_array = NULL;
+ gchar *device_id = NULL;
+ gchar *icc_profile = NULL;
+
+ /* Connect to the color manager on the session bus */
+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+ proxy = dbus_g_proxy_new_for_name (connection,
+ "org.gnome.ColorManager",
+ "/org/gnome/ColorManager",
+ "org.gnome.ColorManager");
+
+ /* Get color profile */
+ device_id = g_strdup_printf ("sane:%s", current_device);
+ custom_g_type_string_string = dbus_g_type_get_collection ("GPtrArray",
+ dbus_g_type_get_struct("GValueArray",
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_INVALID));
+ ret = dbus_g_proxy_call (proxy, "GetProfilesForDevice", &error,
+ G_TYPE_STRING, device_id,
+ G_TYPE_STRING, "",
+ G_TYPE_INVALID,
+ custom_g_type_string_string, &profile_data_array,
+ G_TYPE_INVALID);
+ g_object_unref (proxy);
+ g_free (device_id);
+ if (!ret) {
+ g_debug ("The request failed: %s", error->message);
+ g_error_free (error);
+ return NULL;
+ }
+
+ if (profile_data_array->len > 0) {
+ GValueArray *gva;
+ GValue *gv = NULL;
+
+ /* Just use the preferred profile filename */
+ gva = (GValueArray *) g_ptr_array_index (profile_data_array, 0);
+ gv = g_value_array_get_nth (gva, 1);
+ icc_profile = g_value_dup_string (gv);
+ g_value_unset (gv);
+ }
+ else
+ g_debug ("There are no ICC profiles for the device sane:%s", current_device);
+ g_ptr_array_free (profile_data_array, TRUE);
+
+ return icc_profile;
+}
+
+
+static void
+scanner_page_info_cb (Scanner *scanner, ScanPageInfo *info)
+{
+ Page *page;
+
+ g_debug ("Page is %d pixels wide, %d pixels high, %d bits per pixel",
+ info->width, info->height, info->depth);
+
+ /* Add a new page */
+ page = append_page ();
+ page_set_scan_area (page, info->width, info->height, info->dpi);
+
+ /* Get ICC color profile */
+ /* FIXME: The ICC profile could change */
+ /* FIXME: Don't do a D-bus call for each page, cache color profiles */
+ page_set_color_profile (page, get_profile_for_device (info->device));
+}
+
+
+static void
+scanner_line_cb (Scanner *scanner, ScanLine *line)
+{
+ Page *page;
+
+ page = book_get_page (book, book_get_n_pages (book) - 1);
+ page_parse_scan_line (page, line);
+}
+
+
+static void
+scanner_page_done_cb (Scanner *scanner)
+{
+ Page *page;
+ page = book_get_page (book, book_get_n_pages (book) - 1);
+ page_finish (page);
+}
+
+
+static void
+remove_empty_page ()
+{
+ Page *page;
+
+ page = book_get_page (book, book_get_n_pages (book) - 1);
+
+ /* Remove a failed page */
+ if (page_has_data (page))
+ page_finish (page);
+ else
+ book_delete_page (book, page);
+}
+
+
+static void
+scanner_document_done_cb (Scanner *scanner)
+{
+ remove_empty_page ();
+}
+
+
+static void
+scanner_failed_cb (Scanner *scanner, GError *error)
+{
+ remove_empty_page ();
+ if (!g_error_matches (error, SCANNER_TYPE, SANE_STATUS_CANCELLED)) {
+ ui_show_error (ui,
+ /* Title of error dialog when scan failed */
+ _("Failed to scan"),
+ error->message,
+ TRUE);
+ }
+}
+
+
+static void
+scanner_scanning_changed_cb (Scanner *scanner)
+{
+ ui_set_scanning (ui, scanner_is_scanning (scanner));
+}
+
+
+static void
+scan_cb (SimpleScan *ui, const gchar *device, ScanOptions *options)
+{
+ /* Default filename to use when saving document (and extension will be added, e.g. .jpg) */
+ const gchar *filename_prefix = _("Scanned Document");
+ const gchar *extension;
+ gchar *filename;
+
+ if (options->scan_mode == SCAN_MODE_COLOR)
+ extension = "jpg";
+ else
+ extension = "pdf";
+
+ g_debug ("Requesting scan at %d dpi from device '%s'", options->dpi, device);
+
+ if (!scanner_is_scanning (scanner))
+ append_page ();
+
+ filename = g_strdup_printf ("%s.%s", filename_prefix, extension);
+ ui_set_default_file_name (ui, filename);
+ g_free (filename);
+ scanner_scan (scanner, device, options);
+}
+
+
+static void
+cancel_cb (SimpleScan *ui)
+{
+ scanner_cancel (scanner);
+}
+
+
+static gboolean
+save_book_by_extension (GFile *file, GError **error)
+{
+ gboolean result;
+ gchar *uri, *uri_lower;
+
+ uri = g_file_get_uri (file);
+ uri_lower = g_utf8_strdown (uri, -1);
+ if (g_str_has_suffix (uri_lower, ".pdf"))
+ result = book_save (book, "pdf", file, error);
+ else if (g_str_has_suffix (uri_lower, ".ps"))
+ result = book_save (book, "ps", file, error);
+ else if (g_str_has_suffix (uri_lower, ".png"))
+ result = book_save (book, "png", file, error);
+ else if (g_str_has_suffix (uri_lower, ".tif") || g_str_has_suffix (uri_lower, ".tiff"))
+ result = book_save (book, "tiff", file, error);
+ else
+ result = book_save (book, "jpeg", file, error);
+
+ g_free (uri);
+ g_free (uri_lower);
+
+ return result;
+}
+
+
+static void
+save_cb (SimpleScan *ui, const gchar *uri)
+{
+ GError *error = NULL;
+ GFile *file;
+
+ g_debug ("Saving to '%s'", uri);
+
+ file = g_file_new_for_uri (uri);
+ if (!save_book_by_extension (file, &error)) {
+ g_warning ("Error saving file: %s", error->message);
+ ui_show_error (ui,
+ /* Title of error dialog when save failed */
+ _("Failed to save file"),
+ error->message,
+ FALSE);
+ g_error_free (error);
+ }
+ g_object_unref (file);
+}
+
+
+static gchar *
+get_temporary_filename (const gchar *prefix, const gchar *extension)
+{
+ gint fd;
+ gchar *filename, *path;
+ GError *error = NULL;
+
+ /* NOTE: I'm not sure if this is a 100% safe strategy to use g_file_open_tmp(), close and
+ * use the filename but it appears to work in practise */
+
+ filename = g_strdup_printf ("%s-XXXXXX.%s", prefix, extension);
+ fd = g_file_open_tmp (filename, &path, &error);
+ g_free (filename);
+ if (fd < 0) {
+ g_warning ("Error saving email attachment: %s", error->message);
+ g_clear_error (&error);
+ return NULL;
+ }
+ close (fd);
+
+ return path;
+}
+
+
+static void
+email_cb (SimpleScan *ui, const gchar *profile)
+{
+ gboolean saved = FALSE;
+ GError *error = NULL;
+ GString *command_line;
+
+ command_line = g_string_new ("xdg-email");
+
+ /* Save text files as PDFs */
+ if (strcmp (profile, "text") == 0) {
+ gchar *path;
+
+ /* Open a temporary file */
+ path = get_temporary_filename ("scanned-document", "pdf");
+ if (path) {
+ GFile *file;
+
+ file = g_file_new_for_path (path);
+ saved = book_save (book, "pdf", file, &error);
+ g_string_append_printf (command_line, " --attach %s", path);
+ g_free (path);
+ g_object_unref (file);
+ }
+ }
+ else {
+ gint i;
+
+ for (i = 0; i < book_get_n_pages (book); i++) {
+ gchar *path;
+ GFile *file;
+
+ path = get_temporary_filename ("scanned-document", "jpg");
+ if (!path) {
+ saved = FALSE;
+ break;
+ }
+
+ file = g_file_new_for_path (path);
+ saved = page_save (book_get_page (book, i), "jpeg", file, &error);
+ g_string_append_printf (command_line, " --attach %s", path);
+ g_free (path);
+ g_object_unref (file);
+
+ if (!saved)
+ break;
+ }
+ }
+
+ if (saved) {
+ g_debug ("Launchind email client: %s", command_line->str);
+ g_spawn_command_line_async (command_line->str, &error);
+
+ if (error) {
+ g_warning ("Unable to start email: %s", error->message);
+ g_clear_error (&error);
+ }
+ }
+ else {
+ g_warning ("Unable to save email file: %s", error->message);
+ g_clear_error (&error);
+ }
+
+ g_string_free (command_line, TRUE);
+}
+
+
+static void
+quit_cb (SimpleScan *ui)
+{
+ g_object_unref (book);
+ g_object_unref (ui);
+ g_object_unref (udev_client);
+ scanner_free (scanner);
+ gtk_main_quit ();
+}
+
+
+static void
+version()
+{
+ /* NOTE: Is not translated so can be easily parsed */
+ fprintf(stderr, "%1$s %2$s\n", SIMPLE_SCAN_BINARY, VERSION);
+}
+
+
+static void
+usage(int show_gtk)
+{
+ fprintf(stderr,
+ /* Description on how to use simple-scan displayed on command-line */
+ _("Usage:\n"
+ " %s [DEVICE...] - Scanning utility"), SIMPLE_SCAN_BINARY);
+
+ fprintf(stderr,
+ "\n\n");
+
+ fprintf(stderr,
+ /* Description on how to use simple-scan displayed on command-line */
+ _("Help Options:\n"
+ " -d, --debug Print debugging messages\n"
+ " -v, --version Show release version\n"
+ " -h, --help Show help options\n"
+ " --help-all Show all help options\n"
+ " --help-gtk Show GTK+ options"));
+ fprintf(stderr,
+ "\n\n");
+
+ if (show_gtk) {
+ fprintf(stderr,
+ /* Description on simple-scan command-line GTK+ options displayed on command-line */
+ _("GTK+ Options:\n"
+ " --class=CLASS Program class as used by the window manager\n"
+ " --name=NAME Program name as used by the window manager\n"
+ " --screen=SCREEN X screen to use\n"
+ " --sync Make X calls synchronous\n"
+ " --gtk-module=MODULES Load additional GTK+ modules\n"
+ " --g-fatal-warnings Make all warnings fatal"));
+ fprintf(stderr,
+ "\n\n");
+ }
+}
+
+
+static void
+log_cb (const gchar *log_domain, GLogLevelFlags log_level,
+ const gchar *message, gpointer data)
+{
+ /* Log everything to a file */
+ if (log_file) {
+ const gchar *prefix;
+
+ switch (log_level & G_LOG_LEVEL_MASK) {
+ case G_LOG_LEVEL_ERROR:
+ prefix = "ERROR:";
+ break;
+ case G_LOG_LEVEL_CRITICAL:
+ prefix = "CRITICAL:";
+ break;
+ case G_LOG_LEVEL_WARNING:
+ prefix = "WARNING:";
+ break;
+ case G_LOG_LEVEL_MESSAGE:
+ prefix = "MESSAGE:";
+ break;
+ case G_LOG_LEVEL_INFO:
+ prefix = "INFO:";
+ break;
+ case G_LOG_LEVEL_DEBUG:
+ prefix = "DEBUG:";
+ break;
+ default:
+ prefix = "LOG:";
+ break;
+ }
+
+ fprintf (log_file, "[%+.2fs] %s %s\n", g_timer_elapsed (log_timer, NULL), prefix, message);
+ }
+
+ /* Only show debug if requested */
+ if (log_level & G_LOG_LEVEL_DEBUG) {
+ if (debug)
+ g_log_default_handler (log_domain, log_level, message, data);
+ }
+ else
+ g_log_default_handler (log_domain, log_level, message, data);
+}
+
+
+static void
+get_options (int argc, char **argv)
+{
+ int i;
+
+ for (i = 1; i < argc; i++) {
+ char *arg = argv[i];
+
+ if (strcmp (arg, "-d") == 0 ||
+ strcmp (arg, "--debug") == 0) {
+ debug = TRUE;
+ }
+ else if (strcmp (arg, "-v") == 0 ||
+ strcmp (arg, "--version") == 0) {
+ version ();
+ exit (0);
+ }
+ else if (strcmp (arg, "-h") == 0 ||
+ strcmp (arg, "--help") == 0) {
+ usage (FALSE);
+ exit (0);
+ }
+ else if (strcmp (arg, "--help-all") == 0 ||
+ strcmp (arg, "--help-gtk") == 0) {
+ usage (TRUE);
+ exit (0);
+ }
+ else {
+ if (default_device) {
+ fprintf (stderr, "Unknown argument: '%s'\n", arg);
+ exit (1);
+ }
+ default_device = arg;
+ }
+ }
+}
+
+
+static void
+on_uevent (GUdevClient *client, const gchar *action, GUdevDevice *device)
+{
+ scanner_redetect (scanner);
+}
+
+
+int
+main (int argc, char **argv)
+{
+ const char *udev_subsystems[] = { "usb", NULL };
+ gchar *path;
+
+ g_thread_init (NULL);
+
+ /* Log to a file */
+ log_timer = g_timer_new ();
+ path = g_build_filename (g_get_user_cache_dir (), "simple-scan", NULL);
+ g_mkdir_with_parents (path, 0700);
+ g_free (path);
+ path = g_build_filename (g_get_user_cache_dir (), "simple-scan", "simple-scan.log", NULL);
+ log_file = fopen (path, "w");
+ g_free (path);
+ g_log_set_default_handler (log_cb, NULL);
+
+ bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ gtk_init (&argc, &argv);
+
+ get_options (argc, argv);
+
+ g_debug ("Starting Simple Scan %s, PID=%i", VERSION, getpid ());
+
+ ui = ui_new ();
+ book = ui_get_book (ui);
+ g_signal_connect (ui, "start-scan", G_CALLBACK (scan_cb), NULL);
+ g_signal_connect (ui, "stop-scan", G_CALLBACK (cancel_cb), NULL);
+ g_signal_connect (ui, "save", G_CALLBACK (save_cb), NULL);
+ g_signal_connect (ui, "email", G_CALLBACK (email_cb), NULL);
+ g_signal_connect (ui, "quit", G_CALLBACK (quit_cb), NULL);
+
+ scanner = scanner_new ();
+ g_signal_connect (G_OBJECT (scanner), "update-devices", G_CALLBACK (update_scan_devices_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "authorize", G_CALLBACK (authorize_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "expect-page", G_CALLBACK (scanner_new_page_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "got-page-info", G_CALLBACK (scanner_page_info_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "got-line", G_CALLBACK (scanner_line_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "page-done", G_CALLBACK (scanner_page_done_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "document-done", G_CALLBACK (scanner_document_done_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "scan-failed", G_CALLBACK (scanner_failed_cb), NULL);
+ g_signal_connect (G_OBJECT (scanner), "scanning-changed", G_CALLBACK (scanner_scanning_changed_cb), NULL);
+
+ udev_client = g_udev_client_new (udev_subsystems);
+ g_signal_connect (udev_client, "uevent", G_CALLBACK (on_uevent), NULL);
+
+ if (default_device)
+ ui_set_selected_device (ui, default_device);
+
+ ui_start (ui);
+ scanner_start (scanner);
+
+ gtk_main ();
+
+ return 0;
+}
diff --git a/src/ui.c b/src/ui.c
new file mode 100644
index 0000000..92e83c7
--- /dev/null
+++ b/src/ui.c
@@ -0,0 +1,1648 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gconf/gconf-client.h>
+#include <math.h>
+#include <unistd.h> // TEMP: Needed for close() in get_temporary_filename()
+
+#include "ui.h"
+#include "book-view.h"
+
+
+#define DEFAULT_TEXT_DPI 150
+#define DEFAULT_PHOTO_DPI 300
+
+
+enum {
+ START_SCAN,
+ STOP_SCAN,
+ SAVE,
+ EMAIL,
+ QUIT,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+
+struct SimpleScanPrivate
+{
+ GConfClient *client;
+
+ GtkBuilder *builder;
+
+ GtkWidget *window;
+ GtkWidget *preview_box, *preview_area, *preview_scroll;
+ GtkWidget *page_delete_menuitem, *crop_rotate_menuitem;
+ GtkWidget *stop_menuitem, *stop_toolbutton;
+
+ GtkWidget *text_toolbar_menuitem, *text_menu_menuitem;
+ GtkWidget *photo_toolbar_menuitem, *photo_menu_menuitem;
+
+ GtkWidget *authorize_dialog;
+ GtkWidget *authorize_label;
+ GtkWidget *username_entry, *password_entry;
+
+ GtkWidget *preferences_dialog;
+ GtkWidget *device_combo, *text_dpi_combo, *photo_dpi_combo, *page_side_combo, *paper_size_combo;
+ GtkTreeModel *device_model, *text_dpi_model, *photo_dpi_model, *page_side_model, *paper_size_model;
+ gboolean setting_devices, user_selected_device;
+
+ Book *book;
+ BookView *book_view;
+ gboolean updating_page_menu;
+ gint default_page_width, default_page_height, default_page_dpi;
+ Orientation default_page_orientation;
+
+ gboolean have_device_list;
+
+ gchar *document_hint;
+
+ gchar *default_file_name;
+ gboolean scanning;
+
+ gint window_width, window_height;
+ gboolean window_is_maximized;
+};
+
+G_DEFINE_TYPE (SimpleScan, ui, G_TYPE_OBJECT);
+
+static struct
+{
+ const gchar *key;
+ Orientation orientation;
+} orientation_keys[] =
+{
+ { "top-to-bottom", TOP_TO_BOTTOM },
+ { "bottom-to-top", BOTTOM_TO_TOP },
+ { "left-to-right", LEFT_TO_RIGHT },
+ { "right-to-left", RIGHT_TO_LEFT },
+ { NULL, 0 }
+};
+
+
+static gboolean
+find_scan_device (SimpleScan *ui, const char *device, GtkTreeIter *iter)
+{
+ gboolean have_iter = FALSE;
+
+ if (gtk_tree_model_get_iter_first (ui->priv->device_model, iter)) {
+ do {
+ gchar *d;
+ gtk_tree_model_get (ui->priv->device_model, iter, 0, &d, -1);
+ if (strcmp (d, device) == 0)
+ have_iter = TRUE;
+ g_free (d);
+ } while (!have_iter && gtk_tree_model_iter_next (ui->priv->device_model, iter));
+ }
+
+ return have_iter;
+}
+
+
+void
+ui_set_default_file_name (SimpleScan *ui, const gchar *default_file_name)
+{
+ g_free (ui->priv->default_file_name);
+ ui->priv->default_file_name = g_strdup (default_file_name);
+}
+
+
+void
+ui_authorize (SimpleScan *ui, const gchar *resource, gchar **username, gchar **password)
+{
+ GString *description;
+
+ description = g_string_new ("");
+ g_string_printf (description,
+ /* Label in authorization dialog. '%s' is replaced with the name of the resource requesting authorization */
+ _("Username and password required to access '%s'"),
+ resource);
+
+ gtk_entry_set_text (GTK_ENTRY (ui->priv->username_entry), *username ? *username : "");
+ gtk_entry_set_text (GTK_ENTRY (ui->priv->password_entry), "");
+ gtk_label_set_text (GTK_LABEL (ui->priv->authorize_label), description->str);
+ g_string_free (description, TRUE);
+
+ gtk_widget_show (ui->priv->authorize_dialog);
+ gtk_dialog_run (GTK_DIALOG (ui->priv->authorize_dialog));
+ gtk_widget_hide (ui->priv->authorize_dialog);
+
+ *username = g_strdup (gtk_entry_get_text (GTK_ENTRY (ui->priv->username_entry)));
+ *password = g_strdup (gtk_entry_get_text (GTK_ENTRY (ui->priv->password_entry)));
+}
+
+
+void device_combo_changed_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+device_combo_changed_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (ui->priv->setting_devices)
+ return;
+ ui->priv->user_selected_device = TRUE;
+}
+
+
+void
+ui_set_scan_devices (SimpleScan *ui, GList *devices)
+{
+ GList *d;
+ gboolean have_selection = FALSE;
+ gint index;
+ GtkTreeIter iter;
+
+ ui->priv->setting_devices = TRUE;
+
+ /* If the user hasn't chosen a scanner choose the best available one */
+ if (ui->priv->user_selected_device)
+ have_selection = gtk_combo_box_get_active (GTK_COMBO_BOX (ui->priv->device_combo)) >= 0;
+
+ /* Add new devices */
+ index = 0;
+ for (d = devices; d; d = d->next) {
+ ScanDevice *device = (ScanDevice *) d->data;
+ gint n_delete = -1;
+
+ /* Find if already exists */
+ if (gtk_tree_model_iter_nth_child (ui->priv->device_model, &iter, NULL, index)) {
+ gint i = 0;
+ do {
+ gchar *name;
+ gboolean matched;
+
+ gtk_tree_model_get (ui->priv->device_model, &iter, 0, &name, -1);
+ matched = strcmp (name, device->name) == 0;
+ g_free (name);
+
+ if (matched) {
+ n_delete = i;
+ break;
+ }
+ i++;
+ } while (gtk_tree_model_iter_next (ui->priv->device_model, &iter));
+ }
+
+ /* If exists, remove elements up to this one */
+ if (n_delete >= 0) {
+ gint i;
+
+ for (i = 0; i < n_delete; i++) {
+ gtk_tree_model_iter_nth_child (ui->priv->device_model, &iter, NULL, index);
+ gtk_list_store_remove (GTK_LIST_STORE (ui->priv->device_model), &iter);
+ }
+ }
+ else {
+ gtk_list_store_insert (GTK_LIST_STORE (ui->priv->device_model), &iter, index);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->device_model), &iter, 0, device->name, 1, device->label, -1);
+ }
+ index++;
+ }
+
+ /* Remove any remaining devices */
+ while (gtk_tree_model_iter_nth_child (ui->priv->device_model, &iter, NULL, index))
+ gtk_list_store_remove (GTK_LIST_STORE (ui->priv->device_model), &iter);
+
+ /* Select the first available device */
+ if (!have_selection && devices != NULL)
+ gtk_combo_box_set_active (GTK_COMBO_BOX (ui->priv->device_combo), 0);
+
+ ui->priv->setting_devices = FALSE;
+
+ if (!ui->priv->have_device_list) {
+ ui->priv->have_device_list = TRUE;
+
+ if (!devices) {
+ ui_show_error (ui,
+ /* Warning displayed when no scanners are detected */
+ _("No scanners detected"),
+ /* Hint to user on why there are no scanners detected */
+ _("Please check your scanner is connected and powered on"),
+ FALSE);
+ }
+ }
+}
+
+
+static gchar *
+get_selected_device (SimpleScan *ui)
+{
+ GtkTreeIter iter;
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ui->priv->device_combo), &iter)) {
+ gchar *device;
+ gtk_tree_model_get (ui->priv->device_model, &iter, 0, &device, -1);
+ return device;
+ }
+
+ return NULL;
+}
+
+
+void
+ui_set_selected_device (SimpleScan *ui, const gchar *device)
+{
+ GtkTreeIter iter;
+
+ /* If doesn't exist add with label set to device name */
+ if (!find_scan_device (ui, device, &iter)) {
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->device_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->device_model), &iter, 0, device, 1, device, -1);
+ }
+
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ui->priv->device_combo), &iter);
+}
+
+
+static void
+add_default_page (SimpleScan *ui)
+{
+ Page *page;
+
+ page = book_append_page (ui->priv->book,
+ ui->priv->default_page_width,
+ ui->priv->default_page_height,
+ ui->priv->default_page_dpi,
+ ui->priv->default_page_orientation);
+ book_view_select_page (ui->priv->book_view, page);
+}
+
+
+void new_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+new_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ book_clear (ui->priv->book);
+ add_default_page (ui);
+}
+
+
+static void
+set_document_hint (SimpleScan *ui, const gchar *document_hint)
+{
+ g_free (ui->priv->document_hint);
+ ui->priv->document_hint = g_strdup (document_hint);
+
+ if (strcmp (document_hint, "text") == 0) {
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (ui->priv->text_toolbar_menuitem), TRUE);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (ui->priv->text_menu_menuitem), TRUE);
+ }
+ else if (strcmp (document_hint, "photo") == 0) {
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (ui->priv->photo_toolbar_menuitem), TRUE);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (ui->priv->photo_menu_menuitem), TRUE);
+ }
+}
+
+
+void text_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+text_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_document_hint (ui, "text");
+}
+
+
+void photo_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+photo_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_document_hint (ui, "photo");
+}
+
+
+static void
+set_page_side (SimpleScan *ui, const gchar *document_hint)
+{
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_get_iter_first (ui->priv->page_side_model, &iter)) {
+ do {
+ gchar *d;
+ gboolean have_match;
+
+ gtk_tree_model_get (ui->priv->page_side_model, &iter, 0, &d, -1);
+ have_match = strcmp (d, document_hint) == 0;
+ g_free (d);
+
+ if (have_match) {
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ui->priv->page_side_combo), &iter);
+ return;
+ }
+ } while (gtk_tree_model_iter_next (ui->priv->page_side_model, &iter));
+ }
+}
+
+
+static void
+set_paper_size (SimpleScan *ui, gint width, gint height)
+{
+ GtkTreeIter iter;
+ gboolean have_iter;
+
+ for (have_iter = gtk_tree_model_get_iter_first (ui->priv->paper_size_model, &iter);
+ have_iter;
+ have_iter = gtk_tree_model_iter_next (ui->priv->paper_size_model, &iter)) {
+ gint w, h;
+
+ gtk_tree_model_get (ui->priv->paper_size_model, &iter, 0, &w, 1, &h, -1);
+ if (w == width && h == height)
+ break;
+ }
+
+ if (!have_iter)
+ have_iter = gtk_tree_model_get_iter_first (ui->priv->paper_size_model, &iter);
+ if (have_iter)
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ui->priv->paper_size_combo), &iter);
+}
+
+
+static gint
+get_text_dpi (SimpleScan *ui)
+{
+ GtkTreeIter iter;
+ gint dpi = DEFAULT_TEXT_DPI;
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ui->priv->text_dpi_combo), &iter))
+ gtk_tree_model_get (ui->priv->text_dpi_model, &iter, 0, &dpi, -1);
+
+ return dpi;
+}
+
+
+static gint
+get_photo_dpi (SimpleScan *ui)
+{
+ GtkTreeIter iter;
+ gint dpi = DEFAULT_PHOTO_DPI;
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ui->priv->photo_dpi_combo), &iter))
+ gtk_tree_model_get (ui->priv->photo_dpi_model, &iter, 0, &dpi, -1);
+
+ return dpi;
+}
+
+
+static gchar *
+get_page_side (SimpleScan *ui)
+{
+ GtkTreeIter iter;
+ gchar *mode = NULL;
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ui->priv->page_side_combo), &iter))
+ gtk_tree_model_get (ui->priv->page_side_model, &iter, 0, &mode, -1);
+
+ return mode;
+}
+
+
+static gboolean
+get_paper_size (SimpleScan *ui, gint *width, gint *height)
+{
+ GtkTreeIter iter;
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (ui->priv->paper_size_combo), &iter)) {
+ gtk_tree_model_get (ui->priv->paper_size_model, &iter, 0, width, 1, height, -1);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+static ScanOptions *
+get_scan_options (SimpleScan *ui)
+{
+ struct {
+ const gchar *name;
+ ScanMode mode;
+ } profiles[] =
+ {
+ { "text", SCAN_MODE_LINEART },
+ { "photo", SCAN_MODE_COLOR },
+ { NULL, SCAN_MODE_COLOR }
+ };
+ gint i;
+ ScanOptions *options;
+
+ /* Find this profile */
+ // FIXME: Move this into scan-profile.c
+ for (i = 0; profiles[i].name && strcmp (profiles[i].name, ui->priv->document_hint) != 0; i++);
+
+ options = g_malloc0 (sizeof (ScanOptions));
+ options->scan_mode = profiles[i].mode;
+ options->depth = 8;
+ if (options->scan_mode == SCAN_MODE_COLOR)
+ options->dpi = get_photo_dpi (ui);
+ else
+ options->dpi = get_text_dpi (ui);
+ get_paper_size (ui, &options->paper_width, &options->paper_height);
+
+ return options;
+}
+
+
+void scan_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+scan_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ gchar *device;
+ ScanOptions *options;
+
+ device = get_selected_device (ui);
+
+ options = get_scan_options (ui);
+ options->type = SCAN_SINGLE;
+ g_signal_emit (G_OBJECT (ui), signals[START_SCAN], 0, device, options);
+ g_free (device);
+ g_free (options);
+}
+
+
+void stop_scan_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+stop_scan_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ g_signal_emit (G_OBJECT (ui), signals[STOP_SCAN], 0);
+}
+
+
+void continuous_scan_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+continuous_scan_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (ui->priv->scanning) {
+ g_signal_emit (G_OBJECT (ui), signals[STOP_SCAN], 0);
+ } else {
+ gchar *device, *side;
+ ScanOptions *options;
+
+ device = get_selected_device (ui);
+ options = get_scan_options (ui);
+ side = get_page_side (ui);
+ if (strcmp (side, "front") == 0)
+ options->type = SCAN_ADF_FRONT;
+ else if (strcmp (side, "back") == 0)
+ options->type = SCAN_ADF_BACK;
+ else
+ options->type = SCAN_ADF_BOTH;
+
+ g_signal_emit (G_OBJECT (ui), signals[START_SCAN], 0, device, options);
+ g_free (device);
+ g_free (side);
+ g_free (options);
+ }
+}
+
+
+void preferences_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+preferences_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ gtk_window_present (GTK_WINDOW (ui->priv->preferences_dialog));
+}
+
+
+gboolean preferences_dialog_delete_event_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+gboolean
+preferences_dialog_delete_event_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ return TRUE;
+}
+
+
+void preferences_dialog_response_cb (GtkWidget *widget, gint response_id, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+preferences_dialog_response_cb (GtkWidget *widget, gint response_id, SimpleScan *ui)
+{
+ gtk_widget_hide (ui->priv->preferences_dialog);
+}
+
+
+static void
+page_selected_cb (BookView *view, Page *page, SimpleScan *ui)
+{
+ char *name = NULL;
+
+ if (page == NULL)
+ return;
+
+ ui->priv->updating_page_menu = TRUE;
+
+ if (page_has_crop (page)) {
+ char *crop_name;
+
+ // FIXME: Make more generic, move into page-size.c and reuse
+ crop_name = page_get_named_crop (page);
+ if (crop_name) {
+ if (strcmp (crop_name, "A4") == 0)
+ name = "a4_menuitem";
+ else if (strcmp (crop_name, "A5") == 0)
+ name = "a5_menuitem";
+ else if (strcmp (crop_name, "A6") == 0)
+ name = "a6_menuitem";
+ else if (strcmp (crop_name, "letter") == 0)
+ name = "letter_menuitem";
+ else if (strcmp (crop_name, "legal") == 0)
+ name = "legal_menuitem";
+ else if (strcmp (crop_name, "4x6") == 0)
+ name = "4x6_menuitem";
+ g_free (crop_name);
+ }
+ else
+ name = "custom_crop_menuitem";
+ }
+ else
+ name = "no_crop_menuitem";
+
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (ui->priv->builder, name)), TRUE);
+ gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (gtk_builder_get_object (ui->priv->builder, "crop_toolbutton")), page_has_crop (page));
+
+ ui->priv->updating_page_menu = FALSE;
+}
+
+
+// FIXME: Duplicated from simple-scan.c
+static gchar *
+get_temporary_filename (const gchar *prefix, const gchar *extension)
+{
+ gint fd;
+ gchar *filename, *path;
+ GError *error = NULL;
+
+ /* NOTE: I'm not sure if this is a 100% safe strategy to use g_file_open_tmp(), close and
+ * use the filename but it appears to work in practise */
+
+ filename = g_strdup_printf ("%s-XXXXXX.%s", prefix, extension);
+ fd = g_file_open_tmp (filename, &path, &error);
+ g_free (filename);
+ if (fd < 0) {
+ g_warning ("Error saving page for viewing: %s", error->message);
+ g_clear_error (&error);
+ return NULL;
+ }
+ close (fd);
+
+ return path;
+}
+
+
+static void
+show_page_cb (BookView *view, Page *page, SimpleScan *ui)
+{
+ gchar *path;
+ GFile *file;
+ GdkScreen *screen;
+ GError *error = NULL;
+
+ path = get_temporary_filename ("scanned-page", "tiff");
+ if (!path)
+ return;
+ file = g_file_new_for_path (path);
+ g_free (path);
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (ui->priv->window));
+
+ if (page_save (page, "tiff", file, &error)) {
+ gchar *uri = g_file_get_uri (file);
+ gtk_show_uri (screen, uri, gtk_get_current_event_time (), &error);
+ g_free (uri);
+ }
+
+ g_object_unref (file);
+
+ if (error) {
+ ui_show_error (ui,
+ /* Error message display when unable to preview image */
+ _("Unable to open image preview application"),
+ error->message,
+ FALSE);
+ g_clear_error (&error);
+ }
+}
+
+
+void rotate_left_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+rotate_left_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ Page *page;
+
+ if (ui->priv->updating_page_menu)
+ return;
+ page = book_view_get_selected (ui->priv->book_view);
+ page_rotate_left (page);
+}
+
+
+void rotate_right_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+rotate_right_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ Page *page;
+
+ if (ui->priv->updating_page_menu)
+ return;
+ page = book_view_get_selected (ui->priv->book_view);
+ page_rotate_right (page);
+}
+
+
+static void
+set_crop (SimpleScan *ui, const gchar *crop_name)
+{
+ Page *page;
+
+ gtk_widget_set_sensitive (ui->priv->crop_rotate_menuitem, crop_name != NULL);
+
+ if (ui->priv->updating_page_menu)
+ return;
+
+ page = book_view_get_selected (ui->priv->book_view);
+ if (!page)
+ return;
+
+ if (!crop_name) {
+ page_set_no_crop (page);
+ return;
+ }
+
+ if (strcmp (crop_name, "custom") == 0) {
+ gint width, height, crop_width, crop_height;
+
+ width = page_get_width (page);
+ height = page_get_height (page);
+
+ crop_width = (int) (width * 0.8 + 0.5);
+ crop_height = (int) (height * 0.8 + 0.5);
+ page_set_custom_crop (page, crop_width, crop_height);
+ page_move_crop (page, (width - crop_width) / 2, (height - crop_height) / 2);
+
+ return;
+ }
+
+ page_set_named_crop (page, crop_name);
+}
+
+
+void no_crop_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+no_crop_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, NULL);
+}
+
+
+void custom_crop_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+custom_crop_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "custom");
+}
+
+void crop_toolbutton_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+crop_toolbutton_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (ui->priv->updating_page_menu)
+ return;
+
+ if (gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (widget)))
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (ui->priv->builder, "custom_crop_menuitem")), TRUE);
+ else
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (ui->priv->builder, "no_crop_menuitem")), TRUE);
+}
+
+
+void four_by_six_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+four_by_six_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "4x6");
+}
+
+
+void legal_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+legal_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "legal");
+}
+
+
+void letter_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+letter_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "letter");
+}
+
+
+void a6_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+a6_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "A6");
+}
+
+
+void a5_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+a5_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "A5");
+}
+
+
+void a4_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+a4_menuitem_toggled_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ set_crop (ui, "A4");
+}
+
+
+void crop_rotate_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+crop_rotate_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ Page *page;
+
+ page = book_view_get_selected (ui->priv->book_view);
+ if (!page)
+ return;
+
+ page_rotate_crop (page);
+}
+
+
+void page_delete_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+page_delete_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ book_delete_page (book_view_get_book (ui->priv->book_view),
+ book_view_get_selected (ui->priv->book_view));
+}
+
+
+static void
+on_file_type_changed (GtkTreeSelection *selection, GtkWidget *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *path, *filename, *extension, *new_filename;
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+
+ gtk_tree_model_get (model, &iter, 1, &extension, -1);
+ path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ filename = g_path_get_basename (path);
+
+ /* Replace extension */
+ if (g_strrstr (filename, "."))
+ new_filename = g_strdup_printf ("%.*s%s", (int)(g_strrstr (filename, ".") - filename), filename, extension);
+ else
+ new_filename = g_strdup_printf ("%s%s", filename, extension);
+ gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), new_filename);
+
+ g_free (path);
+ g_free (filename);
+ g_free (new_filename);
+ g_free (extension);
+}
+
+
+void save_file_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+save_file_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ GtkWidget *dialog;
+ gint response;
+ GtkFileFilter *filter;
+ GtkWidget *expander, *file_type_view;
+ GtkListStore *file_type_store;
+ GtkTreeIter iter;
+ GtkTreeViewColumn *column;
+ const gchar *extension;
+ gchar *directory;
+ gint i;
+
+ struct
+ {
+ gchar *label, *extension;
+ } file_types[] =
+ {
+ /* Save dialog: Label for saving in PDF format */
+ { _("PDF (multi-page document)"), ".pdf" },
+ /* Save dialog: Label for saving in JPEG format */
+ { _("JPEG (compressed)"), ".jpg" },
+ /* Save dialog: Label for saving in PNG format */
+ { _("PNG (lossless)"), ".png" },
+ { NULL, NULL }
+ };
+
+ /* Get directory to save to */
+ directory = gconf_client_get_string (ui->priv->client, GCONF_DIR "/save_directory", NULL);
+ if (!directory || directory[0] == '\0') {
+ g_free (directory);
+ directory = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS));
+ }
+
+ dialog = gtk_file_chooser_dialog_new (/* Save dialog: Dialog title */
+ _("Save As..."),
+ GTK_WINDOW (ui->priv->window),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
+ gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), FALSE);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), directory);
+ gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), ui->priv->default_file_name);
+ g_free (directory);
+
+ /* Filter to only show images by default */
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter,
+ /* Save dialog: Filter name to show only image files */
+ _("Image Files"));
+ gtk_file_filter_add_pixbuf_formats (filter);
+ gtk_file_filter_add_mime_type (filter, "application/pdf");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter,
+ /* Save dialog: Filter name to show all files */
+ _("All Files"));
+ gtk_file_filter_add_pattern (filter, "*");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
+
+ expander = gtk_expander_new_with_mnemonic (/* */
+ _("Select File _Type"));
+ gtk_expander_set_spacing (GTK_EXPANDER (expander), 5);
+ gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), expander);
+
+ extension = strstr (ui->priv->default_file_name, ".");
+ if (!extension)
+ extension = "";
+
+ file_type_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+ for (i = 0; file_types[i].label; i++) {
+ gtk_list_store_append (file_type_store, &iter);
+ gtk_list_store_set (file_type_store, &iter, 0, file_types[i].label, 1, file_types[i].extension, -1);
+ }
+
+ file_type_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (file_type_store));
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (file_type_view), FALSE);
+ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (file_type_view), TRUE);
+ column = gtk_tree_view_column_new_with_attributes ("",
+ gtk_cell_renderer_text_new (),
+ "text", 0, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (file_type_view), column);
+ gtk_container_add (GTK_CONTAINER (expander), file_type_view);
+
+ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (file_type_store), &iter)) {
+ do {
+ gchar *e;
+ gtk_tree_model_get (GTK_TREE_MODEL (file_type_store), &iter, 1, &e, -1);
+ if (strcmp (extension, e) == 0)
+ gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (file_type_view)), &iter);
+ g_free (e);
+ } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (file_type_store), &iter));
+ }
+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (file_type_view)),
+ "changed",
+ G_CALLBACK (on_file_type_changed),
+ dialog);
+
+ gtk_widget_show_all (expander);
+
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (response == GTK_RESPONSE_ACCEPT) {
+ gchar *uri;
+
+ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
+ g_signal_emit (G_OBJECT (ui), signals[SAVE], 0, uri);
+
+ g_free (uri);
+ }
+
+ gconf_client_set_string (ui->priv->client, GCONF_DIR "/save_directory",
+ gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog)),
+ NULL);
+
+ gtk_widget_destroy (dialog);
+}
+
+
+static void
+draw_page (GtkPrintOperation *operation,
+ GtkPrintContext *print_context,
+ gint page_number,
+ SimpleScan *ui)
+{
+ cairo_t *context;
+ Page *page;
+ GdkPixbuf *image;
+ gboolean is_landscape = FALSE;
+
+ context = gtk_print_context_get_cairo_context (print_context);
+
+ page = book_get_page (ui->priv->book, page_number);
+
+ /* Rotate to same aspect */
+ if (gtk_print_context_get_width (print_context) > gtk_print_context_get_height (print_context))
+ is_landscape = TRUE;
+ if (page_is_landscape (page) != is_landscape) {
+ cairo_translate (context, gtk_print_context_get_width (print_context), 0);
+ cairo_rotate (context, M_PI_2);
+ }
+
+ cairo_scale (context,
+ gtk_print_context_get_dpi_x (print_context) / page_get_dpi (page),
+ gtk_print_context_get_dpi_y (print_context) / page_get_dpi (page));
+
+ image = page_get_cropped_image (page);
+ gdk_cairo_set_source_pixbuf (context, image, 0, 0);
+ cairo_paint (context);
+
+ g_object_unref (image);
+}
+
+
+void email_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+email_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ g_signal_emit (G_OBJECT (ui), signals[EMAIL], 0, ui->priv->document_hint);
+}
+
+
+void print_button_clicked_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+print_button_clicked_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ GtkPrintOperation *print;
+ GtkPrintOperationResult result;
+ GError *error = NULL;
+
+ print = gtk_print_operation_new ();
+ gtk_print_operation_set_n_pages (print, book_get_n_pages (ui->priv->book));
+ g_signal_connect (print, "draw-page", G_CALLBACK (draw_page), ui);
+
+ result = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
+ GTK_WINDOW (ui->priv->window), &error);
+
+ g_object_unref (print);
+}
+
+
+void help_contents_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+help_contents_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ GdkScreen *screen;
+ GError *error = NULL;
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (ui->priv->window));
+ gtk_show_uri (screen, "ghelp:simple-scan", gtk_get_current_event_time (), &error);
+
+ if (error)
+ {
+ ui_show_error (ui,
+ /* Error message displayed when unable to launch help browser */
+ _("Unable to open help file"),
+ error->message,
+ FALSE);
+ g_clear_error (&error);
+ }
+}
+
+
+void about_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+about_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ const gchar *authors[] = { "Robert Ancell <robert.ancell@canonical.com>", NULL };
+
+ /* The license this software is under (GPL3+) */
+ const char *license = _("This program is free software: you can redistribute it and/or modify\n"
+ "it under the terms of the GNU General Public License as published by\n"
+ "the Free Software Foundation, either version 3 of the License, or\n"
+ "(at your option) any later version.\n"
+ "\n"
+ "This program is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ "GNU General Public License for more details.\n"
+ "\n"
+ "You should have received a copy of the GNU General Public License\n"
+ "along with this program. If not, see <http://www.gnu.org/licenses/>.");
+
+ /* Title of about dialog */
+ const char *title = _("About Simple Scan");
+
+ /* Description of program */
+ const char *description = _("Simple document scanning tool");
+
+ gtk_show_about_dialog (GTK_WINDOW (ui->priv->window),
+ "title", title,
+ "program-name", "Simple Scan",
+ "version", VERSION,
+ "comments", description,
+ "logo-icon-name", "scanner",
+ "authors", authors,
+ "translator-credits", _("translator-credits"),
+ "website", "https://launchpad.net/simple-scan",
+ "copyright", "Copyright © 2009 Canonical Ltd.",
+ "license", license,
+ "wrap-license", TRUE,
+ NULL);
+}
+
+
+static void
+quit (SimpleScan *ui)
+{
+ char *device;
+ gint paper_width = 0, paper_height = 0;
+ gint i;
+
+ // FIXME: Warn if document with unsaved changes
+
+ device = get_selected_device (ui);
+ if (device) {
+ gconf_client_set_string(ui->priv->client, GCONF_DIR "/selected_device", device, NULL);
+ g_free (device);
+ }
+
+ gconf_client_set_string (ui->priv->client, GCONF_DIR "/document_type", ui->priv->document_hint, NULL);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/text_dpi", get_text_dpi (ui), NULL);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/photo_dpi", get_photo_dpi (ui), NULL);
+ gconf_client_set_string (ui->priv->client, GCONF_DIR "/page_side", get_page_side (ui), NULL);
+ get_paper_size (ui, &paper_width, &paper_height);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/paper_width", paper_width, NULL);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/paper_height", paper_height, NULL);
+
+ gconf_client_set_int(ui->priv->client, GCONF_DIR "/window_width", ui->priv->window_width, NULL);
+ gconf_client_set_int(ui->priv->client, GCONF_DIR "/window_height", ui->priv->window_height, NULL);
+ gconf_client_set_bool(ui->priv->client, GCONF_DIR "/window_is_maximized", ui->priv->window_is_maximized, NULL);
+
+ for (i = 0; orientation_keys[i].key != NULL && orientation_keys[i].orientation != ui->priv->default_page_orientation; i++);
+ if (orientation_keys[i].key != NULL)
+ gconf_client_set_string(ui->priv->client, GCONF_DIR "/scan_direction", orientation_keys[i].key, NULL);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/page_width", ui->priv->default_page_width, NULL);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/page_height", ui->priv->default_page_height, NULL);
+ gconf_client_set_int (ui->priv->client, GCONF_DIR "/page_dpi", ui->priv->default_page_dpi, NULL);
+
+ g_signal_emit (G_OBJECT (ui), signals[QUIT], 0);
+}
+
+
+void quit_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui);
+G_MODULE_EXPORT
+void
+quit_menuitem_activate_cb (GtkWidget *widget, SimpleScan *ui)
+{
+ quit (ui);
+}
+
+
+gboolean simple_scan_window_configure_event_cb (GtkWidget *widget, GdkEventConfigure *event, SimpleScan *ui);
+G_MODULE_EXPORT
+gboolean
+simple_scan_window_configure_event_cb (GtkWidget *widget, GdkEventConfigure *event, SimpleScan *ui)
+{
+ if (!ui->priv->window_is_maximized) {
+ ui->priv->window_width = event->width;
+ ui->priv->window_height = event->height;
+ }
+
+ return FALSE;
+}
+
+
+gboolean simple_scan_window_window_state_event_cb (GtkWidget *widget, GdkEventWindowState *event, SimpleScan *ui);
+G_MODULE_EXPORT
+gboolean
+simple_scan_window_window_state_event_cb (GtkWidget *widget, GdkEventWindowState *event, SimpleScan *ui)
+{
+ if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED)
+ ui->priv->window_is_maximized = (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) != 0;
+ return FALSE;
+}
+
+
+gboolean window_delete_event_cb (GtkWidget *widget, GdkEvent *event, SimpleScan *ui);
+G_MODULE_EXPORT
+gboolean
+window_delete_event_cb (GtkWidget *widget, GdkEvent *event, SimpleScan *ui)
+{
+ quit (ui);
+ return TRUE;
+}
+
+
+static void
+page_size_changed_cb (Page *page, SimpleScan *ui)
+{
+ ui->priv->default_page_width = page_get_width (page);
+ ui->priv->default_page_height = page_get_height (page);
+ ui->priv->default_page_dpi = page_get_dpi (page);
+}
+
+
+static void
+page_orientation_changed_cb (Page *page, SimpleScan *ui)
+{
+ ui->priv->default_page_orientation = page_get_orientation (page);
+}
+
+
+static void
+page_added_cb (Book *book, Page *page, SimpleScan *ui)
+{
+ ui->priv->default_page_width = page_get_width (page);
+ ui->priv->default_page_height = page_get_height (page);
+ ui->priv->default_page_dpi = page_get_dpi (page);
+ ui->priv->default_page_orientation = page_get_orientation (page);
+ g_signal_connect (page, "size-changed", G_CALLBACK (page_size_changed_cb), ui);
+ g_signal_connect (page, "orientation-changed", G_CALLBACK (page_orientation_changed_cb), ui);
+}
+
+
+static void
+page_removed_cb (Book *book, Page *page, SimpleScan *ui)
+{
+ /* If this is the last page add a new blank one */
+ if (book_get_n_pages (ui->priv->book) == 1)
+ add_default_page (ui);
+}
+
+
+static void
+set_dpi_combo (GtkWidget *combo, gint default_dpi, gint current_dpi)
+{
+ struct
+ {
+ gint dpi;
+ const gchar *label;
+ } scan_resolutions[] =
+ {
+ /* Preferences dialog: Label for minimum resolution in resolution list */
+ { 75, _("%d dpi (draft)") },
+ /* Preferences dialog: Label for resolution value in resolution list (dpi = dots per inch) */
+ { 150, _("%d dpi") },
+ { 300, _("%d dpi") },
+ { 600, _("%d dpi") },
+ /* Preferences dialog: Label for maximum resolution in resolution list */
+ { 1200, _("%d dpi (high resolution)") },
+ { 2400, _("%d dpi") },
+ { -1, NULL }
+ };
+ GtkCellRenderer *renderer;
+ GtkTreeModel *model;
+ gint i;
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), renderer, "text", 1);
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
+ for (i = 0; scan_resolutions[i].dpi > 0; i++)
+ {
+ GtkTreeIter iter;
+ gchar *label;
+ gint dpi;
+
+ dpi = scan_resolutions[i].dpi;
+
+ if (dpi == default_dpi)
+ label = g_strdup_printf (/* Preferences dialog: Label for default resolution in resolution list */
+ _("%d dpi (default)"), dpi);
+ else
+ label = g_strdup_printf (scan_resolutions[i].label, dpi);
+
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, dpi, 1, label, -1);
+
+ if (dpi == current_dpi)
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter);
+
+ g_free (label);
+ }
+}
+
+
+static void
+ui_load (SimpleScan *ui)
+{
+ GtkBuilder *builder;
+ GError *error = NULL;
+ GtkCellRenderer *renderer;
+ gchar *device, *document_type, *scan_direction, *page_side;
+ gint dpi, paper_width, paper_height;
+
+ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), ICON_DIR);
+
+ gtk_window_set_default_icon_name ("scanner");
+
+ builder = ui->priv->builder = gtk_builder_new ();
+ gtk_builder_add_from_file (builder, UI_DIR "simple-scan.ui", &error);
+ if (error) {
+ g_critical ("Unable to load UI: %s\n", error->message);
+ ui_show_error (ui,
+ /* Title of dialog when cannot load required files */
+ _("Files missing"),
+ /* Description in dialog when cannot load required files */
+ _("Please check your installation"),
+ FALSE);
+ exit (1);
+ }
+ gtk_builder_connect_signals (builder, ui);
+
+ ui->priv->window = GTK_WIDGET (gtk_builder_get_object (builder, "simple_scan_window"));
+ ui->priv->preview_box = GTK_WIDGET (gtk_builder_get_object (builder, "preview_vbox"));
+ ui->priv->preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+ ui->priv->preview_scroll = GTK_WIDGET (gtk_builder_get_object (builder, "preview_scrollbar"));
+ ui->priv->page_delete_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "page_delete_menuitem"));
+ ui->priv->crop_rotate_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "crop_rotate_menuitem"));
+ ui->priv->stop_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "stop_scan_menuitem"));
+ ui->priv->stop_toolbutton = GTK_WIDGET (gtk_builder_get_object (builder, "stop_toolbutton"));
+
+ ui->priv->text_toolbar_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "text_toolbutton_menuitem"));
+ ui->priv->text_menu_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "text_menuitem"));
+ ui->priv->photo_toolbar_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "photo_toolbutton_menuitem"));
+ ui->priv->photo_menu_menuitem = GTK_WIDGET (gtk_builder_get_object (builder, "photo_menuitem"));
+
+ ui->priv->authorize_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "authorize_dialog"));
+ ui->priv->authorize_label = GTK_WIDGET (gtk_builder_get_object (builder, "authorize_label"));
+ ui->priv->username_entry = GTK_WIDGET (gtk_builder_get_object (builder, "username_entry"));
+ ui->priv->password_entry = GTK_WIDGET (gtk_builder_get_object (builder, "password_entry"));
+
+ ui->priv->preferences_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "preferences_dialog"));
+ ui->priv->device_combo = GTK_WIDGET (gtk_builder_get_object (builder, "device_combo"));
+ ui->priv->device_model = gtk_combo_box_get_model (GTK_COMBO_BOX (ui->priv->device_combo));
+ ui->priv->text_dpi_combo = GTK_WIDGET (gtk_builder_get_object (builder, "text_dpi_combo"));
+ ui->priv->text_dpi_model = gtk_combo_box_get_model (GTK_COMBO_BOX (ui->priv->text_dpi_combo));
+ ui->priv->photo_dpi_combo = GTK_WIDGET (gtk_builder_get_object (builder, "photo_dpi_combo"));
+ ui->priv->photo_dpi_model = gtk_combo_box_get_model (GTK_COMBO_BOX (ui->priv->photo_dpi_combo));
+ ui->priv->page_side_combo = GTK_WIDGET (gtk_builder_get_object (builder, "page_side_combo"));
+ ui->priv->page_side_model = gtk_combo_box_get_model (GTK_COMBO_BOX (ui->priv->page_side_combo));
+ ui->priv->paper_size_combo = GTK_WIDGET (gtk_builder_get_object (builder, "paper_size_combo"));
+ ui->priv->paper_size_model = gtk_combo_box_get_model (GTK_COMBO_BOX (ui->priv->paper_size_combo));
+
+ GtkTreeIter iter;
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 0, 1, 0, 2, "Automatic", -1);
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 2050, 1, 1480, 2, "A6", -1);
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 1480, 1, 2100, 2, "A5", -1);
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 2100, 1, 1970, 2, "A4", -1);
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 2159, 1, 2794, 2, "Letter", -1);
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 2159, 1, 3556, 2, "Legal", -1);
+ gtk_list_store_append (GTK_LIST_STORE (ui->priv->paper_size_model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (ui->priv->paper_size_model), &iter, 0, 1016, 1, 1524, 2, "4×6", -1);
+
+ dpi = gconf_client_get_int (ui->priv->client, GCONF_DIR "/text_dpi", NULL);
+ if (dpi <= 0)
+ dpi = DEFAULT_TEXT_DPI;
+ set_dpi_combo (ui->priv->text_dpi_combo, DEFAULT_TEXT_DPI, dpi);
+ dpi = gconf_client_get_int (ui->priv->client, GCONF_DIR "/photo_dpi", NULL);
+ if (dpi <= 0)
+ dpi = DEFAULT_PHOTO_DPI;
+ set_dpi_combo (ui->priv->photo_dpi_combo, DEFAULT_PHOTO_DPI, dpi);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ui->priv->device_combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (ui->priv->device_combo), renderer, "text", 1);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ui->priv->page_side_combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (ui->priv->page_side_combo), renderer, "text", 1);
+ page_side = gconf_client_get_string (ui->priv->client, GCONF_DIR "/page_side", NULL);
+ if (page_side) {
+ set_page_side (ui, page_side);
+ g_free (page_side);
+ }
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ui->priv->paper_size_combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (ui->priv->paper_size_combo), renderer, "text", 2);
+ paper_width = gconf_client_get_int (ui->priv->client, GCONF_DIR "/paper_width", NULL);
+ paper_height = gconf_client_get_int (ui->priv->client, GCONF_DIR "/paper_height", NULL);
+ set_paper_size (ui, paper_width, paper_height);
+
+ device = gconf_client_get_string (ui->priv->client, GCONF_DIR "/selected_device", NULL);
+ if (device) {
+ GtkTreeIter iter;
+ if (find_scan_device (ui, device, &iter))
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ui->priv->device_combo), &iter);
+ g_free (device);
+ }
+
+ document_type = gconf_client_get_string (ui->priv->client, GCONF_DIR "/document_type", NULL);
+ if (document_type) {
+ set_document_hint (ui, document_type);
+ g_free (document_type);
+ }
+
+ ui->priv->book_view = book_view_new ();
+ g_signal_connect (ui->priv->book_view, "page-selected", G_CALLBACK (page_selected_cb), ui);
+ g_signal_connect (ui->priv->book_view, "show-page", G_CALLBACK (show_page_cb), ui);
+ book_view_set_widgets (ui->priv->book_view,
+ ui->priv->preview_box,
+ ui->priv->preview_area,
+ ui->priv->preview_scroll,
+ GTK_WIDGET (gtk_builder_get_object (builder, "page_menu")));
+
+ /* Find default page details */
+ scan_direction = gconf_client_get_string(ui->priv->client, GCONF_DIR "/scan_direction", NULL);
+ ui->priv->default_page_orientation = TOP_TO_BOTTOM;
+ if (scan_direction) {
+ gint i;
+ for (i = 0; orientation_keys[i].key != NULL && strcmp (orientation_keys[i].key, scan_direction) != 0; i++);
+ if (orientation_keys[i].key != NULL)
+ ui->priv->default_page_orientation = orientation_keys[i].orientation;
+ g_free (scan_direction);
+ }
+ ui->priv->default_page_width = gconf_client_get_int (ui->priv->client, GCONF_DIR "/page_width", NULL);
+ if (ui->priv->default_page_width <= 0)
+ ui->priv->default_page_width = 595;
+ ui->priv->default_page_height = gconf_client_get_int (ui->priv->client, GCONF_DIR "/page_height", NULL);
+ if (ui->priv->default_page_height <= 0)
+ ui->priv->default_page_height = 842;
+ ui->priv->default_page_dpi = gconf_client_get_int (ui->priv->client, GCONF_DIR "/page_dpi", NULL);
+ if (ui->priv->default_page_dpi <= 0)
+ ui->priv->default_page_dpi = 72;
+
+ /* Restore window size */
+ ui->priv->window_width = gconf_client_get_int (ui->priv->client, GCONF_DIR "/window_width", NULL);
+ if (ui->priv->window_width <= 0)
+ ui->priv->window_width = 600;
+ ui->priv->window_height = gconf_client_get_int (ui->priv->client, GCONF_DIR "/window_height", NULL);
+ if (ui->priv->window_height <= 0)
+ ui->priv->window_height = 400;
+ g_debug ("Restoring window to %dx%d pixels", ui->priv->window_width, ui->priv->window_height);
+ gtk_window_set_default_size (GTK_WINDOW (ui->priv->window), ui->priv->window_width, ui->priv->window_height);
+ ui->priv->window_is_maximized = gconf_client_get_bool (ui->priv->client, GCONF_DIR "/window_is_maximized", NULL);
+ if (ui->priv->window_is_maximized) {
+ g_debug ("Restoring window to maximized");
+ gtk_window_maximize (GTK_WINDOW (ui->priv->window));
+ }
+
+ if (book_get_n_pages (ui->priv->book) == 0)
+ add_default_page (ui);
+ book_view_set_book (ui->priv->book_view, ui->priv->book);
+}
+
+
+SimpleScan *
+ui_new ()
+{
+ return g_object_new (SIMPLE_SCAN_TYPE, NULL);
+}
+
+
+Book *
+ui_get_book (SimpleScan *ui)
+{
+ return g_object_ref (ui->priv->book);
+}
+
+
+void
+ui_set_selected_page (SimpleScan *ui, Page *page)
+{
+ book_view_select_page (ui->priv->book_view, page);
+}
+
+
+Page *
+ui_get_selected_page (SimpleScan *ui)
+{
+ return book_view_get_selected (ui->priv->book_view);
+}
+
+
+void
+ui_set_scanning (SimpleScan *ui, gboolean scanning)
+{
+ ui->priv->scanning = scanning;
+ gtk_widget_set_sensitive (ui->priv->page_delete_menuitem, !scanning);
+ gtk_widget_set_sensitive (ui->priv->stop_menuitem, scanning);
+ gtk_widget_set_sensitive (ui->priv->stop_toolbutton, scanning);
+}
+
+
+void
+ui_show_error (SimpleScan *ui, const gchar *error_title, const gchar *error_text, gboolean change_scanner_hint)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW (ui->priv->window),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_NONE,
+ "%s", error_title);
+ if (change_scanner_hint)
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
+ /* Button in error dialog to open prefereces dialog and change scanner */
+ _("Change _Scanner"),
+ 1);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, 0);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+ "%s", error_text);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == 1) {
+ gtk_widget_grab_focus (ui->priv->device_combo);
+ gtk_window_present (GTK_WINDOW (ui->priv->preferences_dialog));
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+
+void
+ui_start (SimpleScan *ui)
+{
+ gtk_widget_show (ui->priv->window);
+}
+
+
+/* Generated with glib-genmarshal */
+static void
+g_cclosure_user_marshal_VOID__STRING_POINTER (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__STRING_POINTER) (gpointer data1,
+ gconstpointer arg_1,
+ gconstpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__STRING_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_value_get_string (param_values + 1),
+ g_value_get_pointer (param_values + 2),
+ data2);
+}
+
+
+static void
+ui_finalize (GObject *object)
+{
+ SimpleScan *ui = SIMPLE_SCAN (object);
+
+ g_object_unref (ui->priv->client);
+ ui->priv->client = NULL;
+ g_object_unref (ui->priv->builder);
+ ui->priv->builder = NULL;
+ g_object_unref (ui->priv->book);
+ ui->priv->book = NULL;
+ g_object_unref (ui->priv->book_view);
+ ui->priv->book_view = NULL;
+
+ G_OBJECT_CLASS (ui_parent_class)->finalize (object);
+}
+
+
+static void
+ui_class_init (SimpleScanClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = ui_finalize;
+
+ signals[START_SCAN] =
+ g_signal_new ("start-scan",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SimpleScanClass, start_scan),
+ NULL, NULL,
+ g_cclosure_user_marshal_VOID__STRING_POINTER,
+ G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_POINTER);
+ signals[STOP_SCAN] =
+ g_signal_new ("stop-scan",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SimpleScanClass, stop_scan),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[SAVE] =
+ g_signal_new ("save",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SimpleScanClass, save),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+ signals[EMAIL] =
+ g_signal_new ("email",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SimpleScanClass, email),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+ signals[QUIT] =
+ g_signal_new ("quit",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (SimpleScanClass, quit),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ g_type_class_add_private (klass, sizeof (SimpleScanPrivate));
+}
+
+
+static void
+ui_init (SimpleScan *ui)
+{
+ ui->priv = G_TYPE_INSTANCE_GET_PRIVATE (ui, SIMPLE_SCAN_TYPE, SimpleScanPrivate);
+
+ ui->priv->book = book_new ();
+ g_signal_connect (ui->priv->book, "page-removed", G_CALLBACK (page_removed_cb), ui);
+ g_signal_connect (ui->priv->book, "page-added", G_CALLBACK (page_added_cb), ui);
+
+ ui->priv->client = gconf_client_get_default();
+ gconf_client_add_dir(ui->priv->client, GCONF_DIR, GCONF_CLIENT_PRELOAD_NONE, NULL);
+
+ ui->priv->document_hint = g_strdup ("photo");
+ ui->priv->default_file_name = g_strdup (_("Scanned Document.pdf"));
+ ui->priv->scanning = FALSE;
+ ui_load (ui);
+}
diff --git a/src/ui.h b/src/ui.h
new file mode 100644
index 0000000..41d551f
--- /dev/null
+++ b/src/ui.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2009 Canonical Ltd.
+ * Author: Robert Ancell <robert.ancell@canonical.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 3 of the License, or (at your option) any later
+ * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
+ * license.
+ */
+
+#ifndef _UI_H_
+#define _UI_H_
+
+#include <glib-object.h>
+#include "book.h"
+#include "scanner.h"
+
+G_BEGIN_DECLS
+
+#define SIMPLE_SCAN_TYPE (ui_get_type ())
+#define SIMPLE_SCAN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SIMPLE_SCAN_TYPE, SimpleScan))
+
+
+typedef struct SimpleScanPrivate SimpleScanPrivate;
+
+typedef struct
+{
+ GObject parent_instance;
+ SimpleScanPrivate *priv;
+} SimpleScan;
+
+typedef struct
+{
+ GObjectClass parent_class;
+
+ void (*start_scan) (SimpleScan *ui, ScanOptions *options);
+ void (*stop_scan) (SimpleScan *ui);
+ void (*save) (SimpleScan *ui, const gchar *format);
+ void (*email) (SimpleScan *ui, const gchar *profile);
+ void (*quit) (SimpleScan *ui);
+} SimpleScanClass;
+
+
+GType ui_get_type (void);
+
+SimpleScan *ui_new (void);
+
+Book *ui_get_book (SimpleScan *ui);
+
+void ui_set_selected_page (SimpleScan *ui, Page *page);
+
+Page *ui_get_selected_page (SimpleScan *ui);
+
+void ui_set_default_file_name (SimpleScan *ui, const gchar *default_file_name);
+
+void ui_authorize (SimpleScan *ui, const gchar *resource, gchar **username, gchar **password);
+
+void ui_set_scan_devices (SimpleScan *ui, GList *devices);
+
+gchar *ui_get_selected_device (SimpleScan *ui);
+
+void ui_set_selected_device (SimpleScan *ui, const gchar *device);
+
+void ui_set_scanning (SimpleScan *ui, gboolean scanning);
+
+void ui_show_error (SimpleScan *ui, const gchar *error_title, const gchar *error_text, gboolean change_scanner_hint);
+
+void ui_start (SimpleScan *ui);
+
+#endif /* _UI_H_ */