summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 18:35:24 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 18:35:24 +0000
commitaec5a842670a66ff24572847d35375a31c0b379e (patch)
tree465d7790602658d86ab031788852bf3dbdc96691
downloadkrename-aec5a842670a66ff24572847d35375a31c0b379e.tar.gz
krename-aec5a842670a66ff24572847d35375a31c0b379e.zip
Added KDE3 version of krename
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/krename@1094420 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r--AUTHORS8
-rw-r--r--COPYING286
-rw-r--r--ChangeLog674
-rw-r--r--Doxyfile246
-rw-r--r--INSTALL167
-rw-r--r--Makefile.am30
-rw-r--r--Makefile.dist14
-rw-r--r--README44
-rw-r--r--TODO383
-rw-r--r--acinclude.m412360
-rw-r--r--aclocal.m4863
-rw-r--r--config.h.in237
-rw-r--r--configure.files2
-rw-r--r--configure.in121
-rw-r--r--configure.in.in3
-rw-r--r--doc/Makefile.am6
-rw-r--r--doc/en/HTML/Makefile.am13
-rw-r--r--doc/en/HTML/index.html63
-rw-r--r--doc/en/Makefile.am10
-rw-r--r--krename.kdevelop195
-rw-r--r--krename.spec53
-rw-r--r--krename/Makefile.am49
-rw-r--r--krename/ProgressDialog.cpp360
-rw-r--r--krename/ProgressDialog.h129
-rw-r--r--krename/batchrenamer.cpp950
-rw-r--r--krename/batchrenamer.h188
-rw-r--r--krename/commandplugin.cpp200
-rw-r--r--krename/commandplugin.h62
-rw-r--r--krename/confdialog.cpp109
-rw-r--r--krename/confdialog.h66
-rw-r--r--krename/coorddialog.cpp142
-rw-r--r--krename/coorddialog.h70
-rw-r--r--krename/dateplugin.cpp153
-rw-r--r--krename/dateplugin.h44
-rw-r--r--krename/datetime.cpp238
-rw-r--r--krename/datetime.h90
-rw-r--r--krename/dsdirselectdialog.cpp112
-rw-r--r--krename/dsdirselectdialog.h54
-rw-r--r--krename/encodingplugin.cpp144
-rw-r--r--krename/encodingplugin.h68
-rw-r--r--krename/fileoperation.cpp124
-rw-r--r--krename/fileoperation.h54
-rw-r--r--krename/fileplugin.cpp213
-rw-r--r--krename/fileplugin.h86
-rw-r--r--krename/firststartdlg.cpp33
-rw-r--r--krename/firststartdlg.h32
-rw-r--r--krename/guimodeselector.cpp78
-rw-r--r--krename/guimodeselector.h41
-rw-r--r--krename/helpdialog.cpp159
-rw-r--r--krename/helpdialog.h111
-rw-r--r--krename/hi32-app-krename.pngbin0 -> 733 bytes
-rw-r--r--krename/hi48-app-krename.pngbin0 -> 634 bytes
-rw-r--r--krename/kmyhistorycombo.cpp167
-rw-r--r--krename/kmyhistorycombo.h74
-rw-r--r--krename/kmylistbox.cpp839
-rw-r--r--krename/kmylistbox.h186
-rw-r--r--krename/kmylistview.cpp177
-rw-r--r--krename/kmylistview.h94
-rw-r--r--krename/krecursivelister.cpp113
-rw-r--r--krename/krecursivelister.h107
-rw-r--r--krename/krename.desktop11
-rw-r--r--krename/krename.h30
-rw-r--r--krename/krename_dir.desktop12
-rw-r--r--krename/krename_system_default_tabbed.xml11
-rw-r--r--krename/krename_system_default_wizard.xml11
-rw-r--r--krename/krenamedcop.h55
-rw-r--r--krename/krenameimpl.cpp1836
-rw-r--r--krename/krenameimpl.h353
-rw-r--r--krename/krenameservicemenu.desktop16
-rw-r--r--krename/lo16-app-krename.pngbin0 -> 405 bytes
-rw-r--r--krename/lo32-app-krename.pngbin0 -> 733 bytes
-rw-r--r--krename/logo.pngbin0 -> 11072 bytes
-rw-r--r--krename/main.cpp148
-rw-r--r--krename/mydirplugin.cpp169
-rw-r--r--krename/mydirplugin.h72
-rw-r--r--krename/myinputdialog.cpp109
-rw-r--r--krename/myinputdialog.h74
-rw-r--r--krename/numberdialog.cpp171
-rw-r--r--krename/numberdialog.h74
-rw-r--r--krename/permission.cpp329
-rw-r--r--krename/permission.h90
-rw-r--r--krename/pictureplugin.cpp98
-rw-r--r--krename/pictureplugin.h40
-rw-r--r--krename/plugin.cpp62
-rw-r--r--krename/plugin.h72
-rw-r--r--krename/pluginloader.cpp179
-rw-r--r--krename/pluginloader.h92
-rw-r--r--krename/profiledlg.cpp602
-rw-r--r--krename/profiledlg.h79
-rw-r--r--krename/replacedialog.cpp257
-rw-r--r--krename/replacedialog.h78
-rw-r--r--krename/semantic.cache15
-rw-r--r--krename/tabs.cpp120
-rw-r--r--krename/tabs.h57
-rw-r--r--krename/threadedlister.cpp162
-rw-r--r--krename/threadedlister.h158
-rw-r--r--krename/translitplugin.cpp106
-rw-r--r--krename/translitplugin.h59
-rw-r--r--krename/undodialog.cpp136
-rw-r--r--krename/undodialog.h59
-rw-r--r--krename/wizard.cpp106
-rw-r--r--krename/wizard.h54
-rw-r--r--po/Makefile.am8
-rw-r--r--po/bs.po1474
-rw-r--r--po/de.po1451
-rw-r--r--po/es.po1462
-rw-r--r--po/fr.po1483
-rw-r--r--po/hu.po1447
-rw-r--r--po/it.po1459
-rw-r--r--po/ja.po1432
-rw-r--r--po/nl.po1482
-rw-r--r--po/pl.po1450
-rw-r--r--po/pt_BR.po1478
-rw-r--r--po/ru.po1448
-rw-r--r--po/sl.po1443
-rw-r--r--po/sv.po1442
-rw-r--r--po/tr.po1454
-rw-r--r--po/zh_CN.GB2312.po1802
-rw-r--r--po/zh_TW.Big5.po1896
-rw-r--r--stamp-h.in0
-rw-r--r--subdirs3
121 files changed, 51970 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..9b479c4
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,8 @@
+
+
+ |=======================================|
+ | Dominik Seichter <domseichter@web.de> |
+ | http://www.krename. net |
+ |=======================================|
+
+ (c) 2001-2003 Dominik Seichter \ No newline at end of file
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..e0ac8d4
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,286 @@
+NOTE! The GPL below is copyrighted by the Free Software Foundation, but
+the instance of code that it refers to (the krename application) is copyrighted
+by the author (Dominik Seichter) who actually wrote it.
+
+---------------------------------------------------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) 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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. 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.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+ END OF TERMS AND CONDITIONS
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..718d0a7
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,674 @@
+Version 3.0 stable
+ 3.0.0 (Release Date 28.06.2004):
+ Fixed undo of renamed directories and their contents
+ Added a Polish translation by Krzysztof Pawlak
+ 3.0.1 (Release Date 17.07.2004):
+ Fixed a memory leak (create KRecursiveLister instances without deleting)
+ Updated the Polish translation
+ Loading fileplugins after startup is now possible
+ Added option to create symlinks again (only for advanced mode)
+ Fixed preview moved out of screen
+ Added a Russian translation by Ilya Ivkov
+ Fixed a bug: Appended strings should be allowed to contain braced; [1-5{\{Hallo\}}] should work
+ Escaping of braces is now possible \{ \}
+ Tooltip improvements
+ Added extension renaming to the easy mode
+ Added find and replace to the easy mode
+ 3.0.2 (Release Date 09.08.2004):
+ Fixed a numbering bug with random start values
+ Updated Russian, Polish and French translation
+ Added a Bosnian Trasnlation by Asim Husanovic
+ 3.0.3 (Release Date 13.02.2005):
+ ESC doesn't close KRename anymore
+ Fixed many typos (thanks to Arpad Biro)
+ Updated hungarian translation
+ Fixed inserting of \
+ Added a few tooltips to the add dialog
+ Fixed escaping of # in filenames so that files containing a # can be added using drag and drop
+ Added the option to sort filenames in random order
+ Filename tab is made visible if filenames have been passed over the commandline
+ Updated russian translation by Nick Shaforostoff
+ Updated german, japanese and netherlands translation
+ Added profile management (removed save settings in number and find/replace dialog therefore)
+ Added plugin data reloading
+ Added Nummeric Sorting mode
+ Added function help dialog also to the beginners mode
+ Fixed keyboard accels in German translation
+ Fixed filenames containing a slash
+ Added formating of datetypes (e.g.: [date;yyyy-MM-dd] or [accessdate;dd-MM-yyyy_hh:mm])
+ Better feedback during renaming lots of files in the ProgressDialog
+ ProgressDialog is closed correctly after an undo
+ Updated translations and fixed typos
+ Fixed advanced date formatting, upercase letters were converted to lowercase
+ Apply patch from Laurent Montel to exclude devices from the servicemenu
+ Make adding of files multithreaded to be faster and fix some bugs
+ Fixed reload plugin data (just clears the cache of all plugins)
+ Let the KDE KRename documentation point to the pdf handbook
+ Made KRename more responsive when changing the template for many files
+ Fixed adding files by drag and drop and from commandline options
+ 3.0.4 (Release Date 21.04.2005):
+ Fixed keyboard shortcut ALT+F being used twice
+ Make saving profiles more easier to understand for the user
+ Disable delete button for default profiles
+ Support default profiles
+ Declared lot's of functions as inline for speed reasons
+ Added support for resetting counters on new directories
+ 3.0.5 (Release Date 25.05.2005):
+ Updated Russian translation by Alexey Kouznetsov
+ Updated Polish translation by Krzysztof Pawlak
+ Added Chinese Simplified translation by Dehua Qin
+ Fixed a bug in the strip whitespace function \
+ Added Brazilian Portugues translation by Paulo Zambon and Michele Fasoli
+ Display error warning message only if errors have occured
+ Updated Italian translation by Patrick Bellasi
+ 3.0.6 (Release Date 25.05.2005):
+ Allow to set the profile with a commandline switch
+ Added brazillian translation to the service menu
+ Fixed crash with the --start option
+ Fixed adding directories from the commandline with the --start option
+ Fixed the taborder in the ProgressDialog
+ Fixed find and replace with regular expressions
+ 3.0.7 (Release Date: 28.08.2005):
+ Fixed for the pt_BR translation
+ changed Krename -> KRename in myinputdialog.cpp
+ Fixed plugins in second run of KRename
+ Added Transliteration Plugin by Oleg Ivanov
+ Set focus to the template field when switching to the filename tab
+ in advanced mode
+ Added keyboard shortcut F2 to change filename manually as
+ requestet by Paulo
+ Updated Hungarian Translation by Arpad Biro
+ Fixed servicemenu files
+ 3.0.8 (Release Date: 24.09.2005):
+ Updated German translation (thanks to the debian team)
+ Fixed on the fly mode switching
+ Fixed the profile commandline option when a default profile was specified
+ Fixed a crash with loading the KDE file plugins after KRename was started
+ Fixed a few smaller memory leaks (thanks to valgrind)
+ Code review with many smaller optimization (mostly using inline
+ for functions and references for parameters)
+ Fixed hide and show of KRename window on startup
+ 3.0.9 (Release Date: 18.10.2005):
+ Fixed the .desktop file to open only one KRename window when
+ multiple files are dragged on the icon
+ Added Slovinean translation by Matej Urbanèiè
+ 3.0.10 (Release Date: 11.01.2006):
+ Swedish translation by Peter Landgren
+ Updated Polish translation by Krzysztof Pawlak
+ Added context menu to all template text fields to quickly insert
+ KRename tokens
+ Updated Hungarian translation by Arpad Biro
+ 3.0.11 (Release Date: 22.02.2006):
+ Cleaned up Makefile.am
+ Fixed desktop files
+ Fixed {,} and * when returned from plugins
+ Fixed add files here label on the first page in wizard mode
+ Show last tab when files are passed on the commandline
+ Updated Swedish translation by Peter Landgren
+ Updated Italian translation by Vincenzo Reale
+ Updated admin directory to KDE 3.5
+ 3.0.12 (Release Date: 14.08.2006):
+ Updated Spanish and Italian translation
+ Fixed a compilation problem with gcc 2.95
+ Fixed servicemenu installation
+ Fixed a possible crash
+ German translation fixes by Frederik Schwarzer
+ Fixed drag and drop of files to KRename
+ 3.0.13 (Release Date: 03.12.2006):
+ Emre Alada contributed a Turkish translation
+ Improved speed when a plugin token was not found
+ Fixed encoding plugin
+ Added commandline switch to specify the number of previewitems
+ 3.0.14:
+ Fixed a crash with plugin previews
+ Fixed adding directories recursive when dropped from another application
+ Added a unit test
+ Fixed plugin tokens with additional arguments e.g. [date;dd-mm-yyyy]
+ Fixed the seconds in the time [token]
+ Corrected documentation of [user] and [group] tokens
+ Patch by Otakar Trunecek to add Czech transliteration characters
+
+Version 2.9
+ 2.9.0 (Release Date 24.01.2004):
+ Added KIO slave support (e.g.: fish:// and ftp://)
+ Use the mimetype icon if no icon is found
+ File preview is much faster now
+ Moving of items in large lists if faster now
+ Removed stupid tooltip for filelist
+ Improved ProgressDialog
+ Fixed plugin finished being called even if the user canceled renaming
+ Added option to easily use the filename of the input file (when changing manually)
+ Fixed enabled state of up and down buttons
+ Using Jonathon Sim's KRecursiveLister
+ Added a refresh preview button
+ Removed ask on exit option (KRename doesn't ask anymore)
+ Fileextension start dot, can now be configured easier
+ Fixed capitalization for apostrophes
+ Removed stupid warning message, about files not being added twice
+ Made PluginLoader a singleton -> KRename is faster if a second window is opened
+ Added a very simple DCOP interface (more functions to come in the next release)
+ Fixed a bug that caused [x] (x being a number) to fail in some cases
+ Fixed manual changing filenames
+ 2.9.1 (Release Date 01.02.2004):
+ Compilation fix (cannot declare member function as static)
+ Fixed keyboard access to file template lineedit
+ Improved plugin system, no need to enable certain plugins anymore
+ Removed write meta info function, as it did not work very well
+ Refactored the image plugin to look like the other plugins and use a cache
+ 2.9.2 (Release Date 29.02.2004):
+ Added a hungarian translation from the SuSE 9.0 rpm
+ Date and time functions are now a plugin
+ Added [user], [group], [modificationdate], [creationdate] and [accessdate] tokens
+ Fixed a bug with the [date] token
+ Fixed the command, permissions and date and time plugin
+ Added lot's of examples to the command plugin
+ Updated the German translation
+ Renaming speed got greatly improved (FileCopyJob is used instead of CopyJob)
+ Overwriting of files works again
+ Removed option to create symlinks, who needs that?
+ Added a [length] token, returning the length of the input filename
+ Support for nested tokens like: [[length-4]-[length-2]]
+ Fixed mouse problems on the first page of the wizard
+ The part string token supports appended strings: [2;4{[dirname]}] or [2-4{KRENAME}]
+ Fixed a bug with special tokens in directories which are created during runtime
+ Added a few new DCOP functions
+ Fixed regular expressions find and replace
+ Much faster adding of files, because of a better sorting algorithm
+ Updated the French translation
+ Depends on KDE 3.1 now, because of KDirLister
+ Fixed an annoying message box popping up, when an error occurs
+ 2.9.3 (Release Date 09.04.2004):
+ Updated Spanish translation
+ Updated German translation
+ Fixed a crash when adding directories recursively
+ All plugin tokens have a prefix now for consistency
+ Added new DCOP methods
+ 2.9.4 (Release Date 15.04.2004):
+ Fixed [length-2] token (substracted only 1 instead of 2)
+ Set default to tabbed mode for GUI
+ Added a powerful easy mode dialog
+ KMyHistoryCombo saves its settings itsself, saving lots of code duplication
+ Fixed the annoying error messages again
+ Improved ProgressedDialog
+ All files (even files with errors) can now be renamed again
+ 3.0.0-rc1 (Release Date 04.05.2004):
+ Updated French translation
+ Updated Spanish translation
+ Updated German translation
+ Fixed spelling errors (thanks goes to Arpad Biro)
+ Updated admin dir to work with automake 1.8
+ Service menu is installed by default, saving lot's of code
+ Fixed a bug with FilePlugins
+ 3.0.0-rc2 (Release Date 26.05.2004):
+ Updated Netherlands translation
+ Fixed a bug with § which could result in an endless loop
+ Replaced § with [&1][%2-]
+ Fixed multi-line error message in progress dialog
+ Nicer file preview (previews are centered and text is aligned)
+ Start index defaults now to 1
+ Changed button order in ProgressDialog and Tabs Mode (Close)
+ Move change filename manually to the top of the context menu
+ Append a / to directory names so that files are copied/moved correctly
+ Do not display file:// for local files
+ KRename creates missing directories automatically for you
+ KRename window size on startup was fixed
+ Only one button to add directories and files
+ Many messages where simplified
+ Undo file can only be created if files are not copied
+ Added an automatic undo function
+ Plugin page was removed from the wizard
+ Fixed unexpected close of wizard after renaming
+ Improved directory selection
+ Better sorting of files
+ No update preview when find and replace dialog was canceled
+ 3.0.0-rc3 (Release Date 13.06.2004):
+ Removed help buttons
+ Fixed lots of typos
+ previous -> original
+ Added small icons to help dialog
+ Added a small text notice to tell the user he should add some files
+ Selecting items by dragging a frame with the mouse is now possible
+ Fixed hiding the plugin page in wizard mode
+ Plugin page shows only plugins that are not automatically used
+ Fixed image highlighting of selected items
+ Fixed image preview
+ Fixed creating directories inside of created directories
+
+Version 2.8 stable
+ 2.8.0 (Release Date 08.07.2003):
+ Speed up file plugins by adding a cache to them
+ Fixed GUI mode switching with Qt 3.0.x
+ Fixed service menu entry for all languages
+ Adjust width of insert part of filename dialog dynamically
+ --use-plugin is now case insensitive
+ Fixed a bug with the first start dialog
+ Added spanish translation of service menu entries
+ Redrawing GUI while generating real time preview with plugin
+ 2.8.1 (Release Date 24.07.2003):
+ Fixed compilation errors on FreeBSD
+ Fixed a memory leak with invalid file plugins
+ Added support for all fileplugin tokens, not only the preffered ones
+ Switched add dirname dialog to KDirSelectDialog
+ Fixed a bug which caused KRename to remain in memory even if all windows were closed
+ 2.8.2 (Release Date 06.08.2003):
+ Removed STL dependency and fixed compilation errors
+ Fixed a memory leak in addThisDir
+ Added support to add directory names recursively
+ 2.8.3 (Release Date 22.10.2003):
+ Removed add recursively button and merged functionality into add dir
+ Added a simple sort function
+ Inserting parts of filenames replaces $
+ Fixed a layout bug, with the undo groupbox
+ 2.8.4 (Release Date 05.12.2003):
+ Added a netherlands translation by Frank Schoolmeesters
+ Fixed find and replace code
+ Fixed compilation with --enable-final
+ Fixed compilation on debian and fedora
+ Added support for escaped special characters (e.g. \&)
+ Fixed a segmentation fault on startup
+ 2.8.5 (Release Date 05.01.2004):
+ Fixed dir selection dialog growing larger and larger
+ Fixed bug: manual changes are delete for removed files, too
+ Fixed compiler warning: unexpected variable declaration
+
+Version 2.7
+ 2.7.0 (Release Date 17.05.2003):
+ Style guide fixes
+ Improved user interface
+ Removed save button from final dialog (who needs it?)
+ Ported ReplaceDialog to KDialogBase
+ 2.7.1 (Release Date: 18.05.2003):
+ Fixed Compilation with KDE 3.0
+ 2.7.2 (Release Date: 04.06.2003):
+ Added Japanese translation
+ Removed visible/invisible plugin stuff
+ Fixed minimum size of krename
+ Fixed sorting of functions help
+ Fixed bug with wrong file extension settings from krenamerc
+ Added tabbed GUI mode
+ Refactored preferences
+ Removed advanced titlebar
+ Redesigned plugin GUI page
+ Remove buttons are disabled as long as there are no files in the list
+ Added a separator line between dialogs and buttons
+ Improved undo dialog
+ Fixed loading of saved skip and find/replace lists
+ Made filename template lineedit much wider
+ Lot's of style guide fixes
+ Fixed accel conflicts in English version
+ Fixed the picture plugin
+ Simplified Plugin code (use QPtrList instead of QDict)
+ 2.7.3 (Release Date: 30.06.2003):
+ Runtime switching of GUI mode is now possible
+ Fixed compilation problems on SuSE 8.0 (Qt <= 3.0.5)
+ Defined const functions as const
+ Fixed includes (thanks to the excellent fixincludes script from kdesdk)
+ Added a GUI mode selection dialog on first start
+ Added support for formating numbers from plugins (e.g.: [##Tracknumber])
+ Fixed service menu entries (thanks to Mark Volkert)
+ Fixed a small memory leak in service menu code
+ Fixed crash with RegExp dialog
+ Added a lot of useful commandline options
+ Fixed the spelling of KRename
+ Added an icon for the permissions plugin
+ Fixed a long standing bug that the users own group was not shown in the permissions plugin
+ Added an open context menu item to the preview
+ Fixed adding of two files with same name but in different capitilization
+ Double clicking on an item in the search and replace dialog edits it
+ Added French translation
+
+Version 2.6 stable
+ 2.6.0 (Release Date: 18.04.2003):
+ Fixed crash on installing servicemenu
+ Added icon and accel to servicemenu entry
+ Fixed bug with manual changed filenames
+
+ 2.6.1 (Release Date: 25.04.2003):
+ Make Renaming with KFilePlugins work again
+
+ 2.6.2 (Release Date: 11.05.2003):
+ Fixed manually changing names of dirs
+ Fixed some update count problems
+ Added spanish translation
+ Fixed help dialog
+
+Version 2.5
+ 2.5.0 (Release Date: 27.12.2002):
+ Added italian translation
+ Fixed layout bug in maximized windows
+ Fixed compiling problems (vector) (Thanks to Stephan Johach)
+ Added kde preview support
+ Faster File Preview
+ Removed all extern declarations
+ Removed uses of goto, cause I'm not coding basic :-)
+ Added support for renaming directories
+ Added open destination button
+ Added support for changing meta info's on all files
+ 2.5.1 (Release Date: 02.02.2003):
+ Added support for recursively adding hidden directories
+ Added new preview mode
+ Added command execution plugin
+ Thumbnails size is a configure option now
+ Fixed startup notification bug
+ Improved documentation on leading zeros
+ 2.5.2 (Release Date: 13.02.2003):
+ Fixed [date] bug (DD-MM-YYYY)
+ Plugin loading can be disabled for faster startup
+ Easier selection of part filenames
+ Fixed column bugs
+ Only one message box is shown when multiple files are added twice to the list
+ Added prefernces dialog
+ Fixed arrow buttons
+ Refactored source
+ 2.5.3 (Release Date: 14.02.2003):
+ Fixed a gcc 3.x compilation bug
+ 2.5.4 (Release Date: 14.03.2003):
+ Fixed a column bug
+ Improved some default settings
+ Fixed some problems with non ascii chars
+ Fixed service menu installation
+ Fixed problems with cyrillic characters
+ Spell checking of ui texts
+ Added auto directory creation ( ##/$ is now a valid template )
+ Fixed adding of directory names
+ Added caption with full path to the preview context menu
+ Added strip whitespace operator "\"
+ Fixed filenames containing "/"
+ Fixed display of preview failed icon
+ Removed debug output when writing meta info
+ Refactored and simplified plugin processing
+ 2.5.5 (Release Date: 28.03.2003):
+ Updated README
+ Titlebar labels are now shown translated
+ Fixed ERROR messages after renaming
+ Fixed truncating of filenames with the get coordinates function
+ Fixed window layout restoring at startup
+ Added an autosize option for the column width in the preview
+ 2.6-rc1 (Release Date: 06.04.2003):
+ Added icon to service menu entry
+ Fixed gcc 3.x compiler warnings
+ Fixed kfile plugins returning spaces at the end
+ Greatly improved startup time
+ 2.6-rc2 (Release Date: 11.04.2003):
+ History size can be configured now
+ Fixed compilation with Qt/KDE 3.0
+ Fixed disabled controls in Preferences Dialog
+ Fixed a memory leak in FileOperation::geName();
+ Fixed file extension problems
+ Fixed renaming of directory names and the directories contents
+ Fixed one crash with the reqexp editor
+
+Version 2.4 stable
+ 2.4.0 (Release Date: 16.10.2002):
+ German Translation Fixes
+ Fixed bug in service menu installtion
+ Output Dialog is visible in the taskbar
+ Current page has bold letters in titlebar
+ Fixed image preview
+ Fixed service menu installation
+ Fixed toggling of titlebar
+ 2.4.1: (Release Date: 30.10.2002):
+ Header files aren't installed anymore
+ Updated admin dir/build system
+ Fixed some memory leaks
+ Fixed crash with KFilePlugins
+ Fixed memory leaks in PicturePlugin
+ Improved speed in PicturePlugin
+ Support of more image formats in PicturePlugin and preview
+ 2.4.2: (Release Date: 27.11.2002):
+ Window state is restored after restart of krename
+ Added [dirname] keyword
+ Fixed bug with files added more than once to file list
+ Confirmation at exit can be disabled
+ Fixed problems with advanced titlebar
+ Fixel compilation problems
+ Fixed layout on small resolutions
+ Added help dialog, that displays all avaible tokens
+ Removed Mp3/Ogg Plugin, KDE Plugins do the same stuff better
+
+Version 2.3 (Release Date: 03.06.2002)
+ Translation fixes
+ Added undo feature
+ Code cleanups (use of static QFile::exists method )
+ Removed the splash screen (because I hate the one from OpenOffice
+ and I do not want to annoy people with krename's splash screen)
+ Added [track] keyword (needs id3v2 support)
+ Added function wizard
+ 2.3.1 (Release Date: 10.07.2002):
+ Added support for KFilePlugins
+ Added show all plugins button
+ Added commandline option to undo scripts for security purpose
+ Smaller bug fixes
+ Fixed replacing of special chars $, &, ...
+ 2.3.2 (Release Date: 12.09.2002):
+ Service menu entry is not installed by default, user can isntall it
+ GUI improvements
+ Root warning messagebox can be disabled
+ Added context menu to preview box
+ Finish button is default button
+ Fixed renaming of files without extension
+ Added chinese translation
+ Regular Expression changes
+ 2.3.3 (Release Date: 09.10.2002):
+ GCC 3.2 fixes from Gentoo
+ Added menubar
+ Fixed plugins not working when show all was selected
+ Tokens for file plugins are case insensitive now
+ Pages of the wizard can now be set invisible
+ Source code clean ups in PluginLoader, BatchRenamer
+ DateTime, Permission and Dir Plugin are compiled into KRename
+ Added settings and help menu
+ Made OK default button in find and replace dialog
+ Made Start default button in undo dialog
+ Fixed crash when pressing return after startup
+ Using qDebug instead of cout in some places
+ Added advanced title bar
+ Fixed bug that config wasn't saved sometimes
+ Removed some asserts
+ Fixed tab order
+
+Version 2.2 stable (Release Date: 01.05.2002)
+ Layout fixes in the replace dialog
+ Bug fixes in the replace dialog
+ Bug fixes in the copy function
+ Bug fixes in the build system
+ Bug fixed with plugins and special chars ( [, ], $, %, ... )
+
+Version 2.1 (Release Date: 26.04.2002)
+ Added own ListView widget
+ Added arrow buttons
+ Removed preview button (disabled since 1.4(?))
+ User can change a filename by double clicking on a filename in the preview
+ Added a colored preview box
+ Translation fixes
+ ID3v2 tags supported throu id3lib
+ User can save setting for find & replace and skipping numbers
+ GUI improvements
+ User can set a filter for recursive dir adding
+ Improved recursive scanning of directories
+ Fixed ogg tag renaming bug
+ Fixed genre bug
+ Added plugin for picture renaming
+ Fixed a bug in the service menu entry
+ Fixed bug with replacing special chars ( [, ], $, %, ... )
+ Fixed a bug with the * operator
+ Added faster copying funtion
+ Fixed bugs in the replace dialog
+
+Version 2.0 stable (Release Date: 27.03.2002)
+ Minor changes to README and ChangeLog file :)
+
+Version 1.9 (Release Date: 22.03.2002)
+ Port to KDE3
+ Fixed layout bugs on page3 && page2
+ Added service menu entry for konqueror
+ Added regular expressions editor
+ Fixed bug with files ending in a dot or without extension
+
+Version 1.8 stable (Release Date: 28.02.2002)
+ Added plugin API
+ Rewrite of BatchRenamer class
+ API clean up's
+ Changed handling of numbers and fixed (hopefully) some bugs in it
+ Fixed (again) bug with filenames containing $,%,&,,#,[ or ]
+ Fixed bug that didn't allowed doing [1-]
+ Fixed history bug
+ Fixed a drag and drop bug
+ Preview window is resized correctly
+ Rewrote date time stuff as plugin
+ Rewrote permissions stuff as plugin
+ Added mp3/ogg plugin
+ Added dir sorting plugin.
+ Changed Listbox selection mode
+ Added -p commandline option for additional plugin dirs
+ Added a image preview
+ Updated translation
+ Added splash screen
+ Moved About Button to first page
+ Added .spec file
+
+Version 1.7 stable (Release Date: 30.12.2001)
+ Fixed Find and replace bug
+ Added Add Dir Recursively Button
+ Group is set correctly in the permissions dialog
+ Simplified code in batchrenamer.cpp
+ GUI is repainted during adding a directory recursively
+ Added warn message if started from root
+
+Version 1.6 stable (Release Date: 27.12.2001)
+ GUI Changes
+ Fixed translation bug in the About dialog
+ Fixed bug with filenames containig spaces
+ Added advanced file extension handling
+ Added find and replace of regular expressions
+ Added * operator (converts first letter of words to upper case)
+ Speed improvement ( <= 0 replaced with < 0 )
+ Added build date and time to the about dialog
+ Fixed history bug in ComboBox
+ Added handling of filenames containing $,%,&,,#,[ or ]
+
+Version 1.5 (Release Date: 23.11.2001)
+ Added realtime preview
+ Added step by value
+ Added handling of parts of the filename
+ Added find and replace
+ Added renaming of output files
+ All enabling/disabling of widgets is now done in one funtion ( enableControls() )
+ Many internal code changes
+ Fixed bug with ,$,& and % in the extension
+ Added --nopreview commandline option
+ i18n'ed some more strings, I had forgotten
+ Fixed keyboard focus and taborder
+
+Version 1.4 stable (Release Date: 08.11.2001)
+ Rewritten GUI
+ Added German translation
+ Changed ToolTips and other texts
+
+Version 1.3 (Release Date: 04.11.2001)
+ Rewritten, resizeable ProgressDialog (with clipboard support)
+ Fixed bug in history combo
+ Smaller speed optimizations ( addDir() ;)
+ Added skipping of numbers
+ Removed all the useless struct's in the source code
+ Using KDE file selection dialog instead of QT's
+ i18n most strings ( translations are still missing ;)
+ Fixed crash during saving krenames output in ProgressDialog
+ Cleaned code (moved include statements from header to source files)
+
+Version 1.2 (Release Date: 28.10.2001)
+ Added GetCurrentTime Button
+ Added giving files as commandline parameter
+ Added conversion
+ Code clean up's
+ Added recursive renaming of directories with commandline parameters
+ Changed help files
+ Bug fixes
+
+Version 1.1 (Release Date: 23.10.2001)
+ Fixed bug with non existing directories
+ Added Up/Down Buttons fo changing the file order
+ Added restart button
+ Rewritten KMyListBox class
+ Krename stores path and templates for later sessions
+ Added creation of symbolic links
+ Added dropping of dirs
+ Added conversion of filenames to upper case
+ Improved drag'n'drop support
+ Added template for the file extension.
+ Changed GUI
+ Fixed ToolTips
+
+Version 1.0 stable (Release Date: 10.10.2001) stable
+ Krename is called stable ;)
+ Fixed problem with the same file twice in the list (The same file is allowed only once in the list)
+ Files are correctly removed from the list.
+ Fixed warning messages at compile time.
+ Fixed bug in Add Dir.
+ Changed some key accels.
+ Added 'OK to all' button.
+ Fixed error checking
+
+Version 0.9 (Release Date: 03.10.2001)
+ Added Add Directory Button
+ Fixed drag'n'drop code
+ Fixed problem with Cancel
+ Added Convert extension to lower case
+
+Version 0.8 (Release Date: 26.09.2001)
+ Changed syntax for adding numbers.
+ Added Copyright Note to the COPYING file.
+ User is asked if Krename should quit.
+ Changed some texts.
+ Updated and changed documentation.
+ Changed maxvalue of start index.
+
+
+Version 0.7 (Release Date: 20.09.2001)
+ Added Progress Dialog.
+ Krename displays the correct number of successfully renamed files.
+ Better error checking.
+ Added warning fucntion to ProgressDialog.
+ Added overwrite existing files function.
+ Changed some description texts.
+
+Version 0.6 (Release Date: 12.09.2001)
+ Added cancel button to ProgressDialog
+ Fixed a bug that fclose wasn't called under certain conditions
+ Added save output button to ProgressDialog
+ ProgressDialog should be faster because of using QListBox instead of QMultiLineEdit
+ Fixed a bug that ocurred when changing date & time
+ krename displays now the elapsed time.
+ Speed optimations, mainly because of changing struct data
+ Fixed some problems with adding correct numbers to filenames if startindex is not 0.
+
+Version 0.5 (Release Date: 08.09.2001)
+ Changed description texts.
+ Changed API of ProgressDialog a little bit.
+ Files can be opened from krename by pressing return or double clicking on the file.
+ Krename can change owner and group of all files
+ Krename can change permissions of all files
+ Added label that counts the number of files
+
+Version 0.4 (Release Date: 04.09.2001)
+ Krename can now change time of last access and modification
+ Added preview button
+ Bug fixes
+ code clean up's
+ Better Help
+ Krename is added to the KMenu's Utilities section instead of Applications.
+
+Version 0.3 (Release Date: 31.08.2001)
+ Added functions for changing access and modification date
+ Added drag'n'drop support
+ Bug fixes
+ Code layout changes
+ Added thanks to section to About dialog
+
+Version 0.2 (Release Date: 23.08.2001)
+ New KWizard GUI
+ ProgressDialog is updated
+ Code layout changes
+
+Version 0.1 (Release Date: 22.08.2001)
+ Initial release
diff --git a/Doxyfile b/Doxyfile
new file mode 100644
index 0000000..42e3237
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,246 @@
+# Doxyfile 1.3.4-KDevelop
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = krename.kdevelop
+PROJECT_NUMBER =
+OUTPUT_DIRECTORY =
+OUTPUT_LANGUAGE = English
+USE_WINDOWS_ENCODING = NO
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP = NO
+INHERIT_DOCS = YES
+DISTRIBUTE_GROUP_DOC = NO
+TAB_SIZE = 8
+ALIASES =
+OPTIMIZE_OUTPUT_FOR_C = NO
+OPTIMIZE_OUTPUT_JAVA = NO
+SUBGROUPING = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = YES
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = YES
+HIDE_SCOPE_NAMES = NO
+SHOW_INCLUDE_FILES = YES
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = /home/dominik/Desktop/Programming/krename
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.idl \
+ *.odl \
+ *.cs \
+ *.php \
+ *.php3 \
+ *.inc \
+ *.C \
+ *.H \
+ *.tlh \
+ *.diff \
+ *.patch \
+ *.moc \
+ *.xpm \
+ *.dox
+RECURSIVE = yes
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS = *
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_SOURCE_FILES = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+VERBATIM_HEADERS = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX = NO
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+BINARY_TOC = NO
+TOC_EXPAND = NO
+DISABLE_INDEX = NO
+ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = NO
+TREEVIEW_WIDTH = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = YES
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = NO
+USE_PDFLATEX = NO
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = yes
+XML_OUTPUT = xml
+XML_SCHEMA =
+XML_DTD =
+XML_PROGRAMLISTING = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = NO
+EXPAND_ONLY_PREDEF = NO
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED =
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = YES
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = NO
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+UML_LOOK = NO
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+MAX_DOT_GRAPH_WIDTH = 1024
+MAX_DOT_GRAPH_HEIGHT = 1024
+MAX_DOT_GRAPH_DEPTH = 1000
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..02a4a07
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,167 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ 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, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ 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 at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' 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. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 4. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+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 must use a version of `make' that
+supports the `VPATH' variable, such as 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 `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have 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.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ 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'.
+
+Optional Features
+=================
+
+ 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.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+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 host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+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.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..5368ff5
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,30 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+
+SUBDIRS = krename po doc
+
+EXTRA_DIST = krename.kdevelop admin AUTHORS COPYING ChangeLog INSTALL README TODO krename.spec
+
+####### kdevelop will overwrite this part!!! (end)############
+# not a GNU package. You can remove this line, if
+# have all needed files, that a GNU package needs
+AUTOMAKE_OPTIONS = foreign
+
+$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
+ cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
+
+$(top_srcdir)/subdirs:
+ cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
+
+$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
+ @cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
+
+MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
+
+package-messages:
+ $(MAKE) -f admin/Makefile.common package-messages
+ $(MAKE) -C po merge
+
+dist-hook:
+ cd $(top_distdir) && perl admin/am_edit -padmin
+ cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
+
diff --git a/Makefile.dist b/Makefile.dist
new file mode 100644
index 0000000..be59a86
--- /dev/null
+++ b/Makefile.dist
@@ -0,0 +1,14 @@
+all:
+ @echo "This Makefile is only for the CVS repository"
+ @echo "This will be deleted before making the distribution"
+ @echo ""
+ @if test ! -d admin; then \
+ echo "Please recheckout this module!" ;\
+ echo "for cvs: use checkout once and after that update again" ;\
+ echo "for cvsup: checkout kde-common from cvsup and" ;\
+ echo " link kde-common/admin to ./admin" ;\
+ exit 1 ;\
+ fi
+ $(MAKE) -f admin/Makefile.common cvs
+
+.SILENT:
diff --git a/README b/README
new file mode 100644
index 0000000..6d7889f
--- /dev/null
+++ b/README
@@ -0,0 +1,44 @@
+Krename is a very powerfull batch file renamer for KDE3.
+Features include:
+-renaming a list of files based on a set of expressions
+-copying/moving a list of files to another directory
+-convert filenames to upper/lower case
+-adding numbers to filenames
+-finding and replacing parts of the filename
+-rename Mp3/Ogg Vorbis files based on their ID3 tags.
+-setting access and modification dates
+-permissions and file ownership
+-a plug-in API which allows you to extend krename's features
+-rename directories recursively
+-support for KFilePlugins
+-create undo file
+-and many more...
+
+Visit the Krename Homepage at: http://www.krename.net
+
+ HAVE FUN!
+ Dominik Seichter <domseichter@web.de>
+
+==============================
+Old Version of the text above:
+==============================
+
+Krename is a very powerful batch file renamer for KDE2 which
+can rename a list of files based on a set of expressions.
+It can copy/move the files to another directory or simply
+rename the input files. Krename supports many conversion
+operations, including conversion of a filename to lowercase
+or to uppercase, conversion of the first letter of every
+word to uppercase, adding numbers to filenames, finding
+and replacing parts of the filename, and many more.
+Krename can rename Mp3/Ogg Vorbis files based on the
+information stored in their ID3 tags.
+It can also change access and modification dates,
+permissions, and file ownership.
+
+WARNING! It will not compile with automake 1.5, automake 1.4 is required.
+
+Visit the Krename Homepage at: http://krename.sourceforge.net
+
+ HAVE FUN!
+ Dominik Seichter <domseichter@web.de>
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..db8cd43
--- /dev/null
+++ b/TODO
@@ -0,0 +1,383 @@
+DOM: Copying extremely slows
+DOM: Remember the last 10 selected tokens in HelpDialog
+DOM: Display in Realtime Preview a new first column which contains a small warning icons
+ If the new and the old filename are identical
+DOM: Kontext menü im advance mode für alle text boxen:
+ Insert -> Filename To Lowercase
+ -> Filename To Upercase
+ -> Number
+ -> Date
+ -> ...
+
+DOM: First Start Dialog:
+
+ * 2 Screenshots von den beiden Modi
+ * + Beschreibungstext
+ -> KDE 4 Layout!!!!
+
+Stonki: Thumbnails auch im rename-tab fenster
+========================================
+Here's some feedback on it. I like it, but the "find and replace"
+function was unclear. Was it finding and replacing parts of the
+filename, or inside the contents of the files?
+========================================
+Thanks for making krename, it is truly a great piece of software. It saved
+me litteraly hours of painful work in sorting the hundreds of photographs
+given to us by at least a dozen different people for our wedding. It would
+have taken me ages to sort them by hand.
+
+This is only a small donation but I hope it will help in making krename
+even better.
+
+I had sent my comments earlier but to mention them again here are the only
+4 problems I have faced with krename (all relate to beginner mode, 'add
+files' section), none of them are show-stoppers bwt :) :
+
+1) in thumbnail view, when selecting a block of files to move around, they
+get copied to their destination in reverse order
+
+2) for some reason, the thumbnails do not always display (as in, the image
+thumbnails do not show, they stay as file type icons instead) when I select
+add files and only 'show thumbnail' is selected ('show file name' not
+checked). However, if I select add files with only 'show file name'
+checked, and THEN (after files are shown in list) check 'show thumbnails',
+then all the thumbnails will show properly.
+
+Cheers and thanks again for this great piece of software.
+========================================
+Hallo
+
+
+Erst mal vielen Dank für das Programm; es sparte mir eine Menge Zeit
+beim Re-Organisieren meiner MP3-Sammlung.
+
+Dabei habe ich es ziemlich oft benutzt, und mir sind einige Dinge
+aufgefallen, die vielleicht verbessert werden könnten. (Ich beziehe mich
+auf die Version 2.8.5. Falls eine neuere Version da ist, die meine
+Anmerkungen überflüssig macht, verzeih mir bitte):
+- Beim Hinzufügen von Verzeichnissen werden die selbst definierten
+Filter (*.mp3) und die Einstellung für "Unterverzeichnisse rekursiv
+hinzufügen" nicht gespeichert; vor allem die Rekursivität hat mich
+genervt, weil ich die immer wieder vergessen hab.
+
+Dankeschön für deine Mühe!
+
+Regards/MfG,
+Christian Weiske
+=======================================
+Hi,
+
+Ich habe ein paar verbesserungsvorschläge für Dein super Tool KRename:
+
+-) Bei den Plugins für auf KFilePlugins zurückgreifen, listest Du all ihre
+möglichen Felder auf. I fände es sehr hilfreich, wenn der ausgewählte
+Platzhalter automatisch bei einem Doppelklick darauf an Cursorposition in das
+Eingabefeld für das Namensmuster eingefühgt würde.
+Für die Übersicht wäre es auch schön, wenn dieses Eingabefeld nochmal (ohne
+drop-down menü) unter den plugins sichtbar wäre....
+
+-) Wäre es möglich, als Startwert nicht nur eine Zahl (0, 1, 2,...) sondern
+auch Buchstaben (a, b, c, ... / A, B, C, ...) angeben zu können?
+
+-) Es wäre super, wenn man verschiedene Zähler seperat definieren könnte. zB.
+mit einem Tabinterface für den Konfigurationsdialog "1. Zähler", "2. Zähler",
+etc, wenn mehr als eine ##-Grupe im Muster auftaucht
+
+-) Was ich immer wieder brauche ist eine reset-Bedingung, die den Zähler
+wieder auf seinen Startwert setzt, so das er quasi im Kreis zählt (1, 2, 3,
+1, 2, 3, 1, 2, 3,... mit 3 als reset)
+Ich könnte mir das als eine Zeile mit
+Checkbox "reset bei"; Combobox "<self> | 1. Zähler | 2. Zähler | ...";
+Combobox "> | >= | = | <= | <"; Spinbox für Zahl
+
+-) Was ich persönlich seltener brauche, für manche aber bestimmt hilfreich
+ist, wäre die Möglichkeit auch Schrittweiten a la "1/2" od. "1/3" zuzulassen.
+Im Falle "1/3" würde dann so gezählt: "1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4,
+5, ..."
+
+Gruss,
+Jonas
+=======================================
+
+On Sat June 12 2004 04:40 am, Dominik Seichter wrote:
+> Hi,
+>
+> This idea is also a good idea. KRename had a similar feature already in
+> earlier version (but not that powerful - you could only specify a fixed
+> tag). I do not know if this will be possible in 3.1 but I promisse that I
+> will look into this issue.
+>
+> CU Dom
+>
+> Am Freitag, 11. Juni 2004 05:51 schrieben Sie:
+> > At present you have tags to take information from a file and rename the
+> > file.
+> >
+> > Now think in reverse - krename plugins allow the possibility for a
+> > multiple format tagger.
+> >
+> > So a new tab would allow....
+> >
+> > artist - track - title - xxx.ogg
+> >
+> > to be parse with the following command
+> >
+> > [Artist] - [Track] - [Title] - xxx
+> >
+> > The info then could be written to the file tag.
+> >
+> > Also the inclusion of modifiers (and Search & Replace) allow for the
+> > information to be cleaned up before it is written.
+> >
+> > Phoenix
+
+This was inspired from using Cantus.
+
+TTC Timothy Taylor - Economics Lecture 20-A Global Economic Perspective.mp3
+Please enter the formatting string (%t - %s): TTC %a - %b %g %t-%s
+
+Feedback...
+20 A Global Economic Perspective ~ Timothy Taylor ~ Economics ~ 0 ~ Lecture
+
+The course is "Economics"
+%b stands for aBlum
+
+Now I could have done %x %a - %x %x %t-%s or variations there of
+%x stands for ignore.
+
+powerful concept, no? Like I said, krename has one extra twist no one else has
+done yet - multiple file formats
+
+And for another wow: combine the actions so the following happens
+filename -> tag -> filename
+This is what part of my script does.
+
+The only usability issue is the length of the tag names themselves,
+TTC [artist] - [album] [genre] [track]-[title]
+Is a tad long to write, no?
+[x] for ignore?
+
+Of course a drop-down combo "memory" would help.
+
+I hope my "annoyance" is helpful, Phoenix
+===================================================================
+[23:32:12] <Keimix> BTW is there a possibility to load just one of the kfile-plugins at krename startup, because loading all slows krename down alot?
+[23:35:49] <domseichter> No, not yet. But it's a good idea. Strange that I did not have it and nobody asked me for this feature!
+===================================================================
+"Squashing weird characters" sollte auf die ToDO liste
+===================================================================
+> Remark Dom, 4-10-2004
+> - Add a random token (maybe even a random number and a random string token)
+> In the first case the range and in the latter case the length should be specified
+
+===================================================================
+Arpad Biro <biro_arpad@yahoo.com>:
+
+----------------------
+
+
+an undo script bug:
+
+ 1. cd to a temporary dir (for example /tmp)
+ 2. touch file1
+ mkdir dir1
+ touch dir1/file2
+ 3. rename the above 3 items (use the "Add directory names with filenames" option),
+ and also create an undo script
+ 4. run the undo script
+
+The directory is renamed back first, and the file in it cannot be renamed back.
+
+other text-related things
+-------------------------
+
+
+The "WARNING..." string in the encoding conversion plugin is unlocalizable.
+===================================================================
+
+---------- Weitergeleitete Nachricht ----------
+
+Subject: krename - vorschlaege/diskussion
+Date: Dienstag, 13. September 2005 00:41
+From: Christian Goehl <pastulio@gmx.net>
+To: support@stonki.de
+
+Hello, as you live in germany I assume you speak German. If not,
+ tell me.
+
+Wenn man ueber den dsdirselectdialog Dateien/Ordner hinzufuegt und
+ die Anzahl enorm ist (70gb mp3s), wird die aktuelle kde session
+ beendet. Man kann noch den Crash-Handler sehen. Wahrscheinlich ist
+ das ein Bug in KFileDialog oder in Qt. Als Ausweg kann man
+ natuerlich die Dateien via D'n'D hinzufuegen, allerdings kann hat
+ man dann nicht die vielseitigen Optionen des Dialogs.
+
+Nun aber zu meinem eigentlichen Anliegen: Ich besitze eine riesige
+Musiksammlung, leider sind aber nicht alle Dateien einheitlich
+ benannt. Generell waere es mit Krename schon moeglich diese zu
+ vereinheitlichen, es ist aber sehr aufwendig, vorallem weil es
+ keine Verallgemeinerung von Dateitypen(z.B. Audiodatei) gibt, so
+ muss man immer beide Tags fuer mp3 und ogg einfuegen.
+
+Desweiteren waere eine Art KI wuenschenswert, welche bei bestimmten
+Stichwoertern wie zum Beispiel "Unbekannt, unknown, track" anhand
+ des Ordnernamens und MusicBrainz oder CDDB Vorschlaege zum taggen
+ macht.
+
+Vielleicht kann man auch noch einen Normalisierer einbauen, wobei
+ ich mir nicht genauch vorstellen kann, wie aufwendig sowas ist.
+
+Die oben genannten Vorschlaege sind nicht unbedingt als eine
+ Erweiterung zu Krename zu sehen, vielleicht sollten sie auch in
+ einer getrennten Anwendung realisiert werden. Denn der Vorgang
+ sollte auch fuer Anfaenger einfach sein. Moeglicherweise kommt
+ auch einfach ein neues Profil in Frage.
+
+Ich waere bereit an diesem Projekt mitzuarbeiten, obgleich meine
+Programmierfaehigkeiten eher im Hobbybereich liegen. Dennoch habe
+ ich schon Erfahrungen mit KDE/Qt gesammelt.
+
+MfG,
+Christian Goehl
+
+==================================================
+[14:43:43] <[Stonki]> 1) Man kann kein existierendes Profil ?berschreiben !
+[14:44:33] <Dom64> ok, stimmt das sollte möglich sein.
+[14:44:37] <Dom64> Kann man leicht hinzugeben
+[14:45:41] <[Stonki]> und bei den profilen m?chte ich noch paar andere EInstellungen sein
+[14:46:15] <[Stonki]> zum beispiel rufe ich krename ?ber krusader auf. Da w?re eine option bei den profilen toll, in der man automatisch im Reiter "Dateiname" landet
+[14:46:24] <[Stonki]> und NACH dem umbenennen automatisch krename schliessen
+[14:46:54] <Dom64> Praktisch einen "Profile Settings" Dialog mit:
+[14:46:58] <Dom64> -> Krename Default Page
+[14:46:59] <[Stonki]> und man sollte anzeigen lassen, WAS bei den profilen eigentlich nun gespeichert wird
+[14:47:04] <Dom64> -> Close Krename after renaming
+[14:47:23] <[Stonki]> -> Behaviour after renaming
+[14:47:30] <[Stonki]> rather than just closing
+[14:47:47] <Dom64> Ok, und da evtl. auch alles zum ändern. Also dass man dort auch direkt zum beispiel das template umstellen kann.
+[14:47:58] <Dom64> Stimmt, kann man ja mehr optionen machen als nur schliessen.
+[14:48:25] <[Stonki]> viel spass :)
+[14:48:29] <[Stonki]> UND
+[14:48:56] <Dom64> *g
+[14:49:01] <[Stonki]> es ging doch irgendwie die tracknummer von MP3 songs automatisch nach ## zu formatieren, oder ?
+[14:49:25] <[Stonki]> und das wird dann puenktlich zu kde 3.5 krename 3.50 :)
+[14:50:27] <Dom64> ja [###mp3TrackNumber]
+[14:50:41] <Dom64> einfach beliebig viele #'s voranstellen, geht bei jeder zahl die von einem plugin kommt
+[14:50:53] <Dom64> KRename 3.50 :)
+
+========
+[quote]
+1. If I select files in Konqueror and then right click too select actions|krename, then it takes me to the [files] section - but it would be more efficient to go straight to [filenames].
+[/quote]
+This was fixed some time ago. But does not work with the latest release. I will fix it for the next version.
+
+========
+
+Hello,
+
+This is a great software but there is a powerful feature that I'd like
+to see in the future.
+When you use the 'find and replace' feature, you only can give rules
+that apply on the original filename. Why don't give the possibility to
+apply a new rule on the original file changed by the past rules ?
+An exemple :
+
+the original file : "artist - the song.mp3"
+
+the result I want : "artist__the_song.mp3"
+
+The way I did that on windows (in the past :-) ) with emusic tag editor :
+rule 1 " " --> "_" the current filename is "artist_-_the_song.mp3"
+rule 2 "-" --> "_" the current filename is "artist___the_song.mp3"
+rule 3 "___" --> "__" the current filename is "artist__the_song.mp3"
+
+With this software, rules n applies on the filename modified by rules
+n-1, n-2, n-p and so on (this could be annoying, that's why the best is
+to give the possibility to have the present behaviour or 'my' feature
+enabled).
+
+
+With the current version (ok, I only have 3.03) it is not possible to do
+so in one shot. With the pas example :
+
+Find and replace:
+- add " " --> "_"
+- add "-" --> "_"
+- add "___" --> "__" ==> no effect because there is no such string in
+the original filename.
+The result is "artist___the_song.mp3".
+
+I could tried
+- add " - " --> __
+- add " " --> _
+There is a conflict and not all the changes are applied.
+
+Thank you for your response.
+
+Best regards.
+
+mailto : benoit.turpin@ecl2005.ec-lyon.fre
+
+============
+
+Package: krename
+Version: 3.0.9 3.5.1, Debian Package 4:3.5.1-4 (testing/unstable)
+Severity: wishlist
+Compiler: Target: x86_64-linux-gnu
+OS: Linux 2.6.15-1-amd64-k8-smp x86_64 (Debian Package 4:3.5.1-4 (testing/unstable))
+
+In konqueror file management, say you right-click on a file and select krename from actions. When krename comes up and displays the chosen file, click Add.
+
+Current behavior: the file selector opens in the user's home directory.
+
+Requested behavior: open in the same directory as the currently chosen file.
+
+Great program!
+Dave
+======================
+I just thought that krename is a great tool! And could be best: due its
+integration with konqueror it could manage a download directory in such
+manner that when a batch of files just arrives ( may be downloaded by kget),
+krename renames it and then moves it to another directory, keeping track of
+its activities, so the recent arrives never collides with elder files.
+
+Please, excuse my poor english.
+
+Best regards,
+
+Marcelo Mazini.
+==========================
+
+Hi, I download many scientific articles, usualy in pdf or ps, with httrack. When on my disk, names are often like 4523.pdf and I would like to use krename as :
+Withdraw title property in document to use it as a new fiel in rename items. If title property do not exist, use some heuristic to find the best candidate (say for example, in the first pages, usually the very first one, center aligned, biggest font size, bold, uppercase, and a ponderation rule of all this kind of criteria).
+Hope you like it and that it will be available. Let me now. I remain at your disposal if you want to discuss this feature. Best regards,
+Laurent.
+
+ ~~
+It is a good idea to add a feature to KRename so that you can check wether a token is empty (doesn't exist) and only use it if it does exist and use something else if it does not exist. I will try to add something to the next version.
+
+Unfortunately it would be a too big issue to add support for extracting headlines from a PDF file to KRename. This would require a complete PDF parser in KRename. If you want this functionallity it is better to write an external tool and use KRename's command plugin.
+
+best regards,
+ Dom
+==========================
+
+Morgen!
+
+Danke für die Idee. Das ist auf jeden Fall sinvoll, werde ich für die nächste Version hinzufügen.
+
+CU Dom
+
+Am Friday, 1. December 2006 19:38 schrieben Sie:
+> Kam gerade im Chat
+>
+> Bei den Settings von krename einstellen, wie viele Dateien er
+> wirklich anzeigt im Preview Fenster. Default: unlimited, aber wenn
+> man wirklich mal 10.000 Dateien umbenennt, dann kann man das z.B
+> auf 200 stellen, er macht das preview dann nur für 200 und erst
+> beim eigentlich start dann alle 10.000
+>
+>
+> cu
+> stonki
+
+==========================
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 0000000..32fcc62
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,12360 @@
+## -*- autoconf -*-
+
+dnl This file is part of the KDE libraries/packages
+dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu)
+dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org)
+
+dnl This file is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+
+dnl You should have received a copy of the GNU Library General Public License
+dnl along with this library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+dnl IMPORTANT NOTE:
+dnl Please do not modify this file unless you expect your modifications to be
+dnl carried into every other module in the repository.
+dnl
+dnl Single-module modifications are best placed in configure.in for kdelibs
+dnl and kdebase or configure.in.in if present.
+
+# KDE_PATH_X_DIRECT
+dnl Internal subroutine of AC_PATH_X.
+dnl Set ac_x_includes and/or ac_x_libraries.
+AC_DEFUN([KDE_PATH_X_DIRECT],
+[
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+if test "$ac_x_includes" = NO; then
+ # Guess where to find include files, by looking for this one X11 .h file.
+ test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
+
+ # First, try using that file with no special directory specified.
+AC_TRY_CPP([#include <$x_direct_test_include>],
+[# We can compile using X headers with no special include directory.
+ac_x_includes=],
+[# Look for the header file in a standard set of common directories.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ for ac_dir in \
+ /usr/X11/include \
+ /usr/X11R6/include \
+ /usr/X11R5/include \
+ /usr/X11R4/include \
+ \
+ /usr/include/X11 \
+ /usr/include/X11R6 \
+ /usr/include/X11R5 \
+ /usr/include/X11R4 \
+ \
+ /usr/local/X11/include \
+ /usr/local/X11R6/include \
+ /usr/local/X11R5/include \
+ /usr/local/X11R4/include \
+ \
+ /usr/local/include/X11 \
+ /usr/local/include/X11R6 \
+ /usr/local/include/X11R5 \
+ /usr/local/include/X11R4 \
+ \
+ /usr/X386/include \
+ /usr/x386/include \
+ /usr/XFree86/include/X11 \
+ \
+ /usr/include \
+ /usr/local/include \
+ /usr/unsupported/include \
+ /usr/athena/include \
+ /usr/local/x11r5/include \
+ /usr/lpp/Xamples/include \
+ \
+ /usr/openwin/include \
+ /usr/openwin/share/include \
+ ; \
+ do
+ if test -r "$ac_dir/$x_direct_test_include"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+ done])
+fi # $ac_x_includes = NO
+
+if test "$ac_x_libraries" = NO; then
+ # Check for the libraries.
+
+ test -z "$x_direct_test_library" && x_direct_test_library=Xt
+ test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
+
+ # See if we find them without any special options.
+ # Don't add to $LIBS permanently.
+ ac_save_LIBS="$LIBS"
+ LIBS="-l$x_direct_test_library $LIBS"
+AC_TRY_LINK([#include <X11/Intrinsic.h>], [${x_direct_test_function}(1)],
+[LIBS="$ac_save_LIBS"
+# We can link X programs with no special library path.
+ac_x_libraries=],
+[LIBS="$ac_save_LIBS"
+# First see if replacing the include by lib works.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+for ac_dir in `echo "$ac_x_includes" | sed s/include/lib${kdelibsuff}/` \
+ /usr/X11/lib${kdelibsuff} \
+ /usr/X11R6/lib${kdelibsuff} \
+ /usr/X11R5/lib${kdelibsuff} \
+ /usr/X11R4/lib${kdelibsuff} \
+ \
+ /usr/lib${kdelibsuff}/X11 \
+ /usr/lib${kdelibsuff}/X11R6 \
+ /usr/lib${kdelibsuff}/X11R5 \
+ /usr/lib${kdelibsuff}/X11R4 \
+ \
+ /usr/local/X11/lib${kdelibsuff} \
+ /usr/local/X11R6/lib${kdelibsuff} \
+ /usr/local/X11R5/lib${kdelibsuff} \
+ /usr/local/X11R4/lib${kdelibsuff} \
+ \
+ /usr/local/lib${kdelibsuff}/X11 \
+ /usr/local/lib${kdelibsuff}/X11R6 \
+ /usr/local/lib${kdelibsuff}/X11R5 \
+ /usr/local/lib${kdelibsuff}/X11R4 \
+ \
+ /usr/X386/lib${kdelibsuff} \
+ /usr/x386/lib${kdelibsuff} \
+ /usr/XFree86/lib${kdelibsuff}/X11 \
+ \
+ /usr/lib${kdelibsuff} \
+ /usr/local/lib${kdelibsuff} \
+ /usr/unsupported/lib${kdelibsuff} \
+ /usr/athena/lib${kdelibsuff} \
+ /usr/local/x11r5/lib${kdelibsuff} \
+ /usr/lpp/Xamples/lib${kdelibsuff} \
+ /lib/usr/lib${kdelibsuff}/X11 \
+ \
+ /usr/openwin/lib${kdelibsuff} \
+ /usr/openwin/share/lib${kdelibsuff} \
+ ; \
+do
+dnl Don't even attempt the hair of trying to link an X program!
+ for ac_extension in a so sl; do
+ if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
+ ac_x_libraries=$ac_dir
+ break 2
+ fi
+ done
+done])
+fi # $ac_x_libraries = NO
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Find a file (or one of more files in a list of dirs)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_FIND_FILE],
+[
+$3=NO
+for i in $2;
+do
+ for j in $1;
+ do
+ echo "configure: __oline__: $i/$j" >&AC_FD_CC
+ if test -r "$i/$j"; then
+ echo "taking that" >&AC_FD_CC
+ $3=$i
+ break 2
+ fi
+ done
+done
+])
+
+dnl KDE_FIND_PATH(program-name, variable-name, list-of-dirs,
+dnl if-not-found, test-parameter, prepend-path)
+dnl
+dnl Look for program-name in list-of-dirs+$PATH.
+dnl If prepend-path is set, look in $PATH+list-of-dirs instead.
+dnl If found, $variable-name is set. If not, if-not-found is evaluated.
+dnl test-parameter: if set, the program is executed with this arg,
+dnl and only a successful exit code is required.
+AC_DEFUN([KDE_FIND_PATH],
+[
+ AC_MSG_CHECKING([for $1])
+ if test -n "$$2"; then
+ kde_cv_path="$$2";
+ else
+ kde_cache=`echo $1 | sed 'y%./+-%__p_%'`
+
+ AC_CACHE_VAL(kde_cv_path_$kde_cache,
+ [
+ kde_cv_path="NONE"
+ kde_save_IFS=$IFS
+ IFS=':'
+ dirs=""
+ for dir in $PATH; do
+ dirs="$dirs $dir"
+ done
+ if test -z "$6"; then dnl Append dirs in PATH (default)
+ dirs="$3 $dirs"
+ else dnl Prepend dirs in PATH (if 6th arg is set)
+ dirs="$dirs $3"
+ fi
+ IFS=$kde_save_IFS
+
+ for dir in $dirs; do
+ if test -x "$dir/$1"; then
+ if test -n "$5"
+ then
+ evalstr="$dir/$1 $5 2>&1 "
+ if eval $evalstr; then
+ kde_cv_path="$dir/$1"
+ break
+ fi
+ else
+ kde_cv_path="$dir/$1"
+ break
+ fi
+ fi
+ done
+
+ eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+ ])
+
+ eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+ fi
+
+ if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+ AC_MSG_RESULT(not found)
+ $4
+ else
+ AC_MSG_RESULT($kde_cv_path)
+ $2=$kde_cv_path
+
+ fi
+])
+
+AC_DEFUN([KDE_MOC_ERROR_MESSAGE],
+[
+ AC_MSG_ERROR([No Qt meta object compiler (moc) found!
+Please check whether you installed Qt correctly.
+You need to have a running moc binary.
+configure tried to run $ac_cv_path_moc and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable MOC to the right one before running
+configure.
+])
+])
+
+AC_DEFUN([KDE_UIC_ERROR_MESSAGE],
+[
+ AC_MSG_WARN([No Qt ui compiler (uic) found!
+Please check whether you installed Qt correctly.
+You need to have a running uic binary.
+configure tried to run $ac_cv_path_uic and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable UIC to the right one before running
+configure.
+])
+])
+
+
+AC_DEFUN([KDE_CHECK_UIC_FLAG],
+[
+ AC_MSG_CHECKING([whether uic supports -$1 ])
+ kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
+ AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache,
+ [
+ cat >conftest.ui <<EOT
+ <!DOCTYPE UI><UI version="3" stdsetdef="1"></UI>
+EOT
+ ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null"
+ if AC_TRY_EVAL(ac_uic_testrun); then
+ eval "kde_cv_prog_uic_$kde_cache=yes"
+ else
+ eval "kde_cv_prog_uic_$kde_cache=no"
+ fi
+ rm -f conftest*
+ ])
+
+ if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT([yes])
+ :
+ $3
+ else
+ AC_MSG_RESULT([no])
+ :
+ $4
+ fi
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Find the meta object compiler and the ui compiler in the PATH,
+dnl in $QTDIR/bin, and some more usual places
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_PATH_QT_MOC_UIC],
+[
+ AC_REQUIRE([KDE_CHECK_PERL])
+ qt_bindirs=""
+ for dir in $kde_qt_dirs; do
+ qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc"
+ done
+ qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin"
+ if test ! "$ac_qt_bindir" = "NO"; then
+ qt_bindirs="$ac_qt_bindir $qt_bindirs"
+ fi
+
+ KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE])
+ if test -z "$UIC_NOT_NEEDED"; then
+ KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""])
+ if test -z "$UIC_PATH" ; then
+ KDE_UIC_ERROR_MESSAGE
+ exit 1
+ else
+ UIC=$UIC_PATH
+
+ if test $kde_qtver = 3; then
+ KDE_CHECK_UIC_FLAG(L,[/nonexistent],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no)
+ KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no)
+
+ if test x$ac_uic_supports_libpath = xyes; then
+ UIC="$UIC -L \$(kde_widgetdir)"
+ fi
+ if test x$ac_uic_supports_nounload = xyes; then
+ UIC="$UIC -nounload"
+ fi
+ fi
+ fi
+ else
+ UIC="echo uic not available: "
+ fi
+
+ AC_SUBST(MOC)
+ AC_SUBST(UIC)
+
+ UIC_TR="i18n"
+ if test $kde_qtver = 3; then
+ UIC_TR="tr2i18n"
+ fi
+
+ AC_SUBST(UIC_TR)
+])
+
+AC_DEFUN([KDE_1_CHECK_PATHS],
+[
+ KDE_1_CHECK_PATH_HEADERS
+
+ KDE_TEST_RPATH=
+
+ if test -n "$USE_RPATH"; then
+
+ if test -n "$kde_libraries"; then
+ KDE_TEST_RPATH="-R $kde_libraries"
+ fi
+
+ if test -n "$qt_libraries"; then
+ KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries"
+ fi
+
+ if test -n "$x_libraries"; then
+ KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries"
+ fi
+
+ KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH"
+ fi
+
+AC_MSG_CHECKING([for KDE libraries installed])
+ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5'
+
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_ERROR([your system fails at linking a small KDE application!
+Check, if your compiler is installed correctly and if you have used the
+same compiler to compile Qt and kdelibs as you did use now.
+For more details about this problem, look at the end of config.log.])
+fi
+
+if eval `KDEDIR= ./conftest 2>&5`; then
+ kde_result=done
+else
+ kde_result=problems
+fi
+
+KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log
+kde_have_all_paths=yes
+
+KDE_SET_PATHS($kde_result)
+
+])
+
+AC_DEFUN([KDE_SET_PATHS],
+[
+ kde_cv_all_paths="kde_have_all_paths=\"yes\" \
+ kde_htmldir=\"$kde_htmldir\" \
+ kde_appsdir=\"$kde_appsdir\" \
+ kde_icondir=\"$kde_icondir\" \
+ kde_sounddir=\"$kde_sounddir\" \
+ kde_datadir=\"$kde_datadir\" \
+ kde_locale=\"$kde_locale\" \
+ kde_cgidir=\"$kde_cgidir\" \
+ kde_confdir=\"$kde_confdir\" \
+ kde_kcfgdir=\"$kde_kcfgdir\" \
+ kde_mimedir=\"$kde_mimedir\" \
+ kde_toolbardir=\"$kde_toolbardir\" \
+ kde_wallpaperdir=\"$kde_wallpaperdir\" \
+ kde_templatesdir=\"$kde_templatesdir\" \
+ kde_bindir=\"$kde_bindir\" \
+ kde_servicesdir=\"$kde_servicesdir\" \
+ kde_servicetypesdir=\"$kde_servicetypesdir\" \
+ kde_moduledir=\"$kde_moduledir\" \
+ kde_styledir=\"$kde_styledir\" \
+ kde_widgetdir=\"$kde_widgetdir\" \
+ xdg_appsdir=\"$xdg_appsdir\" \
+ xdg_menudir=\"$xdg_menudir\" \
+ xdg_directorydir=\"$xdg_directorydir\" \
+ kde_result=$1"
+])
+
+AC_DEFUN([KDE_SET_DEFAULT_PATHS],
+[
+if test "$1" = "default"; then
+
+ if test -z "$kde_htmldir"; then
+ kde_htmldir='\${datadir}/doc/HTML'
+ fi
+ if test -z "$kde_appsdir"; then
+ kde_appsdir='\${datadir}/applnk'
+ fi
+ if test -z "$kde_icondir"; then
+ kde_icondir='\${datadir}/icons'
+ fi
+ if test -z "$kde_sounddir"; then
+ kde_sounddir='\${datadir}/sounds'
+ fi
+ if test -z "$kde_datadir"; then
+ kde_datadir='\${datadir}/apps'
+ fi
+ if test -z "$kde_locale"; then
+ kde_locale='\${datadir}/locale'
+ fi
+ if test -z "$kde_cgidir"; then
+ kde_cgidir='\${exec_prefix}/cgi-bin'
+ fi
+ if test -z "$kde_confdir"; then
+ kde_confdir='\${datadir}/config'
+ fi
+ if test -z "$kde_kcfgdir"; then
+ kde_kcfgdir='\${datadir}/config.kcfg'
+ fi
+ if test -z "$kde_mimedir"; then
+ kde_mimedir='\${datadir}/mimelnk'
+ fi
+ if test -z "$kde_toolbardir"; then
+ kde_toolbardir='\${datadir}/toolbar'
+ fi
+ if test -z "$kde_wallpaperdir"; then
+ kde_wallpaperdir='\${datadir}/wallpapers'
+ fi
+ if test -z "$kde_templatesdir"; then
+ kde_templatesdir='\${datadir}/templates'
+ fi
+ if test -z "$kde_bindir"; then
+ kde_bindir='\${exec_prefix}/bin'
+ fi
+ if test -z "$kde_servicesdir"; then
+ kde_servicesdir='\${datadir}/services'
+ fi
+ if test -z "$kde_servicetypesdir"; then
+ kde_servicetypesdir='\${datadir}/servicetypes'
+ fi
+ if test -z "$kde_moduledir"; then
+ if test "$kde_qtver" = "2"; then
+ kde_moduledir='\${libdir}/kde2'
+ else
+ kde_moduledir='\${libdir}/kde3'
+ fi
+ fi
+ if test -z "$kde_styledir"; then
+ kde_styledir='\${libdir}/kde3/plugins/styles'
+ fi
+ if test -z "$kde_widgetdir"; then
+ kde_widgetdir='\${libdir}/kde3/plugins/designer'
+ fi
+ if test -z "$xdg_appsdir"; then
+ xdg_appsdir='\${datadir}/applications/kde'
+ fi
+ if test -z "$xdg_menudir"; then
+ xdg_menudir='\${sysconfdir}/xdg/menus'
+ fi
+ if test -z "$xdg_directorydir"; then
+ xdg_directorydir='\${datadir}/desktop-directories'
+ fi
+
+ KDE_SET_PATHS(defaults)
+
+else
+
+ if test $kde_qtver = 1; then
+ AC_MSG_RESULT([compiling])
+ KDE_1_CHECK_PATHS
+ else
+ AC_MSG_ERROR([path checking not yet supported for KDE 2])
+ fi
+
+fi
+])
+
+AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS],
+[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" ||
+ test -z "$kde_icondir" || test -z "$kde_sounddir" ||
+ test -z "$kde_datadir" || test -z "$kde_locale" ||
+ test -z "$kde_cgidir" || test -z "$kde_confdir" ||
+ test -z "$kde_kcfgdir" ||
+ test -z "$kde_mimedir" || test -z "$kde_toolbardir" ||
+ test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" ||
+ test -z "$kde_bindir" || test -z "$kde_servicesdir" ||
+ test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" ||
+ test -z "$kde_styledir" || test -z "kde_widgetdir" ||
+ test -z "$xdg_appsdir" || test -z "$xdg_menudir" || test -z "$xdg_directorydir" ||
+ test "x$kde_have_all_paths" != "xyes"; then
+ kde_have_all_paths=no
+ fi
+])
+
+AC_DEFUN([KDE_MISSING_PROG_ERROR],
+[
+ AC_MSG_ERROR([The important program $1 was not found!
+Please check whether you installed KDE correctly.
+])
+])
+
+AC_DEFUN([KDE_MISSING_ARTS_ERROR],
+[
+ AC_MSG_ERROR([The important program $1 was not found!
+Please check whether you installed aRts correctly or use
+--without-arts to compile without aRts support (this will remove functionality).
+])
+])
+
+AC_DEFUN([KDE_SET_DEFAULT_BINDIRS],
+[
+ kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin"
+ test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs"
+ if test -n "$KDEDIRS"; then
+ kde_save_IFS=$IFS
+ IFS=:
+ for dir in $KDEDIRS; do
+ kde_default_bindirs="$dir/bin $kde_default_bindirs "
+ done
+ IFS=$kde_save_IFS
+ fi
+])
+
+AC_DEFUN([KDE_SUBST_PROGRAMS],
+[
+ AC_ARG_WITH(arts,
+ AC_HELP_STRING([--without-arts],[build without aRts [default=no]]),
+ [build_arts=$withval],
+ [build_arts=yes]
+ )
+ AM_CONDITIONAL(include_ARTS, test "$build_arts" '!=' "no")
+ if test "$build_arts" = "no"; then
+ AC_DEFINE(WITHOUT_ARTS, 1, [Defined if compiling without arts])
+ fi
+
+ KDE_SET_DEFAULT_BINDIRS
+ kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_libs_prefix/bin $kde_default_bindirs"
+ KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)])
+ KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)])
+ if test "$build_arts" '!=' "no"; then
+ KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)])
+ KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)])
+ fi
+ KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs])
+
+ kde32ornewer=1
+ kde33ornewer=1
+ if test -n "$kde_qtver" && test "$kde_qtver" -lt 3; then
+ kde32ornewer=
+ kde33ornewer=
+ else
+ if test "$kde_qtver" = "3"; then
+ if test "$kde_qtsubver" -le 1; then
+ kde32ornewer=
+ fi
+ if test "$kde_qtsubver" -le 2; then
+ kde33ornewer=
+ fi
+ if test "$KDECONFIG" != "compiled"; then
+ if test `$KDECONFIG --version | grep KDE | sed 's/KDE: \(...\).*/\1/'` = 3.2; then
+ kde33ornewer=
+ fi
+ fi
+ fi
+ fi
+
+ if test -n "$kde32ornewer"; then
+ KDE_FIND_PATH(kconfig_compiler, KCONFIG_COMPILER, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kconfig_compiler)])
+ KDE_FIND_PATH(dcopidlng, DCOPIDLNG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidlng)])
+ fi
+ if test -n "$kde33ornewer"; then
+ KDE_FIND_PATH(makekdewidgets, MAKEKDEWIDGETS, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(makekdewidgets)])
+ AC_SUBST(MAKEKDEWIDGETS)
+ fi
+ KDE_FIND_PATH(xmllint, XMLLINT, [${prefix}/bin ${exec_prefix}/bin], [XMLLINT=""])
+
+ if test -n "$MEINPROC" -a "$MEINPROC" != "compiled"; then
+ kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share"
+ test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs"
+ AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET)
+ if test "$KDE_XSL_STYLESHEET" = "NO"; then
+ KDE_XSL_STYLESHEET=""
+ else
+ KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl"
+ fi
+ fi
+
+ DCOP_DEPENDENCIES='$(DCOPIDL)'
+ if test -n "$kde32ornewer"; then
+ KCFG_DEPENDENCIES='$(KCONFIG_COMPILER)'
+ DCOP_DEPENDENCIES='$(DCOPIDL) $(DCOPIDLNG)'
+ AC_SUBST(KCONFIG_COMPILER)
+ AC_SUBST(KCFG_DEPENDENCIES)
+ AC_SUBST(DCOPIDLNG)
+ fi
+ AC_SUBST(DCOPIDL)
+ AC_SUBST(DCOPIDL2CPP)
+ AC_SUBST(DCOP_DEPENDENCIES)
+ AC_SUBST(MCOPIDL)
+ AC_SUBST(ARTSCCONFIG)
+ AC_SUBST(MEINPROC)
+ AC_SUBST(KDE_XSL_STYLESHEET)
+ AC_SUBST(XMLLINT)
+])dnl
+
+AC_DEFUN([AC_CREATE_KFSSTND],
+[
+AC_REQUIRE([AC_CHECK_RPATH])
+
+AC_MSG_CHECKING([for KDE paths])
+kde_result=""
+kde_cached_paths=yes
+AC_CACHE_VAL(kde_cv_all_paths,
+[
+ KDE_SET_DEFAULT_PATHS($1)
+ kde_cached_paths=no
+])
+eval "$kde_cv_all_paths"
+KDE_CHECK_PATHS_FOR_COMPLETENESS
+if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then
+ # wrong values were cached, may be, we can set better ones
+ kde_result=
+ kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir=
+ kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_kcfgdir=
+ kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir=
+ kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir=
+ kde_have_all_paths=
+ kde_styledir=
+ kde_widgetdir=
+ xdg_appsdir = xdg_menudir= xdg_directorydir=
+ KDE_SET_DEFAULT_PATHS($1)
+ eval "$kde_cv_all_paths"
+ KDE_CHECK_PATHS_FOR_COMPLETENESS
+ kde_result="$kde_result (cache overridden)"
+fi
+if test "$kde_have_all_paths" = "no"; then
+ AC_MSG_ERROR([configure could not run a little KDE program to test the environment.
+Since it had compiled and linked before, it must be a strange problem on your system.
+Look at config.log for details. If you are not able to fix this, look at
+http://www.kde.org/faq/installation.html or any www.kde.org mirror.
+(If you're using an egcs version on Linux, you may update binutils!)
+])
+else
+ rm -f conftest*
+ AC_MSG_RESULT($kde_result)
+fi
+
+bindir=$kde_bindir
+
+KDE_SUBST_PROGRAMS
+
+])
+
+AC_DEFUN([AC_SUBST_KFSSTND],
+[
+AC_SUBST(kde_htmldir)
+AC_SUBST(kde_appsdir)
+AC_SUBST(kde_icondir)
+AC_SUBST(kde_sounddir)
+AC_SUBST(kde_datadir)
+AC_SUBST(kde_locale)
+AC_SUBST(kde_confdir)
+AC_SUBST(kde_kcfgdir)
+AC_SUBST(kde_mimedir)
+AC_SUBST(kde_wallpaperdir)
+AC_SUBST(kde_bindir)
+dnl X Desktop Group standards
+AC_SUBST(xdg_appsdir)
+AC_SUBST(xdg_menudir)
+AC_SUBST(xdg_directorydir)
+dnl for KDE 2
+AC_SUBST(kde_templatesdir)
+AC_SUBST(kde_servicesdir)
+AC_SUBST(kde_servicetypesdir)
+AC_SUBST(kde_moduledir)
+AC_SUBST(kdeinitdir, '$(kde_moduledir)')
+AC_SUBST(kde_styledir)
+AC_SUBST(kde_widgetdir)
+if test "$kde_qtver" = 1; then
+ kde_minidir="$kde_icondir/mini"
+else
+# for KDE 1 - this breaks KDE2 apps using minidir, but
+# that's the plan ;-/
+ kde_minidir="/dev/null"
+fi
+dnl AC_SUBST(kde_minidir)
+dnl AC_SUBST(kde_cgidir)
+dnl AC_SUBST(kde_toolbardir)
+])
+
+AC_DEFUN([KDE_MISC_TESTS],
+[
+ dnl Checks for libraries.
+ AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD
+ AC_SUBST(LIBUTIL)
+ AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD
+ AC_SUBST(LIBCOMPAT)
+ kde_have_crypt=
+ AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes],
+ AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [
+ AC_MSG_WARN([you have no crypt in either libcrypt or libc.
+You should install libcrypt from another source or configure with PAM
+support])
+ kde_have_crypt=no
+ ]))
+ AC_SUBST(LIBCRYPT)
+ if test $kde_have_crypt = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function])
+ fi
+ AC_CHECK_SOCKLEN_T
+ AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"])
+ if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+ AC_CHECK_LIB(dnet_stub, dnet_ntoa,
+ [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"])
+ fi
+ AC_CHECK_FUNC(inet_ntoa)
+ if test $ac_cv_func_inet_ntoa = no; then
+ AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl")
+ fi
+ AC_CHECK_FUNC(connect)
+ if test $ac_cv_func_connect = no; then
+ AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", ,
+ $X_EXTRA_LIBS)
+ fi
+
+ AC_CHECK_FUNC(remove)
+ if test $ac_cv_func_remove = no; then
+ AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix")
+ fi
+
+ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+ AC_CHECK_FUNC(shmat, ,
+ AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"))
+
+ # more headers that need to be explicitly included on darwin
+ AC_CHECK_HEADERS(sys/types.h stdint.h)
+
+ # sys/bitypes.h is needed for uint32_t and friends on Tru64
+ AC_CHECK_HEADERS(sys/bitypes.h)
+
+ # darwin requires a poll emulation library
+ AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll")
+
+ # for some image handling on Mac OS X
+ AC_CHECK_HEADERS(Carbon/Carbon.h)
+
+ # CoreAudio framework
+ AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [
+ AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API])
+ FRAMEWORK_COREAUDIO="-Xlinker -framework -Xlinker CoreAudio"
+ ])
+
+ AC_CHECK_RES_INIT
+ AC_SUBST(LIB_POLL)
+ AC_SUBST(FRAMEWORK_COREAUDIO)
+ LIBSOCKET="$X_EXTRA_LIBS"
+ AC_SUBST(LIBSOCKET)
+ AC_SUBST(X_EXTRA_LIBS)
+ AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4
+ AC_SUBST(LIBUCB)
+
+ case $host in dnl this *is* LynxOS specific
+ *-*-lynxos* )
+ AC_MSG_CHECKING([LynxOS header file wrappers])
+ [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"]
+ AC_MSG_RESULT(disabled)
+ AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS
+ ;;
+ esac
+
+ KDE_CHECK_TYPES
+ KDE_CHECK_LIBDL
+ KDE_CHECK_STRLCPY
+ KDE_CHECK_PIE_SUPPORT
+
+# darwin needs this to initialize the environment
+AC_CHECK_HEADERS(crt_externs.h)
+AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
+
+AH_VERBATIM(_DARWIN_ENVIRON,
+[
+#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
+# include <sys/time.h>
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron())
+#endif
+])
+
+AH_VERBATIM(_AIX_STRINGS_H_BZERO,
+[
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+])
+
+AC_CHECK_FUNCS([vsnprintf snprintf])
+
+AH_VERBATIM(_TRU64,[
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+])
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Find the header files and libraries for X-Windows. Extended the
+dnl macro AC_PATH_X
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([K_PATH_X],
+[
+AC_REQUIRE([KDE_MISC_TESTS])dnl
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_ARG_ENABLE(
+ embedded,
+ AC_HELP_STRING([--enable-embedded],[link to Qt-embedded, don't use X]),
+ kde_use_qt_emb=$enableval,
+ kde_use_qt_emb=no
+)
+
+AC_ARG_ENABLE(
+ qtopia,
+ AC_HELP_STRING([--enable-qtopia],[link to Qt-embedded, link to the Qtopia Environment]),
+ kde_use_qt_emb_palm=$enableval,
+ kde_use_qt_emb_palm=no
+)
+
+AC_ARG_ENABLE(
+ mac,
+ AC_HELP_STRING([--enable-mac],[link to Qt/Mac (don't use X)]),
+ kde_use_qt_mac=$enableval,
+ kde_use_qt_mac=no
+)
+
+# used to disable x11-specific stuff on special platforms
+AM_CONDITIONAL(include_x11, test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no")
+
+if test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no"; then
+
+AC_MSG_CHECKING(for X)
+
+AC_CACHE_VAL(kde_cv_have_x,
+[# One or both of the vars are not set, and there is no cached value.
+if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then
+ kde_x_includes=NO
+else
+ kde_x_includes=$x_includes
+fi
+if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then
+ kde_x_libraries=NO
+else
+ kde_x_libraries=$x_libraries
+fi
+
+# below we use the standard autoconf calls
+ac_x_libraries=$kde_x_libraries
+ac_x_includes=$kde_x_includes
+
+KDE_PATH_X_DIRECT
+dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries.
+dnl Unfortunately, if compiling with the N32 ABI, this is not the correct
+dnl location. The correct location is /usr/lib32 or an undefined value
+dnl (the linker is smart enough to pick the correct default library).
+dnl Things work just fine if you use just AC_PATH_X_DIRECT.
+dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to
+dnl /usr/openwin/include, which doesn't work. /usr/include does work, so
+dnl x_includes should be left alone.
+case "$host" in
+mips-sgi-irix6*)
+ ;;
+*-*-solaris*)
+ ;;
+*)
+ _AC_PATH_X_XMKMF
+ if test -z "$ac_x_includes"; then
+ ac_x_includes="."
+ fi
+ if test -z "$ac_x_libraries"; then
+ ac_x_libraries="/usr/lib${kdelibsuff}"
+ fi
+esac
+#from now on we use our own again
+
+# when the user already gave --x-includes, we ignore
+# what the standard autoconf macros told us.
+if test "$kde_x_includes" = NO; then
+ kde_x_includes=$ac_x_includes
+fi
+
+# for --x-libraries too
+if test "$kde_x_libraries" = NO; then
+ kde_x_libraries=$ac_x_libraries
+fi
+
+if test "$kde_x_includes" = NO; then
+ AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!])
+fi
+
+if test "$kde_x_libraries" = NO; then
+ AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!])
+fi
+
+# Record where we found X for the cache.
+kde_cv_have_x="have_x=yes \
+ kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries"
+])dnl
+
+eval "$kde_cv_have_x"
+
+if test "$have_x" != yes; then
+ AC_MSG_RESULT($have_x)
+ no_x=yes
+else
+ AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes])
+fi
+
+if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then
+ X_INCLUDES=""
+ x_includes="."; dnl better than nothing :-
+ else
+ x_includes=$kde_x_includes
+ X_INCLUDES="-I$x_includes"
+fi
+
+if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then
+ X_LDFLAGS=""
+ x_libraries="/usr/lib"; dnl better than nothing :-
+ else
+ x_libraries=$kde_x_libraries
+ X_LDFLAGS="-L$x_libraries"
+fi
+all_includes="$X_INCLUDES"
+all_libraries="$X_LDFLAGS $LDFLAGS_AS_NEEDED $LDFLAGS_NEW_DTAGS"
+
+# Check for libraries that X11R6 Xt/Xaw programs need.
+ac_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+# check for ICE first), but we must link in the order -lSM -lICE or
+# we get undefined symbols. So assume we have SM if we have ICE.
+# These have to be linked with before -lX11, unlike the other
+# libraries we check for below, so use a different variable.
+# --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
+AC_CHECK_LIB(ICE, IceConnectionNumber,
+ [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS)
+LDFLAGS="$ac_save_LDFLAGS"
+
+LIB_X11='-lX11 $(LIBSOCKET)'
+
+AC_MSG_CHECKING(for libXext)
+AC_CACHE_VAL(kde_cv_have_libXext,
+[
+kde_ldflags_safe="$LDFLAGS"
+kde_libs_safe="$LIBS"
+
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+LIBS="-lXext -lX11 $LIBSOCKET"
+
+AC_TRY_LINK([
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+],
+[
+printf("hello Xext\n");
+],
+kde_cv_have_libXext=yes,
+kde_cv_have_libXext=no
+)
+
+LDFLAGS=$kde_ldflags_safe
+LIBS=$kde_libs_safe
+])
+
+AC_MSG_RESULT($kde_cv_have_libXext)
+
+if test "$kde_cv_have_libXext" = "no"; then
+ AC_MSG_ERROR([We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either.])
+fi
+
+LIB_XEXT="-lXext"
+QTE_NORTTI=""
+
+elif test "$kde_use_qt_emb" = "yes"; then
+ dnl We're using QT Embedded
+ CPPFLAGS=-DQWS
+ CXXFLAGS="$CXXFLAGS -fno-rtti"
+ QTE_NORTTI="-fno-rtti -DQWS"
+ X_PRE_LIBS=""
+ LIB_X11=""
+ LIB_XEXT=""
+ LIB_XRENDER=""
+ LIBSM=""
+ X_INCLUDES=""
+ X_LDFLAGS=""
+ x_includes=""
+ x_libraries=""
+elif test "$kde_use_qt_mac" = "yes"; then
+ dnl We're using QT/Mac (I use QT_MAC so that qglobal.h doesn't *have* to
+ dnl be included to get the information) --Sam
+ CXXFLAGS="$CXXFLAGS -DQT_MAC -no-cpp-precomp"
+ CFLAGS="$CFLAGS -DQT_MAC -no-cpp-precomp"
+ X_PRE_LIBS=""
+ LIB_X11=""
+ LIB_XEXT=""
+ LIB_XRENDER=""
+ LIBSM=""
+ X_INCLUDES=""
+ X_LDFLAGS=""
+ x_includes=""
+ x_libraries=""
+fi
+AC_SUBST(X_PRE_LIBS)
+AC_SUBST(LIB_X11)
+AC_SUBST(LIB_XRENDER)
+AC_SUBST(LIBSM)
+AC_SUBST(X_INCLUDES)
+AC_SUBST(X_LDFLAGS)
+AC_SUBST(x_includes)
+AC_SUBST(x_libraries)
+AC_SUBST(QTE_NORTTI)
+AC_SUBST(LIB_XEXT)
+
+])
+
+AC_DEFUN([KDE_PRINT_QT_PROGRAM],
+[
+AC_REQUIRE([KDE_USE_QT])
+cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qglobal.h>
+#include <qapplication.h>
+EOF
+if test "$kde_qtver" = "2"; then
+cat >> conftest.$ac_ext <<EOF
+#include <qevent.h>
+#include <qstring.h>
+#include <qstyle.h>
+EOF
+
+if test $kde_qtsubver -gt 0; then
+cat >> conftest.$ac_ext <<EOF
+#if QT_VERSION < 210
+#error 1
+#endif
+EOF
+fi
+fi
+
+if test "$kde_qtver" = "3"; then
+cat >> conftest.$ac_ext <<EOF
+#include <qcursor.h>
+#include <qstylefactory.h>
+#include <private/qucomextra_p.h>
+EOF
+fi
+
+echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext
+cat >> conftest.$ac_ext <<EOF
+#error 1
+#endif
+
+int main() {
+EOF
+if test "$kde_qtver" = "2"; then
+cat >> conftest.$ac_ext <<EOF
+ QStringList *t = new QStringList();
+ Q_UNUSED(t);
+EOF
+if test $kde_qtsubver -gt 0; then
+cat >> conftest.$ac_ext <<EOF
+ QString s;
+ s.setLatin1("Elvis is alive", 14);
+EOF
+fi
+fi
+if test "$kde_qtver" = "3"; then
+cat >> conftest.$ac_ext <<EOF
+ (void)QStyleFactory::create(QString::null);
+ QCursor c(Qt::WhatsThisCursor);
+EOF
+fi
+cat >> conftest.$ac_ext <<EOF
+ return 0;
+}
+EOF
+])
+
+AC_DEFUN([KDE_USE_QT],
+[
+if test -z "$1"; then
+ # Current default Qt version: 3.3
+ kde_qtver=3
+ kde_qtsubver=3
+else
+ kde_qtsubver=`echo "$1" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'`
+ # following is the check if subversion isnt found in passed argument
+ if test "$kde_qtsubver" = "$1"; then
+ kde_qtsubver=1
+ fi
+ kde_qtver=`echo "$1" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
+ if test "$kde_qtver" = "1"; then
+ kde_qtsubver=42
+ fi
+fi
+
+if test -z "$2"; then
+ if test "$kde_qtver" = "2"; then
+ if test $kde_qtsubver -gt 0; then
+ kde_qt_minversion=">= Qt 2.2.2"
+ else
+ kde_qt_minversion=">= Qt 2.0.2"
+ fi
+ fi
+ if test "$kde_qtver" = "3"; then
+ if test $kde_qtsubver -gt 0; then
+ if test $kde_qtsubver -gt 1; then
+ if test $kde_qtsubver -gt 2; then
+ kde_qt_minversion=">= Qt 3.3 and < 4.0"
+ else
+ kde_qt_minversion=">= Qt 3.2 and < 4.0"
+ fi
+ else
+ kde_qt_minversion=">= Qt 3.1 (20021021) and < 4.0"
+ fi
+ else
+ kde_qt_minversion=">= Qt 3.0 and < 4.0"
+ fi
+ fi
+ if test "$kde_qtver" = "1"; then
+ kde_qt_minversion=">= 1.42 and < 2.0"
+ fi
+else
+ kde_qt_minversion="$2"
+fi
+
+if test -z "$3"; then
+ if test $kde_qtver = 3; then
+ if test $kde_qtsubver -gt 0; then
+ kde_qt_verstring="QT_VERSION >= 0x03@VER@00 && QT_VERSION < 0x040000"
+ qtsubver=`echo "00$kde_qtsubver" | sed -e 's,.*\(..\)$,\1,'`
+ kde_qt_verstring=`echo $kde_qt_verstring | sed -e "s,@VER@,$qtsubver,"`
+ else
+ kde_qt_verstring="QT_VERSION >= 300 && QT_VERSION < 0x040000"
+ fi
+ fi
+ if test $kde_qtver = 2; then
+ if test $kde_qtsubver -gt 0; then
+ kde_qt_verstring="QT_VERSION >= 222"
+ else
+ kde_qt_verstring="QT_VERSION >= 200"
+ fi
+ fi
+ if test $kde_qtver = 1; then
+ kde_qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
+ fi
+else
+ kde_qt_verstring="$3"
+fi
+
+if test $kde_qtver = 4; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt4 /usr/lib/qt /usr/share/qt4"
+fi
+if test $kde_qtver = 3; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3"
+fi
+if test $kde_qtver = 2; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
+fi
+if test $kde_qtver = 1; then
+ kde_qt_dirs="$QTDIR /usr/lib/qt"
+fi
+])
+
+AC_DEFUN([KDE_CHECK_QT_DIRECT],
+[
+AC_REQUIRE([KDE_USE_QT])
+AC_MSG_CHECKING([if Qt compiles without flags])
+AC_CACHE_VAL(kde_cv_qt_direct,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
+ac_LIBRARY_PATH="$LIBRARY_PATH"
+ac_cxxflags_safe="$CXXFLAGS"
+ac_ldflags_safe="$LDFLAGS"
+ac_libs_safe="$LIBS"
+
+CXXFLAGS="$CXXFLAGS -I$qt_includes"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$LIBQT -lXext -lX11 $LIBSOCKET"
+else
+LIBS="$LIBQT $LIBSOCKET"
+fi
+LD_LIBRARY_PATH=
+export LD_LIBRARY_PATH
+LIBRARY_PATH=
+export LIBRARY_PATH
+
+KDE_PRINT_QT_PROGRAM
+
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ kde_cv_qt_direct="yes"
+else
+ kde_cv_qt_direct="no"
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat conftest.$ac_ext >&AC_FD_CC
+fi
+
+rm -f conftest*
+CXXFLAGS="$ac_cxxflags_safe"
+LDFLAGS="$ac_ldflags_safe"
+LIBS="$ac_libs_safe"
+
+LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
+export LD_LIBRARY_PATH
+LIBRARY_PATH="$ac_LIBRARY_PATH"
+export LIBRARY_PATH
+AC_LANG_RESTORE
+])
+
+if test "$kde_cv_qt_direct" = "yes"; then
+ AC_MSG_RESULT(yes)
+ $1
+else
+ AC_MSG_RESULT(no)
+ $2
+fi
+])
+
+dnl ------------------------------------------------------------------------
+dnl Try to find the Qt headers and libraries.
+dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
+dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_PATH_QT_1_3],
+[
+AC_REQUIRE([K_PATH_X])
+AC_REQUIRE([KDE_USE_QT])
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+dnl ------------------------------------------------------------------------
+dnl Add configure flag to enable linking to MT version of Qt library.
+dnl ------------------------------------------------------------------------
+
+AC_ARG_ENABLE(
+ mt,
+ AC_HELP_STRING([--disable-mt],[link to non-threaded Qt (deprecated)]),
+ kde_use_qt_mt=$enableval,
+ [
+ if test $kde_qtver = 3; then
+ kde_use_qt_mt=yes
+ else
+ kde_use_qt_mt=no
+ fi
+ ]
+)
+
+USING_QT_MT=""
+
+dnl ------------------------------------------------------------------------
+dnl If we not get --disable-qt-mt then adjust some vars for the host.
+dnl ------------------------------------------------------------------------
+
+KDE_MT_LDFLAGS=
+KDE_MT_LIBS=
+if test "x$kde_use_qt_mt" = "xyes"; then
+ KDE_CHECK_THREADING
+ if test "x$kde_use_threading" = "xyes"; then
+ CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS"
+ KDE_MT_LDFLAGS="$USE_THREADS"
+ KDE_MT_LIBS="$LIBPTHREAD"
+ else
+ kde_use_qt_mt=no
+ fi
+fi
+AC_SUBST(KDE_MT_LDFLAGS)
+AC_SUBST(KDE_MT_LIBS)
+
+kde_qt_was_given=yes
+
+dnl ------------------------------------------------------------------------
+dnl If we haven't been told how to link to Qt, we work it out for ourselves.
+dnl ------------------------------------------------------------------------
+if test -z "$LIBQT_GLOB"; then
+ if test "x$kde_use_qt_emb" = "xyes"; then
+ LIBQT_GLOB="libqte.*"
+ else
+ LIBQT_GLOB="libqt.*"
+ fi
+fi
+
+dnl ------------------------------------------------------------
+dnl If we got --enable-embedded then adjust the Qt library name.
+dnl ------------------------------------------------------------
+if test "x$kde_use_qt_emb" = "xyes"; then
+ qtlib="qte"
+else
+ qtlib="qt"
+fi
+
+kde_int_qt="-l$qtlib"
+
+if test -z "$LIBQPE"; then
+dnl ------------------------------------------------------------
+dnl If we got --enable-palmtop then add -lqpe to the link line
+dnl ------------------------------------------------------------
+ if test "x$kde_use_qt_emb" = "xyes"; then
+ if test "x$kde_use_qt_emb_palm" = "xyes"; then
+ LIB_QPE="-lqpe"
+ else
+ LIB_QPE=""
+ fi
+ else
+ LIB_QPE=""
+ fi
+fi
+
+dnl ------------------------------------------------------------------------
+dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
+dnl ------------------------------------------------------------------------
+
+if test "x$kde_use_qt_mt" = "xyes"; then
+ LIBQT="-l$qtlib-mt"
+ kde_int_qt="-l$qtlib-mt"
+ LIBQT_GLOB="lib$qtlib-mt.*"
+ USING_QT_MT="using -mt"
+else
+ LIBQT="-l$qtlib"
+fi
+
+if test $kde_qtver != 1; then
+
+ AC_REQUIRE([AC_FIND_PNG])
+ AC_REQUIRE([AC_FIND_JPEG])
+ LIBQT="$LIBQT $LIBPNG $LIBJPEG"
+fi
+
+if test $kde_qtver = 3; then
+ AC_REQUIRE([KDE_CHECK_LIBDL])
+ LIBQT="$LIBQT $LIBDL"
+fi
+
+AC_MSG_CHECKING([for Qt])
+
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET"
+fi
+ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
+qt_libraries=""
+qt_includes=""
+AC_ARG_WITH(qt-dir,
+ AC_HELP_STRING([--with-qt-dir=DIR],[where the root of Qt is installed ]),
+ [ ac_qt_includes="$withval"/include
+ ac_qt_libraries="$withval"/lib${kdelibsuff}
+ ac_qt_bindir="$withval"/bin
+ ])
+
+AC_ARG_WITH(qt-includes,
+ AC_HELP_STRING([--with-qt-includes=DIR],[where the Qt includes are. ]),
+ [
+ ac_qt_includes="$withval"
+ ])
+
+kde_qt_libs_given=no
+
+AC_ARG_WITH(qt-libraries,
+ AC_HELP_STRING([--with-qt-libraries=DIR],[where the Qt library is installed.]),
+ [ ac_qt_libraries="$withval"
+ kde_qt_libs_given=yes
+ ])
+
+AC_CACHE_VAL(ac_cv_have_qt,
+[#try to guess Qt locations
+
+qt_incdirs=""
+for dir in $kde_qt_dirs; do
+ qt_incdirs="$qt_incdirs $dir/include $dir"
+done
+qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes"
+if test ! "$ac_qt_includes" = "NO"; then
+ qt_incdirs="$ac_qt_includes $qt_incdirs"
+fi
+
+if test "$kde_qtver" != "1"; then
+ kde_qt_header=qstyle.h
+else
+ kde_qt_header=qglobal.h
+fi
+
+AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
+ac_qt_includes="$qt_incdir"
+
+qt_libdirs=""
+for dir in $kde_qt_dirs; do
+ qt_libdirs="$qt_libdirs $dir/lib${kdelibsuff} $dir"
+done
+qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries"
+if test ! "$ac_qt_libraries" = "NO"; then
+ qt_libdir=$ac_qt_libraries
+else
+ qt_libdirs="$ac_qt_libraries $qt_libdirs"
+ # if the Qt was given, the chance is too big that libqt.* doesn't exist
+ qt_libdir=NONE
+ for dir in $qt_libdirs; do
+ try="ls -1 $dir/${LIBQT_GLOB}"
+ if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi
+ done
+fi
+for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do
+ if test -e "$a"; then
+ LIBQT="$LIBQT ${kde_int_qt}_incremental"
+ break
+ fi
+done
+
+ac_qt_libraries="$qt_libdir"
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+ac_cxxflags_safe="$CXXFLAGS"
+ac_ldflags_safe="$LDFLAGS"
+ac_libs_safe="$LIBS"
+
+CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes"
+LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+LIBS="$LIBS $LIBQT $KDE_MT_LIBS"
+
+KDE_PRINT_QT_PROGRAM
+
+if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ rm -f conftest*
+else
+ echo "configure: failed program was:" >&AC_FD_CC
+ cat conftest.$ac_ext >&AC_FD_CC
+ ac_qt_libraries="NO"
+fi
+rm -f conftest*
+CXXFLAGS="$ac_cxxflags_safe"
+LDFLAGS="$ac_ldflags_safe"
+LIBS="$ac_libs_safe"
+
+AC_LANG_RESTORE
+if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
+ ac_cv_have_qt="have_qt=no"
+ ac_qt_notfound=""
+ missing_qt_mt=""
+ if test "$ac_qt_includes" = NO; then
+ if test "$ac_qt_libraries" = NO; then
+ ac_qt_notfound="(headers and libraries)";
+ else
+ ac_qt_notfound="(headers)";
+ fi
+ else
+ if test "x$kde_use_qt_mt" = "xyes"; then
+ missing_qt_mt="
+Make sure that you have compiled Qt with thread support!"
+ ac_qt_notfound="(library $qtlib-mt)";
+ else
+ ac_qt_notfound="(library $qtlib)";
+ fi
+ fi
+
+ AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation!
+For more details about this problem, look at the end of config.log.$missing_qt_mt])
+else
+ have_qt="yes"
+fi
+])
+
+eval "$ac_cv_have_qt"
+
+if test "$have_qt" != yes; then
+ AC_MSG_RESULT([$have_qt]);
+else
+ ac_cv_have_qt="have_qt=yes \
+ ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
+ AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT])
+
+ qt_libraries="$ac_qt_libraries"
+ qt_includes="$ac_qt_includes"
+fi
+
+if test ! "$kde_qt_libs_given" = "yes" && test ! "$kde_qtver" = 3; then
+ KDE_CHECK_QT_DIRECT(qt_libraries= ,[])
+fi
+
+AC_SUBST(qt_libraries)
+AC_SUBST(qt_includes)
+
+if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
+ QT_INCLUDES=""
+else
+ QT_INCLUDES="-I$qt_includes"
+ all_includes="$QT_INCLUDES $all_includes"
+fi
+
+if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then
+ QT_LDFLAGS=""
+else
+ QT_LDFLAGS="-L$qt_libraries"
+ all_libraries="$QT_LDFLAGS $all_libraries"
+fi
+test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS"
+
+AC_SUBST(QT_INCLUDES)
+AC_SUBST(QT_LDFLAGS)
+AC_PATH_QT_MOC_UIC
+
+KDE_CHECK_QT_JPEG
+
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM)'
+else
+LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG)'
+fi
+test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS"
+for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do
+ if test -e "$a"; then
+ LIB_QT="$LIB_QT ${kde_int_qt}_incremental"
+ break
+ fi
+done
+
+AC_SUBST(LIB_QT)
+AC_SUBST(LIB_QPE)
+
+AC_SUBST(kde_qtver)
+])
+
+AC_DEFUN([AC_PATH_QT],
+[
+AC_PATH_QT_1_3
+])
+
+AC_DEFUN([KDE_CHECK_UIC_PLUGINS],
+[
+AC_REQUIRE([AC_PATH_QT_MOC_UIC])
+
+if test x$ac_uic_supports_libpath = xyes; then
+
+AC_MSG_CHECKING([if UIC has KDE plugins available])
+AC_CACHE_VAL(kde_cv_uic_plugins,
+[
+cat > actest.ui << EOF
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>NewConnectionDialog</class>
+<widget class="QDialog">
+ <widget class="KLineEdit">
+ <property name="name">
+ <cstring>testInput</cstring>
+ </property>
+ </widget>
+</widget>
+</UI>
+EOF
+
+
+
+kde_cv_uic_plugins=no
+kde_line="$UIC_PATH -L $kde_widgetdir"
+if test x$ac_uic_supports_nounload = xyes; then
+ kde_line="$kde_line -nounload"
+fi
+kde_line="$kde_line -impl actest.h actest.ui > actest.cpp"
+if AC_TRY_EVAL(kde_line); then
+ # if you're trying to debug this check and think it's incorrect,
+ # better check your installation. The check _is_ correct - your
+ # installation is not.
+ if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then
+ kde_cv_uic_plugins=yes
+ fi
+fi
+rm -f actest.ui actest.cpp
+])
+
+AC_MSG_RESULT([$kde_cv_uic_plugins])
+if test "$kde_cv_uic_plugins" != yes; then
+ AC_MSG_ERROR([
+you need to install kdelibs first.
+
+If you did install kdelibs, then the Qt version that is picked up by
+this configure is not the same version you used to compile kdelibs.
+The Qt Plugin installed by kdelibs is *ONLY* loadable if it is the
+_same Qt version_, compiled with the _same compiler_ and the same Qt
+configuration settings.
+])
+fi
+fi
+])
+
+AC_DEFUN([KDE_CHECK_FINAL],
+[
+ AC_ARG_ENABLE(final,
+ AC_HELP_STRING([--enable-final],
+ [build size optimized apps (experimental - needs lots of memory)]),
+ kde_use_final=$enableval, kde_use_final=no)
+
+ if test "x$kde_use_final" = "xyes"; then
+ KDE_USE_FINAL_TRUE=""
+ KDE_USE_FINAL_FALSE="#"
+ else
+ KDE_USE_FINAL_TRUE="#"
+ KDE_USE_FINAL_FALSE=""
+ fi
+ AC_SUBST(KDE_USE_FINAL_TRUE)
+ AC_SUBST(KDE_USE_FINAL_FALSE)
+])
+
+AC_DEFUN([KDE_CHECK_CLOSURE],
+[
+ AC_ARG_ENABLE(closure,
+ AC_HELP_STRING([--enable-closure],[delay template instantiation]),
+ kde_use_closure=$enableval, kde_use_closure=no)
+
+ KDE_NO_UNDEFINED=""
+ if test "x$kde_use_closure" = "xyes"; then
+ KDE_USE_CLOSURE_TRUE=""
+ KDE_USE_CLOSURE_FALSE="#"
+# CXXFLAGS="$CXXFLAGS $REPO"
+ else
+ KDE_USE_CLOSURE_TRUE="#"
+ KDE_USE_CLOSURE_FALSE=""
+ KDE_NO_UNDEFINED=""
+ case $host in
+ *-*-linux-gnu)
+ KDE_CHECK_COMPILER_FLAG([Wl,--no-undefined],
+ [KDE_CHECK_COMPILER_FLAG([Wl,--allow-shlib-undefined],
+ [KDE_NO_UNDEFINED="-Wl,--no-undefined -Wl,--allow-shlib-undefined"],
+ [KDE_NO_UNDEFINED=""])],
+ [KDE_NO_UNDEFINED=""])
+ ;;
+ esac
+ fi
+ AC_SUBST(KDE_USE_CLOSURE_TRUE)
+ AC_SUBST(KDE_USE_CLOSURE_FALSE)
+ AC_SUBST(KDE_NO_UNDEFINED)
+])
+
+dnl Check if the linker supports --enable-new-dtags and --as-needed
+AC_DEFUN([KDE_CHECK_NEW_LDFLAGS],
+[
+ AC_ARG_ENABLE(new_ldflags,
+ AC_HELP_STRING([--enable-new-ldflags],
+ [enable the new linker flags]),
+ kde_use_new_ldflags=$enableval,
+ kde_use_new_ldflags=no)
+
+ LDFLAGS_AS_NEEDED=""
+ LDFLAGS_NEW_DTAGS=""
+ if test "x$kde_use_new_ldflags" = "xyes"; then
+ LDFLAGS_NEW_DTAGS=""
+ KDE_CHECK_COMPILER_FLAG([Wl,--enable-new-dtags],
+ [LDFLAGS_NEW_DTAGS="-Wl,--enable-new-dtags"],)
+
+ KDE_CHECK_COMPILER_FLAG([Wl,--as-needed],
+ [LDFLAGS_AS_NEEDED="-Wl,--as-needed"],)
+ fi
+ AC_SUBST(LDFLAGS_AS_NEEDED)
+ AC_SUBST(LDFLAGS_NEW_DTAGS)
+])
+
+AC_DEFUN([KDE_CHECK_NMCHECK],
+[
+ AC_ARG_ENABLE(nmcheck,AC_HELP_STRING([--enable-nmcheck],[enable automatic namespace cleanness check]),
+ kde_use_nmcheck=$enableval, kde_use_nmcheck=no)
+
+ if test "$kde_use_nmcheck" = "yes"; then
+ KDE_USE_NMCHECK_TRUE=""
+ KDE_USE_NMCHECK_FALSE="#"
+ else
+ KDE_USE_NMCHECK_TRUE="#"
+ KDE_USE_NMCHECK_FALSE=""
+ fi
+ AC_SUBST(KDE_USE_NMCHECK_TRUE)
+ AC_SUBST(KDE_USE_NMCHECK_FALSE)
+])
+
+AC_DEFUN([KDE_EXPAND_MAKEVAR], [
+savex=$exec_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+tmp=$$2
+while $1=`eval echo "$tmp"`; test "x$$1" != "x$tmp"; do tmp=$$1; done
+exec_prefix=$savex
+])
+
+dnl ------------------------------------------------------------------------
+dnl Now, the same with KDE
+dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed)
+dnl and $(kde_includes) will be the kdehdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_BASE_PATH_KDE],
+[
+AC_REQUIRE([KDE_CHECK_STL])
+AC_REQUIRE([AC_PATH_QT])dnl
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_CHECK_RPATH
+AC_MSG_CHECKING([for KDE])
+
+if test "${prefix}" != NONE; then
+ kde_includes=${includedir}
+ KDE_EXPAND_MAKEVAR(ac_kde_includes, includedir)
+
+ kde_libraries=${libdir}
+ KDE_EXPAND_MAKEVAR(ac_kde_libraries, libdir)
+
+else
+ ac_kde_includes=
+ ac_kde_libraries=
+ kde_libraries=""
+ kde_includes=""
+fi
+
+AC_CACHE_VAL(ac_cv_have_kde,
+[#try to guess kde locations
+
+if test "$kde_qtver" = 1; then
+ kde_check_header="ksock.h"
+ kde_check_lib="libkdecore.la"
+else
+ kde_check_header="ksharedptr.h"
+ kde_check_lib="libkio.la"
+fi
+
+if test -z "$1"; then
+
+kde_incdirs="$kde_libs_prefix/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes"
+test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs"
+kde_incdirs="$ac_kde_includes $kde_incdirs"
+AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir)
+ac_kde_includes="$kde_incdir"
+
+if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then
+ AC_MSG_ERROR([
+in the prefix, you've chosen, are no KDE headers installed. This will fail.
+So, check this please and use another prefix!])
+fi
+
+kde_libdirs="$kde_libs_prefix/lib${kdelibsuff} /usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}"
+test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs"
+kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs"
+AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir)
+ac_kde_libraries="$kde_libdir"
+
+kde_widgetdir=NO
+dnl this might be somewhere else
+AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir)
+
+if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then
+AC_MSG_ERROR([
+in the prefix, you've chosen, are no KDE libraries installed. This will fail.
+So, check this please and use another prefix!])
+fi
+
+if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then
+AC_MSG_ERROR([
+I can't find the designer plugins. These are required and should have been installed
+by kdelibs])
+fi
+
+if test -n "$kde_widgetdir"; then
+ kde_widgetdir="$kde_widgetdir/kde3/plugins/designer"
+fi
+
+
+if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then
+ ac_cv_have_kde="have_kde=no"
+else
+ ac_cv_have_kde="have_kde=yes \
+ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+fi
+
+else dnl test -z $1, e.g. from kdelibs
+
+ ac_cv_have_kde="have_kde=no"
+
+fi
+])dnl
+
+eval "$ac_cv_have_kde"
+
+if test "$have_kde" != "yes"; then
+ if test "${prefix}" = NONE; then
+ ac_kde_prefix="$ac_default_prefix"
+ else
+ ac_kde_prefix="$prefix"
+ fi
+ if test "$exec_prefix" = NONE; then
+ ac_kde_exec_prefix="$ac_kde_prefix"
+ AC_MSG_RESULT([will be installed in $ac_kde_prefix])
+ else
+ ac_kde_exec_prefix="$exec_prefix"
+ AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix])
+ fi
+
+ kde_libraries="${libdir}"
+ kde_includes="${includedir}"
+
+else
+ ac_cv_have_kde="have_kde=yes \
+ ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+ AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes])
+
+ kde_libraries="$ac_kde_libraries"
+ kde_includes="$ac_kde_includes"
+fi
+AC_SUBST(kde_libraries)
+AC_SUBST(kde_includes)
+
+if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then
+ KDE_INCLUDES=""
+else
+ KDE_INCLUDES="-I$kde_includes"
+ all_includes="$KDE_INCLUDES $all_includes"
+fi
+
+KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION"
+
+KDE_LDFLAGS="-L$kde_libraries"
+if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then
+ all_libraries="$KDE_LDFLAGS $all_libraries"
+fi
+
+AC_SUBST(KDE_LDFLAGS)
+AC_SUBST(KDE_INCLUDES)
+
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+all_libraries="$all_libraries $USER_LDFLAGS"
+all_includes="$all_includes $USER_INCLUDES"
+AC_SUBST(all_includes)
+AC_SUBST(all_libraries)
+
+if test -z "$1"; then
+KDE_CHECK_UIC_PLUGINS
+fi
+
+ac_kde_libraries="$kde_libdir"
+
+AC_SUBST(AUTODIRS)
+
+
+])
+
+AC_DEFUN([KDE_CHECK_EXTRA_LIBS],
+[
+AC_MSG_CHECKING(for extra includes)
+AC_ARG_WITH(extra-includes,AC_HELP_STRING([--with-extra-includes=DIR],[adds non standard include paths]),
+ kde_use_extra_includes="$withval",
+ kde_use_extra_includes=NONE
+)
+kde_extra_includes=
+if test -n "$kde_use_extra_includes" && \
+ test "$kde_use_extra_includes" != "NONE"; then
+
+ ac_save_ifs=$IFS
+ IFS=':'
+ for dir in $kde_use_extra_includes; do
+ kde_extra_includes="$kde_extra_includes $dir"
+ USER_INCLUDES="$USER_INCLUDES -I$dir"
+ done
+ IFS=$ac_save_ifs
+ kde_use_extra_includes="added"
+else
+ kde_use_extra_includes="no"
+fi
+AC_SUBST(USER_INCLUDES)
+
+AC_MSG_RESULT($kde_use_extra_includes)
+
+kde_extra_libs=
+AC_MSG_CHECKING(for extra libs)
+AC_ARG_WITH(extra-libs,AC_HELP_STRING([--with-extra-libs=DIR],[adds non standard library paths]),
+ kde_use_extra_libs=$withval,
+ kde_use_extra_libs=NONE
+)
+if test -n "$kde_use_extra_libs" && \
+ test "$kde_use_extra_libs" != "NONE"; then
+
+ ac_save_ifs=$IFS
+ IFS=':'
+ for dir in $kde_use_extra_libs; do
+ kde_extra_libs="$kde_extra_libs $dir"
+ KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir"
+ USER_LDFLAGS="$USER_LDFLAGS -L$dir"
+ done
+ IFS=$ac_save_ifs
+ kde_use_extra_libs="added"
+else
+ kde_use_extra_libs="no"
+fi
+
+AC_SUBST(USER_LDFLAGS)
+
+AC_MSG_RESULT($kde_use_extra_libs)
+
+])
+
+AC_DEFUN([KDE_1_CHECK_PATH_HEADERS],
+[
+ AC_MSG_CHECKING([for KDE headers installed])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+cat > conftest.$ac_ext <<EOF
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+#include <stdio.h>
+#include "confdefs.h"
+#include <kapp.h>
+
+int main() {
+ printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data());
+ printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data());
+ printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data());
+ printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data());
+ printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data());
+ printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data());
+ printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data());
+ printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data());
+ printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data());
+ printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data());
+ printf("kde_wallpaperdir=\\"%s\\"\n",
+ KApplication::kde_wallpaperdir().data());
+ printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data());
+ printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data());
+ printf("kde_servicesdir=\\"/tmp/dummy\\"\n");
+ printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n");
+ printf("kde_moduledir=\\"/tmp/dummy\\"\n");
+ printf("kde_styledir=\\"/tmp/dummy\\"\n");
+ printf("kde_widgetdir=\\"/tmp/dummy\\"\n");
+ printf("xdg_appsdir=\\"/tmp/dummy\\"\n");
+ printf("xdg_menudir=\\"/tmp/dummy\\"\n");
+ printf("xdg_directorydir=\\"/tmp/dummy\\"\n");
+ printf("kde_kcfgdir=\\"/tmp/dummy\\"\n");
+ return 0;
+ }
+EOF
+
+ ac_save_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$all_includes $CPPFLAGS"
+ if AC_TRY_EVAL(ac_compile); then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_ERROR([your system is not able to compile a small KDE application!
+Check, if you installed the KDE header files correctly.
+For more details about this problem, look at the end of config.log.])
+ fi
+ CPPFLAGS=$ac_save_CPPFLAGS
+
+ AC_LANG_RESTORE
+])
+
+AC_DEFUN([KDE_CHECK_KDEQTADDON],
+[
+AC_MSG_CHECKING(for kde-qt-addon)
+AC_CACHE_VAL(kde_cv_have_kdeqtaddon,
+[
+ kde_ldflags_safe="$LDFLAGS"
+ kde_libs_safe="$LIBS"
+ kde_cxxflags_safe="$CXXFLAGS"
+
+ LIBS="-lkde-qt-addon $LIBQT $LIBS"
+ CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes"
+ LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS"
+
+ AC_TRY_LINK([
+ #include <qdom.h>
+ ],
+ [
+ QDomDocument doc;
+ ],
+ kde_cv_have_kdeqtaddon=yes,
+ kde_cv_have_kdeqtaddon=no
+ )
+
+ LDFLAGS=$kde_ldflags_safe
+ LIBS=$kde_libs_safe
+ CXXFLAGS=$kde_cxxflags_safe
+])
+
+AC_MSG_RESULT($kde_cv_have_kdeqtaddon)
+
+if test "$kde_cv_have_kdeqtaddon" = "no"; then
+ AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first.
+It is a separate package (and CVS module) named kde-qt-addon.])
+fi
+])
+
+AC_DEFUN([KDE_CREATE_LIBS_ALIASES],
+[
+ AC_REQUIRE([KDE_MISC_TESTS])
+ AC_REQUIRE([KDE_CHECK_LIBDL])
+ AC_REQUIRE([K_PATH_X])
+
+if test $kde_qtver = 3; then
+ case $host in
+ *cygwin*) lib_kded="-lkdeinit_kded" ;;
+ *) lib_kded="" ;;
+ esac
+ AC_SUBST(LIB_KDED, $lib_kded)
+ AC_SUBST(LIB_KDECORE, "-lkdecore")
+ AC_SUBST(LIB_KDEUI, "-lkdeui")
+ AC_SUBST(LIB_KIO, "-lkio")
+ AC_SUBST(LIB_KJS, "-lkjs")
+ AC_SUBST(LIB_SMB, "-lsmb")
+ AC_SUBST(LIB_KAB, "-lkab")
+ AC_SUBST(LIB_KABC, "-lkabc")
+ AC_SUBST(LIB_KHTML, "-lkhtml")
+ AC_SUBST(LIB_KSPELL, "-lkspell")
+ AC_SUBST(LIB_KPARTS, "-lkparts")
+ AC_SUBST(LIB_KDEPRINT, "-lkdeprint")
+ AC_SUBST(LIB_KUTILS, "-lkutils")
+ AC_SUBST(LIB_KDEPIM, "-lkdepim")
+ AC_SUBST(LIB_KIMPROXY, "-lkimproxy")
+ AC_SUBST(LIB_KNEWSTUFF, "-lknewstuff")
+ AC_SUBST(LIB_KDNSSD, "-lkdnssd")
+ AC_SUBST(LIB_KUNITTEST, "-lkunittest")
+# these are for backward compatibility
+ AC_SUBST(LIB_KSYCOCA, "-lkio")
+ AC_SUBST(LIB_KFILE, "-lkio")
+elif test $kde_qtver = 2; then
+ AC_SUBST(LIB_KDECORE, "-lkdecore")
+ AC_SUBST(LIB_KDEUI, "-lkdeui")
+ AC_SUBST(LIB_KIO, "-lkio")
+ AC_SUBST(LIB_KSYCOCA, "-lksycoca")
+ AC_SUBST(LIB_SMB, "-lsmb")
+ AC_SUBST(LIB_KFILE, "-lkfile")
+ AC_SUBST(LIB_KAB, "-lkab")
+ AC_SUBST(LIB_KHTML, "-lkhtml")
+ AC_SUBST(LIB_KSPELL, "-lkspell")
+ AC_SUBST(LIB_KPARTS, "-lkparts")
+ AC_SUBST(LIB_KDEPRINT, "-lkdeprint")
+else
+ AC_SUBST(LIB_KDECORE, "-lkdecore -lXext $(LIB_QT)")
+ AC_SUBST(LIB_KDEUI, "-lkdeui $(LIB_KDECORE)")
+ AC_SUBST(LIB_KFM, "-lkfm $(LIB_KDECORE)")
+ AC_SUBST(LIB_KFILE, "-lkfile $(LIB_KFM) $(LIB_KDEUI)")
+ AC_SUBST(LIB_KAB, "-lkab $(LIB_KIMGIO) $(LIB_KDECORE)")
+fi
+])
+
+AC_DEFUN([AC_PATH_KDE],
+[
+ AC_BASE_PATH_KDE
+ AC_ARG_ENABLE(path-check,AC_HELP_STRING([--disable-path-check],[don't try to find out, where to install]),
+ [
+ if test "$enableval" = "no";
+ then ac_use_path_checking="default"
+ else ac_use_path_checking=""
+ fi
+ ],
+ [
+ if test "$kde_qtver" = 1;
+ then ac_use_path_checking=""
+ else ac_use_path_checking="default"
+ fi
+ ]
+ )
+
+ AC_CREATE_KFSSTND($ac_use_path_checking)
+
+ AC_SUBST_KFSSTND
+ KDE_CREATE_LIBS_ALIASES
+])
+
+dnl KDE_CHECK_FUNC_EXT(<func>, [headers], [sample-use], [C prototype], [autoheader define], [call if found])
+AC_DEFUN([KDE_CHECK_FUNC_EXT],
+[
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(kde_cv_func_$1,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+save_CXXFLAGS="$CXXFLAGS"
+kde_safe_LIBS="$LIBS"
+LIBS="$LIBS $X_EXTRA_LIBS"
+if test "$GXX" = "yes"; then
+CXXFLAGS="$CXXFLAGS -pedantic-errors"
+fi
+AC_TRY_COMPILE([
+$2
+],
+[
+$3
+],
+kde_cv_func_$1=yes,
+kde_cv_func_$1=no)
+CXXFLAGS="$save_CXXFLAGS"
+LIBS="$kde_safe_LIBS"
+AC_LANG_RESTORE
+])
+
+AC_MSG_RESULT($kde_cv_func_$1)
+
+AC_MSG_CHECKING([if $1 needs custom prototype])
+AC_CACHE_VAL(kde_cv_proto_$1,
+[
+if test "x$kde_cv_func_$1" = xyes; then
+ kde_cv_proto_$1=no
+else
+ case "$1" in
+ setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat)
+ kde_cv_proto_$1="yes - in libkdefakes"
+ ;;
+ *)
+ kde_cv_proto_$1=unknown
+ ;;
+ esac
+fi
+
+if test "x$kde_cv_proto_$1" = xunknown; then
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ kde_safe_libs=$LIBS
+ LIBS="$LIBS $X_EXTRA_LIBS"
+ AC_TRY_LINK([
+$2
+
+extern "C" $4;
+],
+[
+$3
+],
+[ kde_cv_func_$1=yes
+ kde_cv_proto_$1=yes ],
+ [kde_cv_proto_$1="$1 unavailable"]
+)
+LIBS=$kde_safe_libs
+AC_LANG_RESTORE
+fi
+])
+AC_MSG_RESULT($kde_cv_proto_$1)
+
+if test "x$kde_cv_func_$1" = xyes; then
+ AC_DEFINE(HAVE_$5, 1, [Define if you have $1])
+ $6
+fi
+if test "x$kde_cv_proto_$1" = xno; then
+ AC_DEFINE(HAVE_$5_PROTO, 1,
+ [Define if you have the $1 prototype])
+fi
+
+AH_VERBATIM([_HAVE_$5_PROTO],
+[
+#if !defined(HAVE_$5_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+$4;
+#ifdef __cplusplus
+}
+#endif
+#endif
+])
+])
+
+AC_DEFUN([AC_CHECK_SETENV],
+[
+ KDE_CHECK_FUNC_EXT(setenv, [
+#include <stdlib.h>
+],
+ [setenv("VAR", "VALUE", 1);],
+ [int setenv (const char *, const char *, int)],
+ [SETENV])
+])
+
+AC_DEFUN([AC_CHECK_UNSETENV],
+[
+ KDE_CHECK_FUNC_EXT(unsetenv, [
+#include <stdlib.h>
+],
+ [unsetenv("VAR");],
+ [void unsetenv (const char *)],
+ [UNSETENV])
+])
+
+AC_DEFUN([AC_CHECK_GETDOMAINNAME],
+[
+ KDE_CHECK_FUNC_EXT(getdomainname, [
+#include <stdlib.h>
+#include <unistd.h>
+#include <netdb.h>
+],
+ [
+char buffer[200];
+getdomainname(buffer, 200);
+],
+ [#include <sys/types.h>
+ int getdomainname (char *, size_t)],
+ [GETDOMAINNAME])
+])
+
+AC_DEFUN([AC_CHECK_GETHOSTNAME],
+[
+ KDE_CHECK_FUNC_EXT(gethostname, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+char buffer[200];
+gethostname(buffer, 200);
+],
+ [int gethostname (char *, unsigned int)],
+ [GETHOSTNAME])
+])
+
+AC_DEFUN([AC_CHECK_USLEEP],
+[
+ KDE_CHECK_FUNC_EXT(usleep, [
+#include <unistd.h>
+],
+ [
+usleep(200);
+],
+ [int usleep (unsigned int)],
+ [USLEEP])
+])
+
+
+AC_DEFUN([AC_CHECK_RANDOM],
+[
+ KDE_CHECK_FUNC_EXT(random, [
+#include <stdlib.h>
+],
+ [
+random();
+],
+ [long int random(void)],
+ [RANDOM])
+
+ KDE_CHECK_FUNC_EXT(srandom, [
+#include <stdlib.h>
+],
+ [
+srandom(27);
+],
+ [void srandom(unsigned int)],
+ [SRANDOM])
+
+])
+
+AC_DEFUN([AC_CHECK_INITGROUPS],
+[
+ KDE_CHECK_FUNC_EXT(initgroups, [
+#include <sys/types.h>
+#include <unistd.h>
+#include <grp.h>
+],
+ [
+char buffer[200];
+initgroups(buffer, 27);
+],
+ [int initgroups(const char *, gid_t)],
+ [INITGROUPS])
+])
+
+AC_DEFUN([AC_CHECK_MKSTEMPS],
+[
+ KDE_CHECK_FUNC_EXT(mkstemps, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+mkstemps("/tmp/aaaXXXXXX", 6);
+],
+ [int mkstemps(char *, int)],
+ [MKSTEMPS])
+])
+
+AC_DEFUN([AC_CHECK_MKSTEMP],
+[
+ KDE_CHECK_FUNC_EXT(mkstemp, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+mkstemp("/tmp/aaaXXXXXX");
+],
+ [int mkstemp(char *)],
+ [MKSTEMP])
+])
+
+AC_DEFUN([AC_CHECK_MKDTEMP],
+[
+ KDE_CHECK_FUNC_EXT(mkdtemp, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+ [
+mkdtemp("/tmp/aaaXXXXXX");
+],
+ [char *mkdtemp(char *)],
+ [MKDTEMP])
+])
+
+
+AC_DEFUN([AC_CHECK_RES_INIT],
+[
+ AC_MSG_CHECKING([if res_init needs -lresolv])
+ kde_libs_safe="$LIBS"
+ LIBS="$LIBS $X_EXTRA_LIBS -lresolv"
+ AC_TRY_LINK(
+ [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+ ],
+ [
+ res_init();
+ ],
+ [
+ LIBRESOLV="-lresolv"
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function])
+ ],
+ [ AC_MSG_RESULT(no) ]
+ )
+ LIBS=$kde_libs_safe
+ AC_SUBST(LIBRESOLV)
+
+ KDE_CHECK_FUNC_EXT(res_init,
+ [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+ ],
+ [res_init()],
+ [int res_init(void)],
+ [RES_INIT])
+])
+
+AC_DEFUN([AC_CHECK_STRLCPY],
+[
+ KDE_CHECK_FUNC_EXT(strlcpy, [
+#include <string.h>
+],
+[ char buf[20];
+ strlcpy(buf, "KDE function test", sizeof(buf));
+],
+ [unsigned long strlcpy(char*, const char*, unsigned long)],
+ [STRLCPY])
+])
+
+AC_DEFUN([AC_CHECK_STRLCAT],
+[
+ KDE_CHECK_FUNC_EXT(strlcat, [
+#include <string.h>
+],
+[ char buf[20];
+ buf[0]='\0';
+ strlcat(buf, "KDE function test", sizeof(buf));
+],
+ [unsigned long strlcat(char*, const char*, unsigned long)],
+ [STRLCAT])
+])
+
+AC_DEFUN([AC_CHECK_RES_QUERY],
+[
+ KDE_CHECK_FUNC_EXT(res_query, [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+#include <netdb.h>
+],
+[
+res_query(NULL, 0, 0, NULL, 0);
+],
+ [int res_query(const char *, int, int, unsigned char *, int)],
+ [RES_QUERY])
+])
+
+AC_DEFUN([AC_CHECK_DN_SKIPNAME],
+[
+ KDE_CHECK_FUNC_EXT(dn_skipname, [
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+],
+[
+dn_skipname (NULL, NULL);
+],
+ [int dn_skipname (unsigned char *, unsigned char *)],
+ [DN_SKIPNAME])
+])
+
+
+AC_DEFUN([AC_FIND_GIF],
+ [AC_MSG_CHECKING([for giflib])
+AC_CACHE_VAL(ac_cv_lib_gif,
+[ac_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$all_libraries -lgif -lX11 $LIBSOCKET"
+else
+LIBS="$all_libraries -lgif"
+fi
+AC_TRY_LINK(dnl
+[
+#ifdef __cplusplus
+extern "C" {
+#endif
+int GifLastError(void);
+#ifdef __cplusplus
+}
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+],
+ [return GifLastError();],
+ eval "ac_cv_lib_gif=yes",
+ eval "ac_cv_lib_gif=no")
+LIBS="$ac_save_LIBS"
+])dnl
+if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif])
+else
+ AC_MSG_ERROR(You need giflib30. Please install the kdesupport package)
+fi
+])
+
+AC_DEFUN([KDE_FIND_JPEG_HELPER],
+[
+AC_MSG_CHECKING([for libjpeg$2])
+AC_CACHE_VAL(ac_cv_lib_jpeg_$1,
+[
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(
+[
+#ifdef __cplusplus
+extern "C" {
+#endif
+void jpeg_CreateDecompress();
+#ifdef __cplusplus
+}
+#endif
+],
+[jpeg_CreateDecompress();],
+ eval "ac_cv_lib_jpeg_$1=-ljpeg$2",
+ eval "ac_cv_lib_jpeg_$1=no")
+LIBS="$ac_save_LIBS"
+CFLAGS="$ac_save_CFLAGS"
+])
+
+if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then
+ LIBJPEG="$ac_cv_lib_jpeg_$1"
+ AC_MSG_RESULT($ac_cv_lib_jpeg_$1)
+else
+ AC_MSG_RESULT(no)
+ $3
+fi
+
+])
+
+AC_DEFUN([AC_FIND_JPEG],
+[
+dnl first look for libraries
+KDE_FIND_JPEG_HELPER(6b, 6b,
+ KDE_FIND_JPEG_HELPER(normal, [],
+ [
+ LIBJPEG=
+ ]
+ )
+)
+
+dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h
+dnl requires system dependent includes loaded before it)
+jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes"
+AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir)
+test "x$jpeg_incdir" = xNO && jpeg_incdir=
+
+dnl if headers _and_ libraries are missing, this is no error, and we
+dnl continue with a warning (the user will get no jpeg support in khtml)
+dnl if only one is missing, it means a configuration error, but we still
+dnl only warn
+if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg])
+else
+ if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then
+ AC_MSG_WARN([
+There is an installation error in jpeg support. You seem to have only one
+of either the headers _or_ the libraries installed. You may need to either
+provide correct --with-extra-... options, or the development package of
+libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/
+Disabling JPEG support.
+])
+ else
+ AC_MSG_WARN([libjpeg not found. disable JPEG support.])
+ fi
+ jpeg_incdir=
+ LIBJPEG=
+fi
+
+AC_SUBST(LIBJPEG)
+AH_VERBATIM(_AC_CHECK_JPEG,
+[/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+])
+])
+
+AC_DEFUN([KDE_CHECK_QT_JPEG],
+[
+if test -n "$LIBJPEG"; then
+AC_MSG_CHECKING([if Qt needs $LIBJPEG])
+AC_CACHE_VAL(kde_cv_qt_jpeg,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS $LIBQT"
+LIBS=`echo $LIBS | sed "s/$LIBJPEG//"`
+ac_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(
+[#include <qapplication.h>],
+ [
+ int argc;
+ char** argv;
+ QApplication app(argc, argv);],
+ eval "kde_cv_qt_jpeg=no",
+ eval "kde_cv_qt_jpeg=yes")
+LIBS="$ac_save_LIBS"
+CXXFLAGS="$ac_save_CXXFLAGS"
+AC_LANG_RESTORE
+fi
+])
+
+if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then
+ AC_MSG_RESULT(yes)
+ LIBJPEG_QT='$(LIBJPEG)'
+else
+ AC_MSG_RESULT(no)
+ LIBJPEG_QT=
+fi
+
+])
+
+AC_DEFUN([AC_FIND_ZLIB],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for libz])
+AC_CACHE_VAL(ac_cv_lib_z,
+[
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(dnl
+[
+#include<zlib.h>
+],
+[
+ char buf[42];
+ gzFile f = (gzFile) 0;
+ /* this would segfault.. but we only link, don't run */
+ (void) gzgets(f, buf, sizeof(buf));
+
+ return (zlibVersion() == ZLIB_VERSION);
+],
+ eval "ac_cv_lib_z='-lz'",
+ eval "ac_cv_lib_z=no")
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if test ! "$ac_cv_lib_z" = no; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz])
+ LIBZ="$ac_cv_lib_z"
+ AC_MSG_RESULT($ac_cv_lib_z)
+else
+ AC_MSG_ERROR(not found.
+ Possibly configure picks up an outdated version
+ installed by XFree86. Remove it from your system.
+
+ Check your installation and look into config.log)
+ LIBZ=""
+fi
+AC_SUBST(LIBZ)
+])
+
+AC_DEFUN([KDE_TRY_TIFFLIB],
+[
+AC_MSG_CHECKING([for libtiff $1])
+
+AC_CACHE_VAL(kde_cv_libtiff_$1,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm"
+else
+LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm"
+fi
+kde_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+
+AC_TRY_LINK(dnl
+[
+#include<tiffio.h>
+],
+ [return (TIFFOpen( "", "r") == 0); ],
+[
+ kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ"
+], [
+ kde_cv_libtiff_$1=no
+])
+
+LIBS="$kde_save_LIBS"
+CXXFLAGS="$kde_save_CXXFLAGS"
+AC_LANG_RESTORE
+])
+
+if test "$kde_cv_libtiff_$1" = "no"; then
+ AC_MSG_RESULT(no)
+ LIBTIFF=""
+ $3
+else
+ LIBTIFF="$kde_cv_libtiff_$1"
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff])
+ $2
+fi
+
+])
+
+AC_DEFUN([AC_FIND_TIFF],
+[
+AC_REQUIRE([K_PATH_X])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_REQUIRE([AC_FIND_JPEG])
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+KDE_TRY_TIFFLIB(tiff, [],
+ KDE_TRY_TIFFLIB(tiff34))
+
+AC_SUBST(LIBTIFF)
+])
+
+AC_DEFUN([KDE_FIND_LIBEXR],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_CACHE_VAL(ac_cv_libexr,
+[
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+
+ AC_MSG_CHECKING([for OpenEXR libraries])
+
+ if test "$PKG_CONFIG" = "no" ; then
+ AC_MSG_RESULT(no)
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ if !(`$PKG_CONFIG --exists OpenEXR`) ; then
+ AC_MSG_RESULT(no)
+ EXRSTATUS=no
+ else
+ if !(`$PKG_CONFIG --atleast-version="1.1.1" OpenEXR`) ; then
+ AC_MSG_RESULT(no)
+ EXRSTATUS=old
+ else
+ kde_save_LIBS="$LIBS"
+ LIBS="$LIBS $all_libraries $USER_LDFLAGS $LIBZ `pkg-config --libs OpenEXR`"
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ kde_save_CXXFLAGS="$CXXFLAGS"
+ EXR_FLAGS=`$PKG_CONFIG --cflags OpenEXR`
+ CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES $EXR_FLAGS"
+
+ AC_TRY_LINK(dnl
+ [
+ #include <ImfRgbaFile.h>
+ ],
+ [
+ using namespace Imf;
+ RgbaInputFile file ("dummy");
+ return 0;
+ ],
+ eval "ac_cv_libexr='`pkg-config --libs OpenEXR`'",
+ eval "ac_cv_libexr=no"
+ )
+ LIBS="$kde_save_LIBS"
+ CXXFLAGS="$kde_save_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])dnl
+ if eval "test ! \"`echo $ac_cv_libexr`\" = no"; then
+ AC_DEFINE_UNQUOTED(HAVE_EXR, 1, [Define if you have OpenEXR])
+ LIB_EXR="$ac_cv_libexr"
+ AC_MSG_RESULT($ac_cv_libexr)
+ else
+ AC_MSG_RESULT(no)
+ LIB_EXR=""
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST(LIB_EXR)
+ AC_SUBST(EXR_FLAGS)
+])
+
+
+
+AC_DEFUN([AC_FIND_PNG],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_MSG_CHECKING([for libpng])
+AC_CACHE_VAL(ac_cv_lib_png,
+[
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET"
+else
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm"
+fi
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+
+AC_TRY_LINK(dnl
+ [
+ #include<png.h>
+ ],
+ [
+ png_structp png_ptr = png_create_read_struct( /* image ptr */
+ PNG_LIBPNG_VER_STRING, 0, 0, 0 );
+ return( png_ptr != 0 );
+ ],
+ eval "ac_cv_lib_png='-lpng $LIBZ -lm'",
+ eval "ac_cv_lib_png=no"
+)
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then
+ AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng])
+ LIBPNG="$ac_cv_lib_png"
+ AC_SUBST(LIBPNG)
+ AC_MSG_RESULT($ac_cv_lib_png)
+else
+ AC_MSG_RESULT(no)
+ LIBPNG=""
+ AC_SUBST(LIBPNG)
+fi
+])
+
+
+AC_DEFUN([AC_FIND_JASPER],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_JPEG])
+AC_MSG_CHECKING([for jasper])
+AC_CACHE_VAL(ac_cv_jasper,
+[
+kde_save_LIBS="$LIBS"
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -ljasper $LIBJPEG -lm"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+
+AC_TRY_LINK(dnl
+ [
+ #include<jasper/jasper.h>
+ ],
+ [
+ return( jas_init() );
+ ],
+ eval "ac_cv_jasper='-ljasper $LIBJPEG -lm'",
+ eval "ac_cv_jasper=no"
+)
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if eval "test ! \"`echo $ac_cv_jasper`\" = no"; then
+ AC_DEFINE_UNQUOTED(HAVE_JASPER, 1, [Define if you have jasper])
+ LIB_JASPER="$ac_cv_jasper"
+ AC_MSG_RESULT($ac_cv_jasper)
+else
+ AC_MSG_RESULT(no)
+ LIB_JASPER=""
+fi
+AC_SUBST(LIB_JASPER)
+])
+
+AC_DEFUN([AC_CHECK_BOOL],
+[
+ AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool])
+])
+
+AC_DEFUN([AC_CHECK_GNU_EXTENSIONS],
+[
+AC_MSG_CHECKING(if you need GNU extensions)
+AC_CACHE_VAL(ac_cv_gnu_extensions,
+[
+cat > conftest.c << EOF
+#include <features.h>
+
+#ifdef __GNU_LIBRARY__
+yes
+#endif
+EOF
+
+if (eval "$ac_cpp conftest.c") 2>&5 |
+ egrep "yes" >/dev/null 2>&1; then
+ rm -rf conftest*
+ ac_cv_gnu_extensions=yes
+else
+ ac_cv_gnu_extensions=no
+fi
+])
+
+AC_MSG_RESULT($ac_cv_gnu_extensions)
+if test "$ac_cv_gnu_extensions" = "yes"; then
+ AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_COMPILER_FLAG],
+[
+AC_MSG_CHECKING([whether $CXX supports -$1])
+kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'`
+AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
+[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -$1"
+ AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
+ CXXFLAGS="$save_CXXFLAGS"
+ AC_LANG_RESTORE
+])
+if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ :
+ $2
+else
+ AC_MSG_RESULT(no)
+ :
+ $3
+fi
+])
+
+AC_DEFUN([KDE_CHECK_C_COMPILER_FLAG],
+[
+AC_MSG_CHECKING([whether $CC supports -$1])
+kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'`
+AC_CACHE_VAL(kde_cv_prog_cc_$kde_cache,
+[
+ AC_LANG_SAVE
+ AC_LANG_C
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -$1"
+ AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cc_$kde_cache=yes"], [])
+ CFLAGS="$save_CFLAGS"
+ AC_LANG_RESTORE
+])
+if eval "test \"`echo '$kde_cv_prog_cc_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ :
+ $2
+else
+ AC_MSG_RESULT(no)
+ :
+ $3
+fi
+])
+
+
+dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables
+dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
+dnl it's all white-space separated
+AC_DEFUN([AC_REMOVE_FORBIDDEN],
+[ __val=$$1
+ __forbid=" $2 "
+ if test -n "$__val"; then
+ __new=""
+ ac_save_IFS=$IFS
+ IFS=" "
+ for i in $__val; do
+ case "$__forbid" in
+ *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
+ *) # Careful to not add spaces, where there were none, because otherwise
+ # libtool gets confused, if we change e.g. CXX
+ if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
+ esac
+ done
+ IFS=$ac_save_IFS
+ $1=$__new
+ fi
+])
+
+
+AC_DEFUN([KDE_CHECK_FOR_BAD_COMPILER],
+[
+ AC_MSG_CHECKING([whether $CC is blacklisted])
+
+ dnl In theory we have tu run this test against $CC and $CXX
+ dnl in C and in C++ mode, because its perfectly legal for
+ dnl the user to mix compiler versions, since C has a defined
+ dnl ABI.
+ dnl
+ dnl For now, we assume the user is not on crack.
+
+ AC_TRY_COMPILE([
+#ifdef __GNUC__
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ == 0
+choke me
+#endif
+#endif
+], ,
+ kde_bad_compiler=no,
+ kde_bad_compiler=yes
+)
+
+ AC_MSG_RESULT($kde_bad_compiler)
+
+if test "$kde_bad_compiler" = "yes"; then
+ AC_MSG_ERROR([
+
+This particular compiler version is blacklisted because it
+is known to miscompile KDE. Please use a newer version, or
+if that is not yet available, choose an older version.
+
+Please do not report a bug or bother us reporting this
+configure error. We know about it, and we introduced
+it by intention to avoid untraceable bugs or crashes in KDE.
+
+])
+fi
+
+])
+
+
+AC_DEFUN([KDE_CHECK_FOR_OPT_NOINLINE_MATCH],
+[
+ AC_CACHE_CHECK([whether system headers can cope with -O2 -fno-inline],
+ kde_cv_opt_noinline_match,
+ [
+ kde_cv_opt_noinline_match=irrelevant
+ dnl if we don't use both -O2 and -fno-inline, this check is moot
+ if echo "$CFLAGS" | grep -qe -O2 \
+ && echo "$CFLAGS" | grep -qe -fno-inline ; then
+
+ ac_cflags_save="$CFLAGS"
+ CFLAGS="$CFLAGS -D_USE_GNU"
+
+ AC_TRY_LINK([
+ #include <string.h>
+], [ const char *pt, *et;
+ et = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p ( ";," ) && ((size_t)(const void *)(( ";," )+ 1) - (size_t)(const void *)( ";," ) == 1) ? ((__a0 =((__const char *) ( ";," ))[0], __a0 == '\0') ? ((void) ( pt ),((void *)0) ) : ((__a1 = ((__const char *) ( ";," ))[1], __a1== '\0') ? (__extension__ (__builtin_constant_p ( __a0 ) && ( __a0 ) == '\0' ? (char *) __rawmemchr ( pt , __a0) : strchr( pt , __a0 ))) : ((__a2 = ((__const char *) ( ";," ))[2], __a2 == '\0') ? __strpbrk_c2 ( pt , __a0, __a1) :(((__const char *) ( ";," ))[3] == '\0' ? __strpbrk_c3 ( pt ,__a0, __a1, __a2): strpbrk ( pt , ";," ))))) : strpbrk ( pt , ";," )); }) ;
+],
+ kde_cv_opt_noinline_match=yes,
+ kde_cv_opt_noinline_match=no
+ )
+
+ CFLAGS="$ac_cflags_save"
+ fi
+ ])
+])
+
+
+dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
+AC_DEFUN([AC_VALIDIFY_CXXFLAGS],
+[dnl
+if test "x$kde_use_qt_emb" != "xyes"; then
+ AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
+ AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
+else
+ AC_REMOVE_FORBIDDEN(CXX, [-rpath])
+ AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
+fi
+])
+
+AC_DEFUN([AC_CHECK_COMPILERS],
+[
+ AC_ARG_ENABLE(debug,
+ AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]),
+ [
+ case $enableval in
+ yes)
+ kde_use_debug_code="yes"
+ kde_use_debug_define=no
+ ;;
+ full)
+ kde_use_debug_code="full"
+ kde_use_debug_define=no
+ ;;
+ *)
+ kde_use_debug_code="no"
+ kde_use_debug_define=yes
+ ;;
+ esac
+ ],
+ [kde_use_debug_code="no"
+ kde_use_debug_define=no
+ ])
+
+ dnl Just for configure --help
+ AC_ARG_ENABLE(dummyoption,
+ AC_HELP_STRING([--disable-debug],
+ [disables debug output and debug symbols [default=no]]),
+ [],[])
+
+ AC_ARG_ENABLE(strict,
+ AC_HELP_STRING([--enable-strict],
+ [compiles with strict compiler options (may not work!)]),
+ [
+ if test $enableval = "no"; then
+ kde_use_strict_options="no"
+ else
+ kde_use_strict_options="yes"
+ fi
+ ], [kde_use_strict_options="no"])
+
+ AC_ARG_ENABLE(warnings,AC_HELP_STRING([--disable-warnings],[disables compilation with -Wall and similar]),
+ [
+ if test $enableval = "no"; then
+ kde_use_warnings="no"
+ else
+ kde_use_warnings="yes"
+ fi
+ ], [kde_use_warnings="yes"])
+
+ dnl enable warnings for debug build
+ if test "$kde_use_debug_code" != "no"; then
+ kde_use_warnings=yes
+ fi
+
+ AC_ARG_ENABLE(profile,AC_HELP_STRING([--enable-profile],[creates profiling infos [default=no]]),
+ [kde_use_profiling=$enableval],
+ [kde_use_profiling="no"]
+ )
+
+ dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS
+ CFLAGS=" $CFLAGS"
+
+ AC_PROG_CC
+
+ AC_PROG_CPP
+
+ if test "$GCC" = "yes"; then
+ if test "$kde_use_debug_code" != "no"; then
+ if test $kde_use_debug_code = "full"; then
+ CFLAGS="-g3 -fno-inline $CFLAGS"
+ else
+ CFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CFLAGS"
+ fi
+ else
+ CFLAGS="-O2 $CFLAGS"
+ fi
+ fi
+
+ if test "$kde_use_debug_define" = "yes"; then
+ CFLAGS="-DNDEBUG $CFLAGS"
+ fi
+
+
+ case "$host" in
+ *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";;
+ *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";;
+ esac
+
+ if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then
+ LDFLAGS=""
+ fi
+
+ CXXFLAGS=" $CXXFLAGS"
+
+ AC_PROG_CXX
+
+ KDE_CHECK_FOR_BAD_COMPILER
+
+ if test "$GXX" = "yes" || test "$CXX" = "KCC"; then
+ if test "$kde_use_debug_code" != "no"; then
+ if test "$CXX" = "KCC"; then
+ CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS"
+ else
+ if test "$kde_use_debug_code" = "full"; then
+ CXXFLAGS="-g3 -fno-inline $CXXFLAGS"
+ else
+ CXXFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CXXFLAGS"
+ fi
+ fi
+ KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"])
+
+ dnl convenience compiler flags
+ KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""])
+ AC_SUBST(WOVERLOADED_VIRTUAL)
+ else
+ if test "$CXX" = "KCC"; then
+ CXXFLAGS="+K3 $CXXFLAGS"
+ else
+ CXXFLAGS="-O2 $CXXFLAGS"
+ fi
+ fi
+ fi
+
+ if test "$kde_use_debug_define" = "yes"; then
+ CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS"
+ fi
+
+ if test "$kde_use_profiling" = "yes"; then
+ KDE_CHECK_COMPILER_FLAG(pg,
+ [
+ CFLAGS="-pg $CFLAGS"
+ CXXFLAGS="-pg $CXXFLAGS"
+ ])
+ fi
+
+ if test "$kde_use_warnings" = "yes"; then
+ if test "$GCC" = "yes"; then
+ CXXFLAGS="-Wall -W -Wpointer-arith $CXXFLAGS"
+ case $host in
+ *-*-linux-gnu)
+ CFLAGS="-std=iso9899:1990 -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS"
+ CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts $CXXFLAGS"
+ KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"])
+ KDE_CHECK_C_COMPILER_FLAG(Wmissing-format-attribute, [CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"])
+ ;;
+ esac
+ KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"])
+ KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"])
+ dnl ### FIXME: revert for KDE 4
+ KDE_CHECK_COMPILER_FLAG(Wno-non-virtual-dtor,[CXXFLAGS="$CXXFLAGS -Wno-non-virtual-dtor"])
+ fi
+ fi
+
+ if test "$GXX" = "yes" && test "$kde_use_strict_options" = "yes"; then
+ CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS"
+ fi
+
+ AC_ARG_ENABLE(pch,
+ AC_HELP_STRING([--enable-pch],
+ [enables precompiled header support (currently only KCC or gcc >=3.4+unsermake) [default=no]]),
+ [ kde_use_pch=$enableval ],[ kde_use_pch=no ])
+
+ HAVE_GCC_VISIBILITY=0
+ AC_SUBST([HAVE_GCC_VISIBILITY])
+
+ if test "$GXX" = "yes"; then
+ gcc_no_reorder_blocks=NO
+ KDE_CHECK_COMPILER_FLAG(fno-reorder-blocks,[gcc_no_reorder_blocks=YES])
+ if test $kde_use_debug_code != "no" && \
+ test $kde_use_debug_code != "full" && \
+ test "YES" = "$gcc_no_reorder_blocks" ; then
+ CXXFLAGS="$CXXFLAGS -fno-reorder-blocks"
+ CFLAGS="$CFLAGS -fno-reorder-blocks"
+ fi
+ KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"])
+ KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"])
+ KDE_CHECK_COMPILER_FLAG(fno-common, [CXXFLAGS="$CXXFLAGS -fno-common"])
+ KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= )
+ ENABLE_PERMISSIVE_FLAG="-fpermissive"
+
+ if test "$kde_use_pch" = "yes"; then
+ AC_MSG_CHECKING(whether gcc supports precompiling c header files)
+ echo >conftest.h
+ if $CC -x c-header conftest.h >/dev/null 2>/dev/null; then
+ kde_gcc_supports_pch=yes
+ AC_MSG_RESULT(yes)
+ else
+ kde_gcc_supports_pch=no
+ AC_MSG_RESULT(no)
+ fi
+ if test "$kde_gcc_supports_pch" = "yes"; then
+ AC_MSG_CHECKING(whether gcc supports precompiling c++ header files)
+ if $CXX -x c++-header conftest.h >/dev/null 2>/dev/null; then
+ kde_gcc_supports_pch=yes
+ AC_MSG_RESULT(yes)
+ else
+ kde_gcc_supports_pch=no
+ AC_MSG_RESULT(no)
+ fi
+ fi
+ rm -f conftest.h conftest.h.gch
+ fi
+
+ KDE_CHECK_FOR_OPT_NOINLINE_MATCH
+ if test "x$kde_cv_opt_noinline_match" = "xno" ; then
+ CFLAGS="`echo "$CFLAGS" | sed "s/ -fno-inline//"`"
+ fi
+ fi
+ AM_CONDITIONAL(unsermake_enable_pch, test "$kde_use_pch" = "yes" && test "$kde_gcc_supports_pch" = "yes")
+ if test "$CXX" = "KCC"; then
+ dnl unfortunately we currently cannot disable exception support in KCC
+ dnl because doing so is binary incompatible and Qt by default links with exceptions :-(
+ dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"])
+ dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= )
+
+ if test "$kde_use_pch" = "yes"; then
+ dnl TODO: support --pch-dir!
+ KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"])
+ dnl the below works (but the dir must exist), but it's
+ dnl useless for a whole package.
+ dnl The are precompiled headers for each source file, so when compiling
+ dnl from scratch, it doesn't make a difference, and they take up
+ dnl around ~5Mb _per_ sourcefile.
+ dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp,
+ dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"])
+ fi
+ dnl this flag controls inlining. by default KCC inlines in optimisation mode
+ dnl all implementations that are defined inside the class {} declaration.
+ dnl because of templates-compatibility with broken gcc compilers, this
+ dnl can cause excessive inlining. This flag limits it to a sane level
+ KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"])
+ KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"])
+ KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"])
+ KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"])
+ dnl Some source files are shared between multiple executables
+ dnl (or libraries) and some of those need template instantiations.
+ dnl In that case KCC needs to compile those sources with
+ dnl --one_instantiation_per_object. To make it easy for us we compile
+ dnl _all_ objects with that flag (--one_per is a shorthand).
+ KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"])
+ fi
+ AC_SUBST(USE_EXCEPTIONS)
+ dnl obsolete macro - provided to keep things going
+ USE_RTTI=
+ AC_SUBST(USE_RTTI)
+
+ case "$host" in
+ *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;;
+ *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";;
+ *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";;
+ *-*-solaris*)
+ if test "$GXX" = yes; then
+ libstdcpp=`$CXX -print-file-name=libstdc++.so`
+ if test ! -f $libstdcpp; then
+ AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so])
+ fi
+ fi
+ ;;
+ esac
+
+ AC_VALIDIFY_CXXFLAGS
+
+ AC_PROG_CXXCPP
+
+ if test "$GCC" = yes; then
+ NOOPT_CFLAGS=-O0
+ fi
+ KDE_CHECK_COMPILER_FLAG(O0,[NOOPT_CXXFLAGS=-O0])
+
+ AC_ARG_ENABLE(coverage,
+ AC_HELP_STRING([--enable-coverage],[use gcc coverage testing]), [
+ if test "$am_cv_CC_dependencies_compiler_type" = "gcc3"; then
+ ac_coverage_compiler="-fprofile-arcs -ftest-coverage"
+ ac_coverage_linker="-lgcc"
+ elif test "$am_cv_CC_dependencies_compiler_type" = "gcc"; then
+ ac_coverage_compiler="-fprofile-arcs -ftest-coverage"
+ ac_coverage_linker=""
+ else
+ AC_MSG_ERROR([coverage with your compiler is not supported])
+ fi
+ CFLAGS="$CFLAGS $ac_coverage_compiler"
+ CXXFLAGS="$CXXFLAGS $ac_coverage_compiler"
+ LDFLAGS="$LDFLAGS $ac_coverage_linker"
+ ])
+
+ AC_SUBST(NOOPT_CXXFLAGS)
+ AC_SUBST(NOOPT_CFLAGS)
+ AC_SUBST(ENABLE_PERMISSIVE_FLAG)
+
+ KDE_CHECK_NEW_LDFLAGS
+ KDE_CHECK_FINAL
+ KDE_CHECK_CLOSURE
+ KDE_CHECK_NMCHECK
+
+ ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), [])
+])
+
+AC_DEFUN([KDE_CHECK_VISIBILITY_GCC_BUG],
+ [
+ AC_CACHE_CHECK([for gcc -fvisibility-inlines-hidden bug], kde_cv_val_gcc_visibility_bug,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ safe_CXXFLAGS=$CXXFLAGS
+ safe_LDFLAGS=$LDFLAGS
+ CXXFLAGS="$CXXFLAGS -fPIC -fvisibility-inlines-hidden -O0"
+ LDFLAGS="$LDFLAGS -shared -fPIC"
+
+ AC_TRY_LINK(
+ [
+ /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19664 */
+ #include <string>
+ int some_function( void ) __attribute__ ((visibility("default")));
+ int some_function( void )
+ {
+ std::string s("blafasel");
+ return 0;
+ }
+ ], [/* elvis is alive */],
+ kde_cv_val_gcc_visibility_bug=no, kde_cv_val_gcc_visibility_bug=yes)
+
+ CXXFLAGS=$safe_CXXFLAGS
+ LDFLAGS=$safe_LDFLAGS
+ AC_LANG_RESTORE
+ ]
+ )
+
+ if test x$kde_cv_val_gcc_visibility_bug = xno; then
+ CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden"
+ fi
+ ]
+)
+
+AC_DEFUN([KDE_ENABLE_HIDDEN_VISIBILITY],
+[
+ AC_BEFORE([AC_PATH_QT_1_3], [KDE_ENABLE_HIDDEN_VISIBILITY])
+
+ AC_MSG_CHECKING([grepping for visibility push/pop in headers])
+
+ if test "x$GXX" = "xyes"; then
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_EGREP_CPP(
+ [GCC visibility push],
+ [ #include <exception>
+ ],
+ [
+ AC_MSG_RESULT(yes)
+ kde_stdc_visibility_patched=yes ],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN([Your libstdc++ doesn't appear to be patched for
+ visibility support. Disabling -fvisibility=hidden])
+
+ kde_stdc_visibility_patched=no ])
+
+ AC_LANG_RESTORE
+
+ kde_have_gcc_visibility=no
+ KDE_CHECK_COMPILER_FLAG(fvisibility=hidden,
+ [
+ kde_have_gcc_visibility=yes
+ dnl the whole toolchain is just a mess, gcc is just too buggy
+ dnl to handle STL with visibility enabled. Lets reconsider
+ dnl when gcc 4.2 is out or when things get fixed in the compiler.
+ dnl Contact mueller@kde.org for details.
+ AC_ARG_ENABLE(gcc-hidden-visibility,
+ AC_HELP_STRING([--enable-gcc-hidden-visibility],[toolchain hidden visibility [default=no]]),
+ [kde_have_gcc_visibility=$enableval],
+ [kde_have_gcc_visibility=no])
+
+ AC_CACHE_CHECK([if Qt is patched for -fvisibility], kde_cv_val_qt_gcc_visibility_patched,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ safe_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS $all_includes"
+
+ AC_TRY_COMPILE(
+ [
+#include <qglobal.h>
+#if Q_EXPORT - 0 != 0
+/* if this compiles, then Q_EXPORT is undefined */
+/* if Q_EXPORT is nonempty, this will break compilation */
+#endif
+ ], [/* elvis is alive */],
+ kde_cv_val_qt_gcc_visibility_patched=no, kde_cv_val_qt_gcc_visibility_patched=yes)
+
+ CXXFLAGS=$safe_CXXFLAGS
+ AC_LANG_RESTORE
+ ]
+ )
+
+ if test x$kde_have_gcc_visibility = "xyes" && test x$kde_stdc_visibility_patched = "xyes" && test x$kde_cv_val_qt_gcc_visibility_patched = "xyes"; then
+ CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
+ KDE_CHECK_VISIBILITY_GCC_BUG
+ HAVE_GCC_VISIBILITY=1
+ AC_DEFINE_UNQUOTED(__KDE_HAVE_GCC_VISIBILITY, "$HAVE_GCC_VISIBILITY", [define to 1 if -fvisibility is supported])
+ fi
+ ])
+ fi
+])
+
+AC_DEFUN([KDE_ADD_DEPENDENCIES],
+[
+ [A]M_DEPENDENCIES(CC)
+ [A]M_DEPENDENCIES(CXX)
+])
+
+dnl just a wrapper to clean up configure.in
+AC_DEFUN([KDE_PROG_LIBTOOL],
+[
+AC_REQUIRE([AC_CHECK_COMPILERS])
+AC_REQUIRE([AC_ENABLE_SHARED])
+AC_REQUIRE([AC_ENABLE_STATIC])
+
+AC_REQUIRE([AC_LIBTOOL_DLOPEN])
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_OBJEXT
+AC_EXEEXT
+
+AM_PROG_LIBTOOL
+AC_LIBTOOL_CXX
+
+LIBTOOL_SHELL="/bin/sh ./libtool"
+# LIBTOOL="$LIBTOOL --silent"
+KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_NO_UNDEFINED) \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)"
+AC_SUBST(KDE_PLUGIN)
+
+# This hack ensures that libtool creates shared libs for kunittest plugins. By default check_LTLIBRARIES makes static libs.
+KDE_CHECK_PLUGIN="\$(KDE_PLUGIN) -rpath \$(libdir)"
+AC_SUBST(KDE_CHECK_PLUGIN)
+
+# we patch configure quite some so we better keep that consistent for incremental runs
+AC_SUBST(AUTOCONF,'$(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure')
+])
+
+AC_DEFUN([KDE_CHECK_LIB64],
+[
+ kdelibsuff="$kde_libs_suffix"
+ if test -z "$kdelibsuff"; then
+ kdelibsuff="auto"
+ fi
+ AC_ARG_ENABLE(libsuffix,
+ AC_HELP_STRING([--enable-libsuffix],
+ [/lib directory suffix (64,32,none,auto[=default])]),
+ kdelibsuff=$enableval)
+
+ if test "$kdelibsuff" = "auto"; then
+
+cat > conftest.c << EOF
+#include <stdio.h>
+int main() {
+ return 0;
+}
+EOF
+ kdelibsuff=`$CC conftest.c -o conftest.out; ldd conftest.out | grep -E "libc.so"| grep -E -o "/lib[[^\/]]*/" | sed "s/lib//" | sed "s/\/*//g"`
+ rm -rf conftest.*
+ fi
+
+ if test "$kdelibsuff" = "no"; then
+ kdelibsuff=
+ fi
+ if test -z "$kdelibsuff"; then
+ AC_MSG_RESULT([not using lib directory suffix])
+ AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories)
+ else
+ if test "$libdir" = '${exec_prefix}/lib'; then
+ libdir="$libdir${kdelibsuff}"
+ AC_SUBST([libdir], ["$libdir"]) dnl ugly hack for lib64 platforms
+ fi
+ AC_DEFINE_UNQUOTED(KDELIBSUFF, ["${kdelibsuff}"], Suffix for lib directories)
+ AC_MSG_RESULT([using lib directory suffix $kdelibsuff])
+ fi
+])
+
+AC_DEFUN([KDE_CHECK_TYPES],
+[ AC_CHECK_SIZEOF(int, 4)dnl
+ AC_CHECK_SIZEOF(short)dnl
+ AC_CHECK_SIZEOF(long, 4)dnl
+ AC_CHECK_SIZEOF(char *, 4)dnl
+])dnl
+
+dnl Not used - kept for compat only?
+AC_DEFUN([KDE_DO_IT_ALL],
+[
+AC_CANONICAL_SYSTEM
+AC_ARG_PROGRAM
+AM_INIT_AUTOMAKE($1, $2)
+AM_DISABLE_LIBRARIES
+AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde})
+AC_CHECK_COMPILERS
+KDE_PROG_LIBTOOL
+AM_KDE_WITH_NLS
+AC_PATH_KDE
+])
+
+AC_DEFUN([AC_CHECK_RPATH],
+[
+AC_MSG_CHECKING(for rpath)
+AC_ARG_ENABLE(rpath,
+ AC_HELP_STRING([--disable-rpath],[do not use the rpath feature of ld]),
+ USE_RPATH=$enableval, USE_RPATH=yes)
+
+if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then
+
+ KDE_RPATH="-R \$(libdir)"
+
+ if test "$kde_libraries" != "$libdir"; then
+ KDE_RPATH="$KDE_RPATH -R \$(kde_libraries)"
+ fi
+
+ if test -n "$qt_libraries"; then
+ KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)"
+ fi
+ dnl $x_libraries is set to /usr/lib in case
+ if test -n "$X_LDFLAGS"; then
+ X_RPATH="-R \$(x_libraries)"
+ KDE_RPATH="$KDE_RPATH $X_RPATH"
+ fi
+ if test -n "$KDE_EXTRA_RPATH"; then
+ KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)"
+ fi
+fi
+AC_SUBST(KDE_EXTRA_RPATH)
+AC_SUBST(KDE_RPATH)
+AC_SUBST(X_RPATH)
+AC_MSG_RESULT($USE_RPATH)
+])
+
+dnl Check for the type of the third argument of getsockname
+AC_DEFUN([AC_CHECK_SOCKLEN_T],
+[
+ AC_MSG_CHECKING(for socklen_t)
+ AC_CACHE_VAL(kde_cv_socklen_t,
+ [
+ AC_LANG_PUSH(C++)
+ kde_cv_socklen_t=no
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [
+ socklen_t len;
+ getpeername(0,0,&len);
+ ],
+ [
+ kde_cv_socklen_t=yes
+ kde_cv_socklen_t_equiv=socklen_t
+ ])
+ AC_LANG_POP(C++)
+ ])
+ AC_MSG_RESULT($kde_cv_socklen_t)
+ if test $kde_cv_socklen_t = no; then
+ AC_MSG_CHECKING([for socklen_t equivalent for socket functions])
+ AC_CACHE_VAL(kde_cv_socklen_t_equiv,
+ [
+ kde_cv_socklen_t_equiv=int
+ AC_LANG_PUSH(C++)
+ for t in int size_t unsigned long "unsigned long"; do
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [
+ $t len;
+ getpeername(0,0,&len);
+ ],
+ [
+ kde_cv_socklen_t_equiv="$t"
+ break
+ ])
+ done
+ AC_LANG_POP(C++)
+ ])
+ AC_MSG_RESULT($kde_cv_socklen_t_equiv)
+ fi
+ AC_DEFINE_UNQUOTED(kde_socklen_t, $kde_cv_socklen_t_equiv,
+ [type to use in place of socklen_t if not defined])
+ AC_DEFINE_UNQUOTED(ksize_t, $kde_cv_socklen_t_equiv,
+ [type to use in place of socklen_t if not defined (deprecated, use kde_socklen_t)])
+])
+
+dnl This is a merge of some macros out of the gettext aclocal.m4
+dnl since we don't need anything, I took the things we need
+dnl the copyright for them is:
+dnl >
+dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+dnl This Makefile.in 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 This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+dnl PARTICULAR PURPOSE.
+dnl >
+dnl for this file it is relicensed under LGPL
+
+AC_DEFUN([AM_KDE_WITH_NLS],
+ [
+ dnl If we use NLS figure out what method
+
+ AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt,
+ [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+ if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then
+ AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it])
+ GMSGFMT=":"
+ fi
+ MSGFMT=$GMSGFMT
+ AC_SUBST(GMSGFMT)
+ AC_SUBST(MSGFMT)
+
+ AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is no 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 programs is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+ AC_SUBST(XGETTEXT)
+
+ ])
+
+# Search path for a program which passes the given test.
+# Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+# serial 1
+# Stephan Kulow: I appended a _KDE against name conflicts
+
+dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE],
+[# 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 -n "[$]$1"; then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# serial 1
+
+AC_DEFUN([AM_LC_MESSAGES],
+ [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 contains LC_MESSAGES])
+ fi
+ fi])
+
+dnl From Jim Meyering.
+dnl FIXME: migrate into libit.
+
+AC_DEFUN([AM_FUNC_OBSTACK],
+[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack,
+ [AC_TRY_LINK([#include "obstack.h"],
+ [struct obstack *mem;obstack_free(mem,(char *) 0)],
+ am_cv_func_obstack=yes,
+ am_cv_func_obstack=no)])
+ if test $am_cv_func_obstack = yes; then
+ AC_DEFINE(HAVE_OBSTACK)
+ else
+ LIBOBJS="$LIBOBJS obstack.o"
+ fi
+])
+
+dnl From Jim Meyering. Use this if you use the GNU error.[ch].
+dnl FIXME: Migrate into libit
+
+AC_DEFUN([AM_FUNC_ERROR_AT_LINE],
+[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
+ [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
+ am_cv_lib_error_at_line=yes,
+ am_cv_lib_error_at_line=no)])
+ if test $am_cv_lib_error_at_line = no; then
+ LIBOBJS="$LIBOBJS error.o"
+ fi
+ AC_SUBST(LIBOBJS)dnl
+])
+
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# serial 1
+# Stephan Kulow: I put a KDE in it to avoid name conflicts
+
+AC_DEFUN([AM_KDE_GNU_GETTEXT],
+ [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_RANLIB])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ AC_REQUIRE([AC_TYPE_OFF_T])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+ AC_REQUIRE([AC_FUNC_MMAP])dnl
+ AC_REQUIRE([AM_KDE_WITH_NLS])dnl
+ AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h])
+ AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \
+__argz_count __argz_stringify __argz_next])
+
+ AC_MSG_CHECKING(for stpcpy)
+ AC_CACHE_VAL(kde_cv_func_stpcpy,
+ [
+ kde_safe_cxxflags=$CXXFLAGS
+ CXXFLAGS="-Werror"
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([
+ #include <string.h>
+ ],
+ [
+ char buffer[200];
+ stpcpy(buffer, buffer);
+ ],
+ kde_cv_func_stpcpy=yes,
+ kde_cv_func_stpcpy=no)
+ AC_LANG_RESTORE
+ CXXFLAGS=$kde_safe_cxxflags
+ ])
+ AC_MSG_RESULT($kde_cv_func_stpcpy)
+ if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then
+ AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy])
+ fi
+
+ AM_LC_MESSAGES
+
+ if test "x$CATOBJEXT" != "x"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+ *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+ esac
+ 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
+
+ ])
+
+AC_DEFUN([AC_HAVE_XPM],
+ [AC_REQUIRE_CPP()dnl
+ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$XPM_LDFLAGS" && XPM_LDFLAGS=
+ test -z "$XPM_INCLUDE" && XPM_INCLUDE=
+
+ AC_ARG_WITH(xpm,AC_HELP_STRING([--without-xpm],[disable color pixmap XPM tests]),
+ xpm_test=$withval, xpm_test="yes")
+ if test "x$xpm_test" = xno; then
+ ac_cv_have_xpm=no
+ else
+ AC_MSG_CHECKING(for XPM)
+ AC_CACHE_VAL(ac_cv_have_xpm,
+ [
+ ac_save_ldflags="$LDFLAGS"
+ ac_save_cflags="$CFLAGS"
+ if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then
+ LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET"
+ else
+ LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET"
+ fi
+ CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES"
+ test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS"
+ AC_TRY_LINK([#include <X11/xpm.h>],[],
+ ac_cv_have_xpm="yes",ac_cv_have_xpm="no")
+ LDFLAGS="$ac_save_ldflags"
+ CFLAGS="$ac_save_cflags"
+ ])dnl
+
+ if test "$ac_cv_have_xpm" = no; then
+ AC_MSG_RESULT(no)
+ XPM_LDFLAGS=""
+ XPMINC=""
+ $2
+ else
+ AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support])
+ if test "$XPM_LDFLAGS" = ""; then
+ XPMLIB='-lXpm $(LIB_X11)'
+ else
+ XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)'
+ fi
+ if test "$XPM_INCLUDE" = ""; then
+ XPMINC=""
+ else
+ XPMINC="-I$XPM_INCLUDE"
+ fi
+ AC_MSG_RESULT(yes)
+ $1
+ fi
+ fi
+ AC_SUBST(XPMINC)
+ AC_SUBST(XPMLIB)
+])
+
+AC_DEFUN([AC_HAVE_DPMS],
+ [AC_REQUIRE_CPP()dnl
+ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS=
+ test -z "$DPMS_INCLUDE" && DPMS_INCLUDE=
+ DPMS_LIB=
+
+ AC_ARG_WITH(dpms,AC_HELP_STRING([--without-dpms],[disable DPMS power saving]),
+ dpms_test=$withval, dpms_test="yes")
+ if test "x$dpms_test" = xno; then
+ ac_cv_have_dpms=no
+ else
+ AC_MSG_CHECKING(for DPMS)
+ dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms.
+ dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms".
+ AC_CACHE_VAL(ac_cv_have_dpms,
+ [
+ if test "x$kde_use_qt_emb" = "xyes" || test "x$kde_use_qt_mac" = "xyes"; then
+ AC_MSG_RESULT(no)
+ ac_cv_have_dpms="no"
+ else
+ ac_save_ldflags="$LDFLAGS"
+ ac_save_cflags="$CFLAGS"
+ ac_save_libs="$LIBS"
+ LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries"
+ LIBS="-lX11 -lXext $LIBSOCKET"
+ CFLAGS="$CFLAGS $X_INCLUDES"
+ test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS"
+ AC_TRY_LINK([
+ #include <X11/Xproto.h>
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>
+ int foo_test_dpms()
+ { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[],
+ ac_cv_have_dpms="yes", [
+ LIBS="-lXdpms $LIBS"
+ AC_TRY_LINK([
+ #include <X11/Xproto.h>
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>
+ int foo_test_dpms()
+ { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[],
+ [
+ ac_cv_have_dpms="-lXdpms"
+ ],ac_cv_have_dpms="no")
+ ])
+ LDFLAGS="$ac_save_ldflags"
+ CFLAGS="$ac_save_cflags"
+ LIBS="$ac_save_libs"
+ fi
+ ])dnl
+
+ if test "$ac_cv_have_dpms" = no; then
+ AC_MSG_RESULT(no)
+ DPMS_LDFLAGS=""
+ DPMSINC=""
+ $2
+ else
+ AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support])
+ if test "$ac_cv_have_dpms" = "-lXdpms"; then
+ DPMS_LIB="-lXdpms"
+ fi
+ if test "$DPMS_LDFLAGS" = ""; then
+ DPMSLIB="$DPMS_LIB "'$(LIB_X11)'
+ else
+ DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)'
+ fi
+ if test "$DPMS_INCLUDE" = ""; then
+ DPMSINC=""
+ else
+ DPMSINC="-I$DPMS_INCLUDE"
+ fi
+ AC_MSG_RESULT(yes)
+ $1
+ fi
+ fi
+ ac_save_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $X_INCLUDES"
+ test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS"
+ AH_TEMPLATE(HAVE_DPMSCAPABLE_PROTO,
+ [Define if you have the DPMSCapable prototype in <X11/extensions/dpms.h>])
+ AC_CHECK_DECL(DPMSCapable,
+ AC_DEFINE(HAVE_DPMSCAPABLE_PROTO),,
+ [#include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>])
+ AH_TEMPLATE(HAVE_DPMSINFO_PROTO,
+ [Define if you have the DPMSInfo prototype in <X11/extensions/dpms.h>])
+ AC_CHECK_DECL(DPMSInfo,
+ AC_DEFINE(HAVE_DPMSINFO_PROTO),,
+ [#include <X11/Xlib.h>
+ #include <X11/extensions/dpms.h>])
+ CFLAGS="$ac_save_cflags"
+ AC_SUBST(DPMSINC)
+ AC_SUBST(DPMSLIB)
+])
+
+AC_DEFUN([AC_HAVE_GL],
+ [AC_REQUIRE_CPP()dnl
+ AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$GL_LDFLAGS" && GL_LDFLAGS=
+ test -z "$GL_INCLUDE" && GL_INCLUDE=
+
+ AC_ARG_WITH(gl,AC_HELP_STRING([--without-gl],[disable 3D GL modes]),
+ gl_test=$withval, gl_test="yes")
+ if test "x$kde_use_qt_emb" = "xyes"; then
+ # GL and Qt Embedded is a no-go for now.
+ ac_cv_have_gl=no
+ elif test "x$gl_test" = xno; then
+ ac_cv_have_gl=no
+ else
+ AC_MSG_CHECKING(for GL)
+ AC_CACHE_VAL(ac_cv_have_gl,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_ldflags=$LDFLAGS
+ ac_save_cxxflags=$CXXFLAGS
+ ac_save_libs=$LIBS
+ LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries"
+ LIBS="$LIBS -lGL -lGLU"
+ test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LIBS="$LIBS -lX11"
+ LIBS="$LIBS $LIB_XEXT -lm $LIBSOCKET"
+ CXXFLAGS="$CFLAGS $X_INCLUDES"
+ test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS"
+ AC_TRY_LINK([#include <GL/gl.h>
+#include <GL/glu.h>
+], [],
+ ac_cv_have_gl="yes", ac_cv_have_gl="no")
+ AC_LANG_RESTORE
+ LDFLAGS=$ac_save_ldflags
+ CXXFLAGS=$ac_save_cxxflags
+ LIBS=$ac_save_libs
+ ])dnl
+
+ if test "$ac_cv_have_gl" = "no"; then
+ AC_MSG_RESULT(no)
+ GL_LDFLAGS=""
+ GLINC=""
+ $2
+ else
+ AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)])
+ if test "$GL_LDFLAGS" = ""; then
+ GLLIB='-lGLU -lGL $(LIB_X11)'
+ else
+ GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)'
+ fi
+ if test "$GL_INCLUDE" = ""; then
+ GLINC=""
+ else
+ GLINC="-I$GL_INCLUDE"
+ fi
+ AC_MSG_RESULT($ac_cv_have_gl)
+ $1
+ fi
+ fi
+ AC_SUBST(GLINC)
+ AC_SUBST(GLLIB)
+])
+
+
+ dnl shadow password and PAM magic - maintained by ossi@kde.org
+
+AC_DEFUN([KDE_PAM], [
+ AC_REQUIRE([KDE_CHECK_LIBDL])
+
+ want_pam=
+ AC_ARG_WITH(pam,
+ AC_HELP_STRING([--with-pam[=ARG]],[enable support for PAM: ARG=[yes|no|service name]]),
+ [ if test "x$withval" = "xyes"; then
+ want_pam=yes
+ pam_service=kde
+ elif test "x$withval" = "xno"; then
+ want_pam=no
+ else
+ want_pam=yes
+ pam_service=$withval
+ fi
+ ], [ pam_service=kde ])
+
+ use_pam=
+ PAMLIBS=
+ if test "x$want_pam" != xno; then
+ AC_CHECK_LIB(pam, pam_start, [
+ AC_CHECK_HEADER(security/pam_appl.h,
+ [ pam_header=security/pam_appl.h ],
+ [ AC_CHECK_HEADER(pam/pam_appl.h,
+ [ pam_header=pam/pam_appl.h ],
+ [
+ AC_MSG_WARN([PAM detected, but no headers found!
+Make sure you have the necessary development packages installed.])
+ ]
+ )
+ ]
+ )
+ ], , $LIBDL)
+ if test -z "$pam_header"; then
+ if test "x$want_pam" = xyes; then
+ AC_MSG_ERROR([--with-pam was specified, but cannot compile with PAM!])
+ fi
+ else
+ AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)])
+ PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL"
+ use_pam=yes
+
+ dnl darwin claims to be something special
+ if test "$pam_header" = "pam/pam_appl.h"; then
+ AC_DEFINE(HAVE_PAM_PAM_APPL_H, 1, [Define if your PAM headers are in pam/ instead of security/])
+ fi
+
+ dnl test whether struct pam_message is const (Linux) or not (Sun)
+ AC_MSG_CHECKING(for const pam_message)
+ AC_EGREP_HEADER([struct pam_message], $pam_header,
+ [ AC_EGREP_HEADER([const struct pam_message], $pam_header,
+ [AC_MSG_RESULT([const: Linux-type PAM])],
+ [AC_MSG_RESULT([nonconst: Sun-type PAM])
+ AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])]
+ )],
+ [AC_MSG_RESULT([not found - assume const, Linux-type PAM])])
+ fi
+ fi
+
+ AC_SUBST(PAMLIBS)
+])
+
+dnl DEF_PAM_SERVICE(arg name, full name, define name)
+AC_DEFUN([DEF_PAM_SERVICE], [
+ AC_ARG_WITH($1-pam,
+ AC_HELP_STRING([--with-$1-pam=[val]],[override PAM service from --with-pam for $2]),
+ [ if test "x$use_pam" = xyes; then
+ $3_PAM_SERVICE=$withval
+ else
+ AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected.
+You may want to enforce it by using --with-pam.])
+ fi
+ ],
+ [ if test "x$use_pam" = xyes; then
+ $3_PAM_SERVICE="$pam_service"
+ fi
+ ])
+ if test -n "$$3_PAM_SERVICE"; then
+ AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE])
+ AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2])
+ fi
+ AC_SUBST($3_PAM_SERVICE)
+])
+
+AC_DEFUN([KDE_SHADOWPASSWD], [
+ AC_REQUIRE([KDE_PAM])
+
+ AC_CHECK_LIB(shadow, getspent,
+ [ LIBSHADOW="-lshadow"
+ ac_use_shadow=yes
+ ],
+ [ dnl for UnixWare
+ AC_CHECK_LIB(gen, getspent,
+ [ LIBGEN="-lgen"
+ ac_use_shadow=yes
+ ],
+ [ AC_CHECK_FUNC(getspent,
+ [ ac_use_shadow=yes ],
+ [ ac_use_shadow=no ])
+ ])
+ ])
+ AC_SUBST(LIBSHADOW)
+ AC_SUBST(LIBGEN)
+
+ AC_MSG_CHECKING([for shadow passwords])
+
+ AC_ARG_WITH(shadow,
+ AC_HELP_STRING([--with-shadow],[If you want shadow password support]),
+ [ if test "x$withval" != "xno"; then
+ use_shadow=yes
+ else
+ use_shadow=no
+ fi
+ ], [
+ use_shadow="$ac_use_shadow"
+ ])
+
+ if test "x$use_shadow" = xyes; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords])
+ else
+ AC_MSG_RESULT(no)
+ LIBSHADOW=
+ LIBGEN=
+ fi
+
+ dnl finally make the relevant binaries setuid root, if we have shadow passwds.
+ dnl this still applies, if we could use it indirectly through pam.
+ if test "x$use_shadow" = xyes ||
+ ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then
+ case $host in
+ *-*-freebsd* | *-*-netbsd* | *-*-openbsd*)
+ SETUIDFLAGS="-m 4755 -o root";;
+ *)
+ SETUIDFLAGS="-m 4755";;
+ esac
+ fi
+ AC_SUBST(SETUIDFLAGS)
+
+])
+
+AC_DEFUN([KDE_PASSWDLIBS], [
+ AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT
+ AC_REQUIRE([KDE_PAM])
+ AC_REQUIRE([KDE_SHADOWPASSWD])
+
+ if test "x$use_pam" = "xyes"; then
+ PASSWDLIBS="$PAMLIBS"
+ else
+ PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN"
+ fi
+
+ dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but
+ dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires
+ dnl root to read, so kcheckpass needs to be root (even when using pam, since pam
+ dnl may need to read /etc/master.passwd).
+ case $host in
+ *-*-freebsd*)
+ SETUIDFLAGS="-m 4755 -o root"
+ ;;
+ *)
+ ;;
+ esac
+
+ AC_SUBST(PASSWDLIBS)
+])
+
+AC_DEFUN([KDE_CHECK_LIBDL],
+[
+AC_CHECK_LIB(dl, dlopen, [
+LIBDL="-ldl"
+ac_cv_have_dlfcn=yes
+])
+
+AC_CHECK_LIB(dld, shl_unload, [
+LIBDL="-ldld"
+ac_cv_have_shload=yes
+])
+
+AC_SUBST(LIBDL)
+])
+
+AC_DEFUN([KDE_CHECK_DLOPEN],
+[
+KDE_CHECK_LIBDL
+AC_CHECK_HEADERS(dlfcn.h dl.h)
+if test "$ac_cv_header_dlfcn_h" = "no"; then
+ ac_cv_have_dlfcn=no
+fi
+
+if test "$ac_cv_header_dl_h" = "no"; then
+ ac_cv_have_shload=no
+fi
+
+dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE
+dnl (MM)
+AC_ARG_ENABLE(dlopen,
+AC_HELP_STRING([--disable-dlopen],[link statically [default=no]]),
+enable_dlopen=$enableval,
+enable_dlopen=yes)
+
+# override the user's opinion, if we know it better ;)
+if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then
+ enable_dlopen=no
+fi
+
+if test "$ac_cv_have_dlfcn" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn])
+fi
+
+if test "$ac_cv_have_shload" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload])
+fi
+
+if test "$enable_dlopen" = no ; then
+ test -n "$1" && eval $1
+else
+ test -n "$2" && eval $2
+fi
+
+])
+
+AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING],
+[
+KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no)
+KDE_PROG_LIBTOOL
+AC_MSG_CHECKING([dynamic loading])
+eval "`egrep '^build_libtool_libs=' libtool`"
+if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then
+ dynamic_loading=yes
+ AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING)
+else
+ dynamic_loading=no
+fi
+AC_MSG_RESULT($dynamic_loading)
+if test "$dynamic_loading" = "yes"; then
+ $1
+else
+ $2
+fi
+])
+
+AC_DEFUN([KDE_ADD_INCLUDES],
+[
+if test -z "$1"; then
+ test_include="Pix.h"
+else
+ test_include="$1"
+fi
+
+AC_MSG_CHECKING([for libg++ ($test_include)])
+
+AC_CACHE_VAL(kde_cv_libgpp_includes,
+[
+kde_cv_libgpp_includes=no
+
+ for ac_dir in \
+ \
+ /usr/include/g++ \
+ /usr/include \
+ /usr/unsupported/include \
+ /opt/include \
+ $extra_include \
+ ; \
+ do
+ if test -r "$ac_dir/$test_include"; then
+ kde_cv_libgpp_includes=$ac_dir
+ break
+ fi
+ done
+])
+
+AC_MSG_RESULT($kde_cv_libgpp_includes)
+if test "$kde_cv_libgpp_includes" != "no"; then
+ all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES"
+fi
+])
+])
+
+AC_DEFUN([KDE_CHECK_LIBPTHREAD],
+[
+ dnl This code is here specifically to handle the
+ dnl various flavors of threading library on FreeBSD
+ dnl 4-, 5-, and 6-, and the (weird) rules around it.
+ dnl There may be an environment PTHREAD_LIBS that
+ dnl specifies what to use; otherwise, search for it.
+ dnl -pthread is special cased and unsets LIBPTHREAD
+ dnl below if found.
+ LIBPTHREAD=""
+
+ if test -n "$PTHREAD_LIBS"; then
+ if test "x$PTHREAD_LIBS" = "x-pthread" ; then
+ LIBPTHREAD="PTHREAD"
+ else
+ PTHREAD_LIBS_save="$PTHREAD_LIBS"
+ PTHREAD_LIBS=`echo "$PTHREAD_LIBS_save" | sed -e 's,^-l,,g'`
+ AC_MSG_CHECKING([for pthread_create in $PTHREAD_LIBS])
+ KDE_CHECK_LIB($PTHREAD_LIBS, pthread_create, [
+ LIBPTHREAD="$PTHREAD_LIBS_save"])
+ PTHREAD_LIBS="$PTHREAD_LIBS_save"
+ fi
+ fi
+
+ dnl Is this test really needed, in the face of the Tru64 test below?
+ if test -z "$LIBPTHREAD"; then
+ AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"])
+ fi
+
+ dnl This is a special Tru64 check, see BR 76171 issue #18.
+ if test -z "$LIBPTHREAD" ; then
+ AC_MSG_CHECKING([for pthread_create in -lpthread])
+ kde_safe_libs=$LIBS
+ LIBS="$LIBS -lpthread"
+ AC_TRY_LINK([#include <pthread.h>],[(void)pthread_create(0,0,0,0);],[
+ AC_MSG_RESULT(yes)
+ LIBPTHREAD="-lpthread"],[
+ AC_MSG_RESULT(no)])
+ LIBS=$kde_safe_libs
+ fi
+
+ dnl Un-special-case for FreeBSD.
+ if test "x$LIBPTHREAD" = "xPTHREAD" ; then
+ LIBPTHREAD=""
+ fi
+
+ AC_SUBST(LIBPTHREAD)
+])
+
+AC_DEFUN([KDE_CHECK_PTHREAD_OPTION],
+[
+ USE_THREADS=""
+ if test -z "$LIBPTHREAD"; then
+ KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-D_THREAD_SAFE -pthread"])
+ fi
+
+ AH_VERBATIM(__svr_define, [
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+])
+ case $host_os in
+ solaris*)
+ KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
+ ;;
+ freebsd*)
+ CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE $PTHREAD_CFLAGS"
+ ;;
+ aix*)
+ CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE"
+ LIBPTHREAD="$LIBPTHREAD -lc_r"
+ ;;
+ linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ if test "$CXX" = "KCC"; then
+ CXXFLAGS="$CXXFLAGS --thread_safe"
+ NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe"
+ fi
+ ;;
+ *)
+ ;;
+ esac
+ AC_SUBST(USE_THREADS)
+ AC_SUBST(LIBPTHREAD)
+])
+
+AC_DEFUN([KDE_CHECK_THREADING],
+[
+ AC_REQUIRE([KDE_CHECK_LIBPTHREAD])
+ AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION])
+ dnl default is yes if libpthread is found and no if no libpthread is available
+ if test -z "$LIBPTHREAD"; then
+ if test -z "$USE_THREADS"; then
+ kde_check_threading_default=no
+ else
+ kde_check_threading_default=yes
+ fi
+ else
+ kde_check_threading_default=yes
+ fi
+ AC_ARG_ENABLE(threading,AC_HELP_STRING([--disable-threading],[disables threading even if libpthread found]),
+ kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default)
+ if test "x$kde_use_threading" = "xyes"; then
+ AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)])
+ fi
+])
+
+AC_DEFUN([KDE_TRY_LINK_PYTHON],
+[
+if test "$kde_python_link_found" = no; then
+
+if test "$1" = normal; then
+ AC_MSG_CHECKING(if a Python application links)
+else
+ AC_MSG_CHECKING(if Python depends on $2)
+fi
+
+AC_CACHE_VAL(kde_cv_try_link_python_$1,
+[
+kde_save_cflags="$CFLAGS"
+CFLAGS="$CFLAGS $PYTHONINC"
+kde_save_libs="$LIBS"
+LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET"
+kde_save_ldflags="$LDFLAGS"
+LDFLAGS="$LDFLAGS $PYTHONLIB"
+
+AC_TRY_LINK(
+[
+#include <Python.h>
+],[
+ PySys_SetArgv(1, 0);
+],
+ [kde_cv_try_link_python_$1=yes],
+ [kde_cv_try_link_python_$1=no]
+)
+CFLAGS="$kde_save_cflags"
+LIBS="$kde_save_libs"
+LDFLAGS="$kde_save_ldflags"
+])
+
+if test "$kde_cv_try_link_python_$1" = "yes"; then
+ AC_MSG_RESULT(yes)
+ kde_python_link_found=yes
+ if test ! "$1" = normal; then
+ LIBPYTHON="$LIBPYTHON $2"
+ fi
+ $3
+else
+ AC_MSG_RESULT(no)
+ $4
+fi
+
+fi
+
+])
+
+AC_DEFUN([KDE_CHECK_PYTHON_DIR],
+[
+AC_MSG_CHECKING([for Python directory])
+
+AC_CACHE_VAL(kde_cv_pythondir,
+[
+ if test -z "$PYTHONDIR"; then
+ kde_cv_pythondir=/usr/local
+ else
+ kde_cv_pythondir="$PYTHONDIR"
+ fi
+])
+
+AC_ARG_WITH(pythondir,
+AC_HELP_STRING([--with-pythondir=pythondir],[use python installed in pythondir]),
+[
+ ac_python_dir=$withval
+], ac_python_dir=$kde_cv_pythondir
+)
+
+AC_MSG_RESULT($ac_python_dir)
+])
+
+AC_DEFUN([KDE_CHECK_PYTHON_INTERN],
+[
+AC_REQUIRE([KDE_CHECK_LIBDL])
+AC_REQUIRE([KDE_CHECK_LIBPTHREAD])
+AC_REQUIRE([KDE_CHECK_PYTHON_DIR])
+
+if test -z "$1"; then
+ version="1.5"
+else
+ version="$1"
+fi
+
+AC_MSG_CHECKING([for Python$version])
+
+python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes"
+AC_FIND_FILE(Python.h, $python_incdirs, python_incdir)
+if test ! -r $python_incdir/Python.h; then
+ AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir)
+ python_incdir=$python_incdir/python$version
+ if test ! -r $python_incdir/Python.h; then
+ python_incdir=no
+ fi
+fi
+
+PYTHONINC=-I$python_incdir
+
+python_libdirs="$ac_python_dir/lib$kdelibsuff /usr/lib$kdelibsuff /usr/local /usr/lib$kdelibsuff $kde_extra_libs"
+AC_FIND_FILE(libpython$version.so, $python_libdirs, python_libdir)
+if test ! -r $python_libdir/libpython$version.so; then
+ AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir)
+ if test ! -r $python_libdir/libpython$version.a; then
+ AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir)
+ python_libdir=$python_libdir/python$version/config
+ if test ! -r $python_libdir/libpython$version.a; then
+ python_libdir=no
+ fi
+ fi
+fi
+
+PYTHONLIB=-L$python_libdir
+kde_orig_LIBPYTHON=$LIBPYTHON
+if test -z "$LIBPYTHON"; then
+ LIBPYTHON=-lpython$version
+fi
+
+AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir)
+python_moddir=$python_moddir/python$version
+if test ! -r $python_moddir/copy.py; then
+ python_moddir=no
+fi
+
+PYTHONMODDIR=$python_moddir
+
+AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir)
+
+if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then
+ LIBPYTHON=$kde_orig_LIBPYTHON
+ test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB=""
+ test "x$PYTHONINC" = "x-Ino" && PYTHONINC=""
+ $2
+else
+ dnl Note: this test is very weak
+ kde_python_link_found=no
+ KDE_TRY_LINK_PYTHON(normal)
+ KDE_TRY_LINK_PYTHON(m, -lm)
+ KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD)
+ KDE_TRY_LINK_PYTHON(tcl, -ltcl)
+ KDE_TRY_LINK_PYTHON(db2, -ldb2)
+ KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil])
+ KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil])
+ KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm])
+ KDE_TRY_LINK_PYTHON(pthread_and_panel_curses, [$LIBPTHREAD $LIBDL -lm -lpanel -lcurses])
+ KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [],
+ [AC_MSG_WARN([it seems, Python depends on another library.
+ Please set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this
+ and contact the authors to let them know about this problem])
+ ])
+
+ LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET"
+ AC_SUBST(PYTHONINC)
+ AC_SUBST(PYTHONLIB)
+ AC_SUBST(LIBPYTHON)
+ AC_SUBST(PYTHONMODDIR)
+ AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python])
+fi
+
+])
+
+
+AC_DEFUN([KDE_CHECK_PYTHON],
+[
+ KDE_CHECK_PYTHON_INTERN("2.4",
+ [KDE_CHECK_PYTHON_INTERN("2.3",
+ [KDE_CHECK_PYTHON_INTERN("2.2",
+ [KDE_CHECK_PYTHON_INTERN("2.1",
+ [KDE_CHECK_PYTHON_INTERN("2.0",
+ [KDE_CHECK_PYTHON_INTERN($1, $2) ])
+ ])
+ ])
+ ])
+ ])
+])
+
+AC_DEFUN([KDE_CHECK_STL],
+[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`"
+
+ AC_MSG_CHECKING([if C++ programs can be compiled])
+ AC_CACHE_VAL(kde_cv_stl_works,
+ [
+ AC_TRY_COMPILE([
+#include <string>
+using namespace std;
+],[
+ string astring="Hallo Welt.";
+ astring.erase(0, 6); // now astring is "Welt"
+ return 0;
+], kde_cv_stl_works=yes,
+ kde_cv_stl_works=no)
+])
+
+ AC_MSG_RESULT($kde_cv_stl_works)
+
+ if test "$kde_cv_stl_works" = "yes"; then
+ # back compatible
+ AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI])
+ else
+ AC_MSG_ERROR([Your Installation isn't able to compile simple C++ programs.
+Check config.log for details - if you're using a Linux distribution you might miss
+a package named similar to libstdc++-dev.])
+ fi
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
+])
+
+AC_DEFUN([AC_FIND_QIMGIO],
+ [AC_REQUIRE([AC_FIND_JPEG])
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for qimgio])
+AC_CACHE_VAL(ac_cv_lib_qimgio,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+ac_save_LIBS="$LIBS"
+ac_save_CXXFLAGS="$CXXFLAGS"
+LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT"
+CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes"
+AC_TRY_RUN(dnl
+[
+#include <qimageio.h>
+#include <qstring.h>
+int main() {
+ QString t = "hallo";
+ t.fill('t');
+ qInitImageIO();
+}
+],
+ ac_cv_lib_qimgio=yes,
+ ac_cv_lib_qimgio=no,
+ ac_cv_lib_qimgio=no)
+LIBS="$ac_save_LIBS"
+CXXFLAGS="$ac_save_CXXFLAGS"
+AC_LANG_RESTORE
+])dnl
+if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then
+ LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG"
+ AC_MSG_RESULT(yes)
+ AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available])
+ AC_SUBST(LIBQIMGIO)
+else
+ AC_MSG_RESULT(not found)
+fi
+])
+
+AC_DEFUN([AM_DISABLE_LIBRARIES],
+[
+ AC_PROVIDE([AM_ENABLE_STATIC])
+ AC_PROVIDE([AM_ENABLE_SHARED])
+ enable_static=no
+ enable_shared=yes
+])
+
+
+AC_DEFUN([AC_CHECK_UTMP_FILE],
+[
+ AC_MSG_CHECKING([for utmp file])
+
+ AC_CACHE_VAL(kde_cv_utmp_file,
+ [
+ kde_cv_utmp_file=no
+
+ for ac_file in \
+ \
+ /var/run/utmp \
+ /var/adm/utmp \
+ /etc/utmp \
+ ; \
+ do
+ if test -r "$ac_file"; then
+ kde_cv_utmp_file=$ac_file
+ break
+ fi
+ done
+ ])
+
+ if test "$kde_cv_utmp_file" != "no"; then
+ AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries])
+ $1
+ AC_MSG_RESULT($kde_cv_utmp_file)
+ else
+ $2
+ AC_MSG_RESULT([non found])
+ fi
+])
+
+
+AC_DEFUN([KDE_CREATE_SUBDIRSLIST],
+[
+
+DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin"
+TOPSUBDIRS=""
+
+if test ! -s $srcdir/subdirs; then
+ dnl Note: Makefile.common creates subdirs, so this is just a fallback
+ files=`cd $srcdir && ls -1`
+ dirs=`for i in $files; do if test -d $i; then echo $i; fi; done`
+ for i in $dirs; do
+ echo $i >> $srcdir/subdirs
+ done
+fi
+
+ac_topsubdirs=
+if test -s $srcdir/inst-apps; then
+ ac_topsubdirs="`cat $srcdir/inst-apps`"
+elif test -s $srcdir/subdirs; then
+ ac_topsubdirs="`cat $srcdir/subdirs`"
+fi
+
+for i in $ac_topsubdirs; do
+ AC_MSG_CHECKING([if $i should be compiled])
+ if test -d $srcdir/$i; then
+ install_it="yes"
+ for j in $DO_NOT_COMPILE; do
+ if test $i = $j; then
+ install_it="no"
+ fi
+ done
+ else
+ install_it="no"
+ fi
+ AC_MSG_RESULT($install_it)
+ vari=`echo $i | sed -e 's,[[-+.@]],_,g'`
+ if test $install_it = "yes"; then
+ TOPSUBDIRS="$TOPSUBDIRS $i"
+ eval "$vari""_SUBDIR_included=yes"
+ else
+ eval "$vari""_SUBDIR_included=no"
+ fi
+done
+
+AC_SUBST(TOPSUBDIRS)
+])
+
+AC_DEFUN([KDE_CHECK_NAMESPACES],
+[
+AC_MSG_CHECKING(whether C++ compiler supports namespaces)
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+AC_TRY_COMPILE([
+],
+[
+namespace Foo {
+ extern int i;
+ namespace Bar {
+ extern int i;
+ }
+}
+
+int Foo::i = 0;
+int Foo::Bar::i = 1;
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_NAMESPACES)
+], [
+AC_MSG_RESULT(no)
+])
+AC_LANG_RESTORE
+])
+
+dnl ------------------------------------------------------------------------
+dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_CHECK_S_ISSOCK],
+[
+AC_MSG_CHECKING(for S_ISSOCK)
+AC_CACHE_VAL(ac_cv_have_s_issock,
+[
+AC_TRY_LINK(
+[
+#include <sys/stat.h>
+],
+[
+struct stat buff;
+int b = S_ISSOCK( buff.st_mode );
+],
+ac_cv_have_s_issock=yes,
+ac_cv_have_s_issock=no)
+])
+AC_MSG_RESULT($ac_cv_have_s_issock)
+if test "$ac_cv_have_s_issock" = "yes"; then
+ AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.])
+fi
+
+AH_VERBATIM(_ISSOCK,
+[
+#ifndef HAVE_S_ISSOCK
+#define HAVE_S_ISSOCK
+#define S_ISSOCK(mode) (1==0)
+#endif
+])
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_CHECK_KDEMAXPATHLEN],
+[
+AC_MSG_CHECKING(for MAXPATHLEN)
+AC_CACHE_VAL(ac_cv_maxpathlen,
+[
+cat > conftest.$ac_ext <<EOF
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <sys/param.h>
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+KDE_HELLO MAXPATHLEN
+
+EOF
+
+ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out"
+
+if AC_TRY_EVAL(ac_try) && test -s conftest.out; then
+ ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out`
+else
+ ac_cv_maxpathlen=1024
+fi
+
+rm conftest.*
+
+])
+AC_MSG_RESULT($ac_cv_maxpathlen)
+AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] )
+])
+
+AC_DEFUN([KDE_CHECK_HEADER],
+[
+ kde_safe_cppflags=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $all_includes"
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADER([$1], [$2], [$3], [$4])
+ AC_LANG_RESTORE
+ CPPFLAGS=$kde_safe_cppflags
+])
+
+AC_DEFUN([KDE_CHECK_HEADERS],
+[
+ AH_CHECK_HEADERS([$1])
+ AC_LANG_SAVE
+ kde_safe_cppflags=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $all_includes"
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADERS([$1], [$2], [$3], [$4])
+ CPPFLAGS=$kde_safe_cppflags
+ AC_LANG_RESTORE
+])
+
+AC_DEFUN([KDE_FAST_CONFIGURE],
+[
+ dnl makes configure fast (needs perl)
+ AC_ARG_ENABLE(fast-perl, AC_HELP_STRING([--disable-fast-perl],[disable fast Makefile generation (needs perl)]),
+ with_fast_perl=$enableval, with_fast_perl=yes)
+])
+
+AC_DEFUN([KDE_CONF_FILES],
+[
+ val=
+ if test -f $srcdir/configure.files ; then
+ val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files`
+ fi
+ CONF_FILES=
+ if test -n "$val" ; then
+ for i in $val ; do
+ CONF_FILES="$CONF_FILES $i"
+ done
+ fi
+ AC_SUBST(CONF_FILES)
+])dnl
+
+dnl This sets the prefix, for arts and kdelibs
+dnl Do NOT use in any other module.
+dnl It only looks at --prefix, KDEDIR and falls back to /usr/local/kde
+AC_DEFUN([KDE_SET_PREFIX_CORE],
+[
+ unset CDPATH
+ dnl make $KDEDIR the default for the installation
+ AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde})
+
+ if test "x$prefix" = "xNONE"; then
+ prefix=$ac_default_prefix
+ ac_configure_args="$ac_configure_args --prefix=$prefix"
+ fi
+ # And delete superfluous '/' to make compares easier
+ prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+ exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+
+ kde_libs_prefix='$(prefix)'
+ kde_libs_htmldir='$(kde_htmldir)'
+ AC_SUBST(kde_libs_prefix)
+ AC_SUBST(kde_libs_htmldir)
+ KDE_FAST_CONFIGURE
+ KDE_CONF_FILES
+])
+
+
+AC_DEFUN([KDE_SET_PREFIX],
+[
+ unset CDPATH
+ dnl We can't give real code to that macro, only a value.
+ dnl It only matters for --help, since we set the prefix in this function anyway.
+ AC_PREFIX_DEFAULT(${KDEDIR:-the kde prefix})
+
+ KDE_SET_DEFAULT_BINDIRS
+ if test "x$prefix" = "xNONE"; then
+ dnl no prefix given: look for kde-config in the PATH and deduce the prefix from it
+ KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend)
+ else
+ dnl prefix given: look for kde-config, preferrably in prefix, otherwise in PATH
+ kde_save_PATH="$PATH"
+ PATH="$exec_prefix/bin:$prefix/bin:$PATH"
+ KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend)
+ PATH="$kde_save_PATH"
+ fi
+
+ kde_libs_prefix=`$KDECONFIG --prefix`
+ if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then
+ AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs.
+ This means it has been moved since you installed it.
+ This won't work. Please recompile kdelibs for the new prefix.
+ ])
+ fi
+ kde_libs_htmldir=`$KDECONFIG --install html --expandvars`
+ kde_libs_suffix=`$KDECONFIG --libsuffix`
+
+ AC_MSG_CHECKING([where to install])
+ if test "x$prefix" = "xNONE"; then
+ prefix=$kde_libs_prefix
+ AC_MSG_RESULT([$prefix (as returned by kde-config)])
+ else
+ dnl --prefix was given. Compare prefixes and warn (in configure.in.bot.end) if different
+ given_prefix=$prefix
+ AC_MSG_RESULT([$prefix (as requested)])
+ fi
+
+ # And delete superfluous '/' to make compares easier
+ prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+ exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+ given_prefix=`echo "$given_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'`
+
+ AC_SUBST(KDECONFIG)
+ AC_SUBST(kde_libs_prefix)
+ AC_SUBST(kde_libs_htmldir)
+
+ KDE_FAST_CONFIGURE
+ KDE_CONF_FILES
+])
+
+pushdef([AC_PROG_INSTALL],
+[
+ dnl our own version, testing for a -p flag
+ popdef([AC_PROG_INSTALL])
+ dnl as AC_PROG_INSTALL works as it works we first have
+ dnl to save if the user didn't specify INSTALL, as the
+ dnl autoconf one overwrites INSTALL and we have no chance to find
+ dnl out afterwards
+ test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL
+ test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM
+ test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT
+ AC_PROG_INSTALL
+
+ if test -z "$kde_save_INSTALL_given" ; then
+ # OK, user hasn't given any INSTALL, autoconf found one for us
+ # now we test, if it supports the -p flag
+ AC_MSG_CHECKING(for -p flag to install)
+ rm -f confinst.$$.* > /dev/null 2>&1
+ echo "Testtest" > confinst.$$.orig
+ ac_res=no
+ if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then
+ if test -f confinst.$$.new ; then
+ # OK, -p seems to do no harm to install
+ INSTALL="${INSTALL} -p"
+ ac_res=yes
+ fi
+ fi
+ rm -f confinst.$$.*
+ AC_MSG_RESULT($ac_res)
+ fi
+ dnl the following tries to resolve some signs and wonders coming up
+ dnl with different autoconf/automake versions
+ dnl e.g.:
+ dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s
+ dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS)
+ dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s
+ dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has
+ dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the
+ dnl install-@DIR@PROGRAMS targets to explicitly use that flag
+ dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as
+ dnl INSTALL_SCRIPT, which breaks with automake <= 1.4
+ dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure
+ dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from
+ dnl automake (due to broken Makefile.am or whatever) to install programs,
+ dnl and so does not see the -s flag in automake > 1.4
+ dnl to clean up that mess we:
+ dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG
+ dnl which cleans KDE's program with automake > 1.4;
+ dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems
+ dnl with automake<=1.4
+ dnl note that dues to this sometimes two '-s' flags are used (if KDE
+ dnl properly uses install-@DIR@PROGRAMS, but I don't care
+ dnl
+ dnl And to all this comes, that I even can't write in comments variable
+ dnl names used by automake, because it is so stupid to think I wanted to
+ dnl _use_ them, therefor I have written A_M_... instead of AM_
+ dnl hmm, I wanted to say something ... ahh yes: Arghhh.
+
+ if test -z "$kde_save_INSTALL_PROGRAM_given" ; then
+ INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)'
+ fi
+ if test -z "$kde_save_INSTALL_SCRIPT_given" ; then
+ INSTALL_SCRIPT='${INSTALL}'
+ fi
+])dnl
+
+AC_DEFUN([KDE_LANG_CPLUSPLUS],
+[AC_LANG_CPLUSPLUS
+ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
+pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS])
+])
+
+pushdef([AC_LANG_CPLUSPLUS],
+[popdef([AC_LANG_CPLUSPLUS])
+KDE_LANG_CPLUSPLUS
+])
+
+AC_DEFUN([KDE_CHECK_LONG_LONG],
+[
+AC_MSG_CHECKING(for long long)
+AC_CACHE_VAL(kde_cv_c_long_long,
+[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_LINK([], [
+ long long foo = 0;
+ foo = foo+1;
+ ],
+ kde_cv_c_long_long=yes, kde_cv_c_long_long=no)
+ AC_LANG_RESTORE
+])
+AC_MSG_RESULT($kde_cv_c_long_long)
+if test "$kde_cv_c_long_long" = yes; then
+ AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_LIB],
+[
+ kde_save_LDFLAGS="$LDFLAGS"
+ dnl AC_CHECK_LIB modifies LIBS, so save it here
+ kde_save_LIBS="$LIBS"
+ LDFLAGS="$LDFLAGS $all_libraries"
+ case $host_os in
+ aix*) LDFLAGS="-brtl $LDFLAGS"
+ test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS"
+ ;;
+ esac
+ AC_CHECK_LIB($1, $2, $3, $4, $5)
+ LDFLAGS="$kde_save_LDFLAGS"
+ LIBS="$kde_save_LIBS"
+])
+
+AC_DEFUN([KDE_JAVA_PREFIX],
+[
+ dir=`dirname "$1"`
+ base=`basename "$1"`
+ list=`ls -1 $dir 2> /dev/null`
+ for entry in $list; do
+ if test -d $dir/$entry/bin; then
+ case $entry in
+ $base)
+ javadirs="$javadirs $dir/$entry/bin"
+ ;;
+ esac
+ elif test -d $dir/$entry/jre/bin; then
+ case $entry in
+ $base)
+ javadirs="$javadirs $dir/$entry/jre/bin"
+ ;;
+ esac
+ fi
+ done
+])
+
+dnl KDE_CHEC_JAVA_DIR(onlyjre)
+AC_DEFUN([KDE_CHECK_JAVA_DIR],
+[
+
+AC_ARG_WITH(java,
+AC_HELP_STRING([--with-java=javadir],[use java installed in javadir, --without-java disables]),
+[ ac_java_dir=$withval
+], ac_java_dir=""
+)
+
+AC_MSG_CHECKING([for Java])
+
+dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH
+if test "x$ac_java_dir" = "xno"; then
+ kde_java_bindir=no
+ kde_java_includedir=no
+ kde_java_libjvmdir=no
+ kde_java_libgcjdir=no
+ kde_java_libhpidir=no
+else
+ if test "x$ac_java_dir" = "x"; then
+
+
+ dnl No option set -> collect list of candidate paths
+ if test -n "$JAVA_HOME"; then
+ KDE_JAVA_PREFIX($JAVA_HOME)
+ fi
+ KDE_JAVA_PREFIX(/usr/j2se)
+ KDE_JAVA_PREFIX(/usr/lib/j2se)
+ KDE_JAVA_PREFIX(/usr/j*dk*)
+ KDE_JAVA_PREFIX(/usr/lib/j*dk*)
+ KDE_JAVA_PREFIX(/opt/j*sdk*)
+ KDE_JAVA_PREFIX(/usr/lib/java*)
+ KDE_JAVA_PREFIX(/usr/java*)
+ KDE_JAVA_PREFIX(/usr/java/j*dk*)
+ KDE_JAVA_PREFIX(/usr/java/j*re*)
+ KDE_JAVA_PREFIX(/usr/lib/SunJava2*)
+ KDE_JAVA_PREFIX(/usr/lib/SunJava*)
+ KDE_JAVA_PREFIX(/usr/lib/IBMJava2*)
+ KDE_JAVA_PREFIX(/usr/lib/IBMJava*)
+ KDE_JAVA_PREFIX(/opt/java*)
+
+ kde_cv_path="NONE"
+ kde_save_IFS=$IFS
+ IFS=':'
+ for dir in $PATH; do
+ if test -d "$dir"; then
+ javadirs="$javadirs $dir"
+ fi
+ done
+ IFS=$kde_save_IFS
+ jredirs=
+
+ dnl Now javadirs contains a list of paths that exist, all ending with bin/
+ for dir in $javadirs; do
+ dnl Check for the java executable
+ if test -x "$dir/java"; then
+ dnl And also check for a libjvm.so somewhere under there
+ dnl Since we have to go to the parent dir, /usr/bin is excluded, /usr is too big.
+ if test "$dir" != "/usr/bin"; then
+ libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1`
+ if test ! -f $libjvmdir/libjvm.so; then continue; fi
+ jredirs="$jredirs $dir"
+ fi
+ fi
+ done
+
+ dnl Now jredirs contains a reduced list, of paths where both java and ../**/libjvm.so was found
+ JAVAC=
+ JAVA=
+ kde_java_bindir=no
+ for dir in $jredirs; do
+ JAVA="$dir/java"
+ kde_java_bindir=$dir
+ if test -x "$dir/javac"; then
+ JAVAC="$dir/javac"
+ break
+ fi
+ done
+
+ if test -n "$JAVAC"; then
+ dnl this substitution might not work - well, we test for jni.h below
+ kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'`
+ else
+ kde_java_includedir=no
+ fi
+ else
+ dnl config option set
+ kde_java_bindir=$ac_java_dir/bin
+ if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then
+ kde_java_includedir=no
+ else
+ kde_java_includedir=$ac_java_dir/include
+ fi
+ fi
+fi
+
+dnl At this point kde_java_bindir and kde_java_includedir are either set or "no"
+if test "x$kde_java_bindir" != "xno"; then
+
+ dnl Look for libjvm.so
+ kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1`
+ dnl Look for libgcj.so
+ kde_java_libgcjdir=`find $kde_java_bindir/.. -name libgcj.so | sed 's,libgcj.so,,'|head -n 1`
+ dnl Look for libhpi.so and avoid green threads
+ kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1`
+
+ dnl Now check everything's fine under there
+ dnl the include dir is our flag for having the JDK
+ if test -d "$kde_java_includedir"; then
+ if test ! -x "$kde_java_bindir/javac"; then
+ AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.])
+ fi
+ if test ! -x "$kde_java_bindir/javah"; then
+ AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+ fi
+ if test ! -x "$kde_java_bindir/jar"; then
+ AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+ fi
+ if test ! -r "$kde_java_includedir/jni.h"; then
+ AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.])
+ fi
+
+ jni_includes="-I$kde_java_includedir"
+ dnl Strange thing, jni.h requires jni_md.h which is under genunix here..
+ dnl and under linux here..
+
+ dnl not needed for gcj
+
+ if test "x$kde_java_libgcjdir" = "x"; then
+ test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux"
+ test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris"
+ test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix"
+ fi
+
+ else
+ JAVAC=
+ jni_includes=
+ fi
+
+ if test "x$kde_java_libgcjdir" = "x"; then
+ if test ! -r "$kde_java_libjvmdir/libjvm.so"; then
+ AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.])
+ fi
+ else
+ if test ! -r "$kde_java_libgcjdir/libgcj.so"; then
+ AC_MSG_ERROR([libgcj.so not found under $kde_java_libgcjdir. Use --without-java.])
+ fi
+ fi
+
+ if test ! -x "$kde_java_bindir/java"; then
+ AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+ fi
+
+ dnl not needed for gcj compile
+
+ if test "x$kde_java_libgcjdir" = "x"; then
+ if test ! -r "$kde_java_libhpidir/libhpi.so"; then
+ AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.])
+ fi
+ fi
+
+ if test -n "$jni_includes"; then
+ dnl Check for JNI version
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_cxxflags_safe="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS $all_includes $jni_includes"
+
+ AC_TRY_COMPILE([
+ #include <jni.h>
+ ],
+ [
+ #ifndef JNI_VERSION_1_2
+ Syntax Error
+ #endif
+ ],[ kde_jni_works=yes ],
+ [ kde_jni_works=no ])
+
+ if test $kde_jni_works = no; then
+ AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h.
+ You need to have Java Development Kit (JDK) version 1.2.
+
+ Use --with-java to specify another location.
+ Use --without-java to configure without java support.
+ Or download a newer JDK and try again.
+ See e.g. http://java.sun.com/products/jdk/1.2 ])
+ fi
+
+ CXXFLAGS="$ac_cxxflags_safe"
+ AC_LANG_RESTORE
+
+ dnl All tests ok, inform and subst the variables
+
+ JAVAC=$kde_java_bindir/javac
+ JAVAH=$kde_java_bindir/javah
+ JAR=$kde_java_bindir/jar
+ AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+ if test "x$kde_java_libgcjdir" = "x"; then
+ JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi"
+ else
+ JVMLIBS="-L$kde_java_libgcjdir -lgcj"
+ fi
+ AC_MSG_RESULT([java JDK in $kde_java_bindir])
+
+ else
+ AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+ AC_MSG_RESULT([java JRE in $kde_java_bindir])
+ fi
+elif test -d "/Library/Java/Home"; then
+ kde_java_bindir="/Library/Java/Home/bin"
+ jni_includes="-I/Library/Java/Home/include"
+
+ JAVAC=$kde_java_bindir/javac
+ JAVAH=$kde_java_bindir/javah
+ JAR=$kde_java_bindir/jar
+ JVMLIBS="-Xlinker -framework -Xlinker JavaVM"
+
+ AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+ AC_MSG_RESULT([Apple Java Framework])
+else
+ AC_MSG_RESULT([none found])
+fi
+
+AC_SUBST(JAVAC)
+AC_SUBST(JAVAH)
+AC_SUBST(JAR)
+AC_SUBST(JVMLIBS)
+AC_SUBST(jni_includes)
+
+# for backward compat
+kde_cv_java_includedir=$kde_java_includedir
+kde_cv_java_bindir=$kde_java_bindir
+])
+
+dnl this is a redefinition of autoconf 2.5x's AC_FOREACH.
+dnl When the argument list becomes big, as in KDE for AC_OUTPUT in
+dnl big packages, m4_foreach is dog-slow. So use our own version of
+dnl it. (matz@kde.org)
+m4_define([mm_foreach],
+[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])])
+m4_define([mm_car], [[$1]])
+m4_define([mm_car2], [[$@]])
+m4_define([_mm_foreach],
+[m4_if(m4_quote($2), [], [],
+ [m4_define([$1], mm_car($2))$3[]_mm_foreach([$1],
+ mm_car2(m4_shift($2)),
+ [$3])])])
+m4_define([AC_FOREACH],
+[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
+
+AC_DEFUN([KDE_NEED_FLEX],
+[
+kde_libs_safe=$LIBS
+LIBS="$LIBS $USER_LDFLAGS"
+AM_PROG_LEX
+LIBS=$kde_libs_safe
+if test -z "$LEXLIB"; then
+ AC_MSG_ERROR([You need to have flex installed.])
+fi
+AC_SUBST(LEXLIB)
+])
+
+AC_DEFUN([AC_PATH_QTOPIA],
+[
+ dnl TODO: use AC_CACHE_VAL
+
+ if test -z "$1"; then
+ qtopia_minver_maj=1
+ qtopia_minver_min=5
+ qtopia_minver_pat=0
+ else
+ qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"`
+ qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"`
+ qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"`
+ fi
+
+ qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat"
+ qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat"
+
+ AC_REQUIRE([AC_PATH_QT])
+
+ AC_MSG_CHECKING([for Qtopia])
+
+ LIB_QTOPIA="-lqpe"
+ AC_SUBST(LIB_QTOPIA)
+
+ kde_qtopia_dirs="$QPEDIR /opt/Qtopia"
+
+ ac_qtopia_incdir=NO
+
+ AC_ARG_WITH(qtopia-dir,
+ AC_HELP_STRING([--with-qtopia-dir=DIR],[where the root of Qtopia is installed]),
+ [ ac_qtopia_incdir="$withval"/include] )
+
+ qtopia_incdirs=""
+ for dir in $kde_qtopia_dirs; do
+ qtopia_incdirs="$qtopia_incdirs $dir/include"
+ done
+
+ if test ! "$ac_qtopia_incdir" = "NO"; then
+ qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs"
+ fi
+
+ qtopia_incdir=""
+ AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir)
+ ac_qtopia_incdir="$qtopia_incdir"
+
+ if test -z "$qtopia_incdir"; then
+ AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.])
+ fi
+
+ qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`;
+ qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`;
+ qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`;
+
+ qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat"
+ qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat"
+ if test "$qtopia_ver" -lt "$qtopia_minver"; then
+ AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr
+is required.])
+ fi
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ ac_cxxflags_safe="$CXXFLAGS"
+ ac_ldflags_safe="$LDFLAGS"
+ ac_libs_safe="$LIBS"
+
+ CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes"
+ LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+ LIBS="$LIBS $LIB_QTOPIA $LIBQT"
+
+ cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qpe/qpeapplication.h>
+#include <qpe/version.h>
+
+int main( int argc, char **argv )
+{
+ QPEApplication app( argc, argv );
+ return 0;
+}
+EOF
+
+ if AC_TRY_EVAL(ac_link) && test -s conftest; then
+ rm -f conftest*
+ else
+ rm -f conftest*
+ AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at
+the end of config.log])
+ fi
+
+ CXXFLAGS="$ac_cxxflags_safe"
+ LDFLAGS="$ac_ldflags_safe"
+ LIBS="$ac_libs_safe"
+
+ AC_LANG_RESTORE
+
+ QTOPIA_INCLUDES="-I$qtopia_incdir"
+ AC_SUBST(QTOPIA_INCLUDES)
+
+ AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir])
+])
+
+
+AC_DEFUN([KDE_INIT_DOXYGEN],
+[
+AC_MSG_CHECKING([for Qt docs])
+kde_qtdir=
+if test "${with_qt_dir+set}" = set; then
+ kde_qtdir="$with_qt_dir"
+fi
+
+AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR)
+AC_MSG_RESULT($QTDOCDIR)
+
+AC_SUBST(QTDOCDIR)
+
+KDE_FIND_PATH(dot, DOT, [], [])
+if test -n "$DOT"; then
+ KDE_HAVE_DOT="YES"
+else
+ KDE_HAVE_DOT="NO"
+fi
+AC_SUBST(KDE_HAVE_DOT)
+KDE_FIND_PATH(doxygen, DOXYGEN, [], [])
+AC_SUBST(DOXYGEN)
+
+DOXYGEN_PROJECT_NAME="$1"
+DOXYGEN_PROJECT_NUMBER="$2"
+AC_SUBST(DOXYGEN_PROJECT_NAME)
+AC_SUBST(DOXYGEN_PROJECT_NUMBER)
+
+KDE_HAS_DOXYGEN=no
+if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then
+ KDE_HAS_DOXYGEN=yes
+fi
+AC_SUBST(KDE_HAS_DOXYGEN)
+
+])
+
+
+AC_DEFUN([AC_FIND_BZIP2],
+[
+AC_MSG_CHECKING([for bzDecompress in libbz2])
+AC_CACHE_VAL(ac_cv_lib_bzip2,
+[
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET"
+kde_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+AC_TRY_LINK(dnl
+[
+#define BZ_NO_STDIO
+#include<bzlib.h>
+],
+ [ bz_stream s; (void) bzDecompress(&s); ],
+ eval "ac_cv_lib_bzip2='-lbz2'",
+ eval "ac_cv_lib_bzip2=no")
+LIBS="$kde_save_LIBS"
+CXXFLAGS="$kde_save_CXXFLAGS"
+AC_LANG_RESTORE
+])dnl
+AC_MSG_RESULT($ac_cv_lib_bzip2)
+
+if test ! "$ac_cv_lib_bzip2" = no; then
+ BZIP2DIR=bzip2
+
+ LIBBZ2="$ac_cv_lib_bzip2"
+ AC_SUBST(LIBBZ2)
+
+else
+
+ cxx_shared_flag=
+ ld_shared_flag=
+ KDE_CHECK_COMPILER_FLAG(shared, [
+ ld_shared_flag="-shared"
+ ])
+ KDE_CHECK_COMPILER_FLAG(fPIC, [
+ cxx_shared_flag="-fPIC"
+ ])
+
+ AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2])
+ AC_CACHE_VAL(ac_cv_lib_bzip2_prefix,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ kde_save_LIBS="$LIBS"
+ LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET"
+ kde_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES"
+
+ AC_TRY_LINK(dnl
+ [
+ #define BZ_NO_STDIO
+ #include<bzlib.h>
+ ],
+ [ bz_stream s; (void) BZ2_bzDecompress(&s); ],
+ eval "ac_cv_lib_bzip2_prefix='-lbz2'",
+ eval "ac_cv_lib_bzip2_prefix=no")
+ LIBS="$kde_save_LIBS"
+ CXXFLAGS="$kde_save_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])dnl
+
+ AC_MSG_RESULT($ac_cv_lib_bzip2_prefix)
+
+ if test ! "$ac_cv_lib_bzip2_prefix" = no; then
+ BZIP2DIR=bzip2
+
+ LIBBZ2="$ac_cv_lib_bzip2_prefix"
+ AC_SUBST(LIBBZ2)
+
+ AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix])
+ dnl else, we just ignore this
+ fi
+
+fi
+AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR")
+])
+
+dnl ------------------------------------------------------------------------
+dnl Try to find the SSL headers and libraries.
+dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed)
+dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([KDE_CHECK_SSL],
+[
+LIBSSL="-lssl -lcrypto"
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+ac_ssl_includes=NO ac_ssl_libraries=NO
+ssl_libraries=""
+ssl_includes=""
+AC_ARG_WITH(ssl-dir,
+ AC_HELP_STRING([--with-ssl-dir=DIR],[where the root of OpenSSL is installed]),
+ [ ac_ssl_includes="$withval"/include
+ ac_ssl_libraries="$withval"/lib$kdelibsuff
+ ])
+
+want_ssl=yes
+AC_ARG_WITH(ssl,
+ AC_HELP_STRING([--without-ssl],[disable SSL checks]),
+ [want_ssl=$withval])
+
+if test $want_ssl = yes; then
+
+AC_MSG_CHECKING(for OpenSSL)
+
+AC_CACHE_VAL(ac_cv_have_ssl,
+[#try to guess OpenSSL locations
+
+ ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes"
+ ssl_incdirs="$ac_ssl_includes $ssl_incdirs"
+ AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir)
+ ac_ssl_includes="$ssl_incdir"
+
+ ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs"
+ if test ! "$ac_ssl_libraries" = "NO"; then
+ ssl_libdirs="$ac_ssl_libraries $ssl_libdirs"
+ fi
+
+ test=NONE
+ ssl_libdir=NONE
+ for dir in $ssl_libdirs; do
+ try="ls -1 $dir/libssl*"
+ if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi
+ done
+
+ ac_ssl_libraries="$ssl_libdir"
+
+ ac_ldflags_safe="$LDFLAGS"
+ ac_libs_safe="$LIBS"
+
+ LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries"
+ LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref"
+
+ AC_TRY_LINK(,void RSAPrivateEncrypt(void);RSAPrivateEncrypt();,
+ ac_ssl_rsaref="yes"
+ ,
+ ac_ssl_rsaref="no"
+ )
+
+ LDFLAGS="$ac_ldflags_safe"
+ LIBS="$ac_libs_safe"
+
+ if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then
+ have_ssl=no
+ else
+ have_ssl=yes;
+ fi
+
+ ])
+
+ eval "$ac_cv_have_ssl"
+
+ AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes])
+
+ AC_MSG_CHECKING([whether OpenSSL uses rsaref])
+ AC_MSG_RESULT($ac_ssl_rsaref)
+
+ AC_MSG_CHECKING([for easter eggs])
+ AC_MSG_RESULT([none found])
+
+else
+ have_ssl=no
+fi
+
+if test "$have_ssl" = yes; then
+ AC_MSG_CHECKING(for OpenSSL version)
+ dnl Check for SSL version
+ AC_CACHE_VAL(ac_cv_ssl_version,
+ [
+
+ cat >conftest.$ac_ext <<EOF
+#include <openssl/opensslv.h>
+#include <stdio.h>
+ int main() {
+
+#ifndef OPENSSL_VERSION_NUMBER
+ printf("ssl_version=\\"error\\"\n");
+#else
+ if (OPENSSL_VERSION_NUMBER < 0x00906000)
+ printf("ssl_version=\\"old\\"\n");
+ else
+ printf("ssl_version=\\"ok\\"\n");
+#endif
+ return (0);
+ }
+EOF
+
+ ac_save_CPPFLAGS=$CPPFLAGS
+ if test "$ac_ssl_includes" != "/usr/include"; then
+ CPPFLAGS="$CPPFLAGS -I$ac_ssl_includes"
+ fi
+
+ if AC_TRY_EVAL(ac_link); then
+
+ if eval `./conftest 2>&5`; then
+ if test $ssl_version = error; then
+ AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !])
+ else
+ if test $ssl_version = old; then
+ AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.])
+ have_ssl=no
+ fi
+ fi
+ ac_cv_ssl_version="ssl_version=$ssl_version"
+ else
+ AC_MSG_ERROR([Your system couldn't run a small SSL test program.
+ Check config.log, and if you can't figure it out, send a mail to
+ David Faure <faure@kde.org>, attaching your config.log])
+ fi
+
+ else
+ AC_MSG_ERROR([Your system couldn't link a small SSL test program.
+ Check config.log, and if you can't figure it out, send a mail to
+ David Faure <faure@kde.org>, attaching your config.log])
+ fi
+ CPPFLAGS=$ac_save_CPPFLAGS
+
+ ])
+
+ eval "$ac_cv_ssl_version"
+ AC_MSG_RESULT($ssl_version)
+fi
+
+if test "$have_ssl" != yes; then
+ LIBSSL="";
+else
+ AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL])
+ ac_cv_have_ssl="have_ssl=yes \
+ ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref"
+
+
+ ssl_libraries="$ac_ssl_libraries"
+ ssl_includes="$ac_ssl_includes"
+
+ if test "$ac_ssl_rsaref" = yes; then
+ LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref"
+ fi
+
+ if test $ssl_version = "old"; then
+ AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6])
+ fi
+fi
+
+SSL_INCLUDES=
+
+if test "$ssl_includes" = "/usr/include"; then
+ if test -f /usr/kerberos/include/krb5.h; then
+ SSL_INCLUDES="-I/usr/kerberos/include"
+ fi
+elif test "$ssl_includes" != "/usr/local/include" && test -n "$ssl_includes"; then
+ SSL_INCLUDES="-I$ssl_includes"
+fi
+
+if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries" || test "$ssl_libraries" = "NONE"; then
+ SSL_LDFLAGS=""
+else
+ SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries"
+fi
+
+AC_SUBST(SSL_INCLUDES)
+AC_SUBST(SSL_LDFLAGS)
+AC_SUBST(LIBSSL)
+])
+
+AC_DEFUN([KDE_CHECK_STRLCPY],
+[
+ AC_REQUIRE([AC_CHECK_STRLCAT])
+ AC_REQUIRE([AC_CHECK_STRLCPY])
+ AC_CHECK_SIZEOF(size_t)
+ AC_CHECK_SIZEOF(unsigned long)
+
+ AC_MSG_CHECKING([sizeof size_t == sizeof unsigned long])
+ AC_TRY_COMPILE(,[
+ #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG
+ choke me
+ #endif
+ ],AC_MSG_RESULT([yes]),[
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+ Apparently on your system our assumption sizeof size_t == sizeof unsigned long
+ does not apply. Please mail kde-devel@kde.org with a description of your system!
+ ])
+ ])
+])
+
+AC_DEFUN([KDE_CHECK_BINUTILS],
+[
+ AC_MSG_CHECKING([if ld supports unversioned version maps])
+
+ kde_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+ echo "{ local: extern \"C++\" { foo }; };" > conftest.map
+ AC_TRY_LINK([int foo;],
+[
+#ifdef __INTEL_COMPILER
+icc apparently does not support libtools version-info and version-script
+at the same time. Dunno where the bug is, but until somebody figured out,
+better disable the optional version scripts.
+#endif
+
+ foo = 42;
+], kde_supports_versionmaps=yes, kde_supports_versionmaps=no)
+ LDFLAGS="$kde_save_LDFLAGS"
+ rm -f conftest.map
+ AM_CONDITIONAL(include_VERSION_SCRIPT,
+ [test "$kde_supports_versionmaps" = "yes" && test "$kde_use_debug_code" = "no"])
+
+ AC_MSG_RESULT($kde_supports_versionmaps)
+])
+
+AC_DEFUN([AM_PROG_OBJC],[
+AC_CHECK_PROGS(OBJC, gcc, gcc)
+test -z "$OBJC" && AC_MSG_ERROR([no acceptable objective-c gcc found in \$PATH])
+if test "x${OBJCFLAGS-unset}" = xunset; then
+ OBJCFLAGS="-g -O2"
+fi
+AC_SUBST(OBJCFLAGS)
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(OBJC)])
+])
+
+AC_DEFUN([KDE_CHECK_PERL],
+[
+ KDE_FIND_PATH(perl, PERL, [$bindir $exec_prefix/bin $prefix/bin], [
+ AC_MSG_ERROR([No Perl found in your $PATH.
+We need perl to generate some code.])
+ ])
+ AC_SUBST(PERL)
+])
+
+AC_DEFUN([KDE_CHECK_LARGEFILE],
+[
+AC_SYS_LARGEFILE
+if test "$ac_cv_sys_file_offset_bits" != no; then
+ CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
+fi
+
+if test "x$ac_cv_sys_large_files" != "xno"; then
+ CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=1"
+fi
+
+])
+
+dnl A small extension to PKG_CHECK_MODULES (defined in pkg.m4.in)
+dnl which allows to search for libs that get installed into the KDE prefix.
+dnl
+dnl Syntax: KDE_PKG_CHECK_MODULES(KSTUFF, libkexif >= 0.2 glib = 1.3.4, action-if, action-not)
+dnl defines KSTUFF_LIBS, KSTUFF_CFLAGS, see pkg-config man page
+dnl also defines KSTUFF_PKG_ERRORS on error
+AC_DEFUN([KDE_PKG_CHECK_MODULES], [
+
+ PKG_CONFIG_PATH="$prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH"
+ if test "$prefix" != "$kde_libs_prefix"; then
+ PKG_CONFIG_PATH="$kde_libs_prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH"
+ fi
+ export PKG_CONFIG_PATH
+ PKG_CHECK_MODULES([$1],[$2],[$3],[$4])
+])
+
+
+dnl Check for PIE support in the compiler and linker
+AC_DEFUN([KDE_CHECK_PIE_SUPPORT],
+[
+ AC_CACHE_CHECK([for PIE support], kde_cv_val_pie_support,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ safe_CXXFLAGS=$CXXFLAGS
+ safe_LDFLAGS=$LDFLAGS
+ CXXFLAGS="$CXXFLAGS -fpie"
+ LDFLAGS="$LDFLAGS -pie"
+
+ AC_TRY_LINK([int foo;], [], [kde_cv_val_pie_support=yes], [kde_cv_val_pie_support=no])
+
+ CXXFLAGS=$safe_CXXFLAGS
+ LDFLAGS=$safe_LDFLAGS
+ AC_LANG_RESTORE
+ ])
+
+ AC_MSG_CHECKING(if enabling -pie/fpie support)
+
+ AC_ARG_ENABLE(pie,
+ AC_HELP_STRING([--enable-pie],[platform supports PIE linking [default=detect]]),
+ [kde_has_pie_support=$enableval],
+ [kde_has_pie_support=detect])
+
+ if test "$kde_has_pie_support" = "detect"; then
+ kde_has_pie_support=$kde_cv_val_pie_support
+ fi
+
+ AC_MSG_RESULT([$kde_has_pie_support])
+
+ KDE_USE_FPIE=""
+ KDE_USE_PIE=""
+
+ AC_SUBST([KDE_USE_FPIE])
+ AC_SUBST([KDE_USE_PIE])
+
+ if test "$kde_has_pie_support" = "yes"; then
+ KDE_USE_FPIE="-fpie"
+ KDE_USE_PIE="-pie"
+ fi
+])
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+##
+## 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 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsdelf*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='NetBSD ld.elf_so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!). If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# Report which library types will actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_AC_TAGVAR(predep_objects,$1)=
+ _LT_AC_TAGVAR(postdep_objects,$1)=
+ _LT_AC_TAGVAR(postdeps,$1)=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux* | k*bsd*-gnu)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ case $cc_basename in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ linux* | k*bsd*-gnu)
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ _LT_CC_BASENAME([$compiler])
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux* | k*bsd*-gnu)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd* | netbsdelf*-gnu)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..dd92cb3
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,863 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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.
+
+# 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.
+
+# Copyright (C) 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.
+
+# 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.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# 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`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 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 7
+
+# 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])
+AC_SUBST([$1_FALSE])
+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
+# 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 8
+
+# 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], 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
+ 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
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} 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])
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 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 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; 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.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /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"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 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.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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 12
+
+# 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.58])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
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+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
+ 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)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+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
+])
+])
+
+
+# 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_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# 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_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+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])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 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 3
+
+# 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 done
+.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
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+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, 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
+
+# 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
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# 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 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 whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='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.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 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 3
+
+# _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],
+[AC_FOREACH([_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
+# 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_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# 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
+
+m4_include([acinclude.m4])
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..01ee35e
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,237 @@
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
+#undef HAVE_CARBON_CARBON_H
+
+/* Define if you have the CoreAudio API */
+#undef HAVE_COREAUDIO
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+#undef HAVE_CRT_EXTERNS_H
+
+/* Defines if your system has the crypt function */
+#undef HAVE_CRYPT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have libjpeg */
+#undef HAVE_LIBJPEG
+
+/* Define if you have libpng */
+#undef HAVE_LIBPNG
+
+/* Define if you have a working libpthread (will enable threaded code) */
+#undef HAVE_LIBPTHREAD
+
+/* Define if you have libz */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define if your system needs _NSGetEnviron to set up the environment */
+#undef HAVE_NSGETENVIRON
+
+/* Define if you have res_init */
+#undef HAVE_RES_INIT
+
+/* Define if you have the res_init prototype */
+#undef HAVE_RES_INIT_PROTO
+
+/* Define if you have a STL implementation by SGI */
+#undef HAVE_SGI_STL
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have strlcat */
+#undef HAVE_STRLCAT
+
+/* Define if you have the strlcat prototype */
+#undef HAVE_STRLCAT_PROTO
+
+/* Define if you have strlcpy */
+#undef HAVE_STRLCPY
+
+/* Define if you have the strlcpy prototype */
+#undef HAVE_STRLCPY_PROTO
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Suffix for lib directories */
+#undef KDELIBSUFF
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `char *', as computed by sizeof. */
+#undef SIZEOF_CHAR_P
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `size_t', as computed by sizeof. */
+#undef SIZEOF_SIZE_T
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Defined if compiling without arts */
+#undef WITHOUT_ARTS
+
+/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+
+
+
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+
+
+
+#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
+# include <sys/time.h>
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron())
+#endif
+
+
+
+#if !defined(HAVE_RES_INIT_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+int res_init(void);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_STRLCAT_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long strlcat(char*, const char*, unsigned long);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+#if !defined(HAVE_STRLCPY_PROTO)
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned long strlcpy(char*, const char*, unsigned long);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+
+
+
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+
+
+/* type to use in place of socklen_t if not defined */
+#undef kde_socklen_t
+
+/* type to use in place of socklen_t if not defined (deprecated, use
+ kde_socklen_t) */
+#undef ksize_t
diff --git a/configure.files b/configure.files
new file mode 100644
index 0000000..030bce8
--- /dev/null
+++ b/configure.files
@@ -0,0 +1,2 @@
+./admin/configure.in.min
+configure.in.in
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..8d9a56b
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,121 @@
+dnl =======================================================
+dnl FILE: ./admin/configure.in.min
+dnl =======================================================
+
+dnl This file is part of the KDE libraries/packages
+dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
+
+dnl This file is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+
+dnl You should have received a copy of the GNU Library General Public License
+dnl along with this library; see the file COPYING.LIB. If not, write to
+dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+dnl Boston, MA 02110-1301, USA.
+
+# Original Author was Kalle@kde.org
+# I lifted it in some mater. (Stephan Kulow)
+# I used much code from Janos Farkas
+
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT(acinclude.m4) dnl a source file from your sub dir
+
+dnl This is so we can use kde-common
+AC_CONFIG_AUX_DIR(admin)
+
+dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
+unset CDPATH
+
+dnl Checking host/target/build systems, for make, install etc.
+AC_CANONICAL_SYSTEM
+dnl Perform program name transformation
+AC_ARG_PROGRAM
+
+dnl Automake doc recommends to do this only here. (Janos)
+AM_INIT_AUTOMAKE(krename, 3.0.14) dnl searches for some needed programs
+
+KDE_SET_PREFIX
+
+dnl generate the config header
+AM_CONFIG_HEADER(config.h) dnl at the distribution this done
+
+dnl Checks for programs.
+AC_CHECK_COMPILERS
+AC_ENABLE_SHARED(yes)
+AC_ENABLE_STATIC(no)
+KDE_PROG_LIBTOOL
+
+dnl for NLS support. Call them in this order!
+dnl WITH_NLS is for the po files
+AM_KDE_WITH_NLS
+
+KDE_USE_QT(3.0)
+AC_PATH_KDE
+dnl =======================================================
+dnl FILE: configure.in.in
+dnl =======================================================
+
+#MIN_CONFIG(3.0)
+
+dnl PACKAGE set before
+KDE_CREATE_SUBDIRSLIST
+AC_CONFIG_FILES([ Makefile ])
+AC_CONFIG_FILES([ doc/Makefile ])
+AC_CONFIG_FILES([ doc/en/Makefile ])
+AC_CONFIG_FILES([ doc/en/HTML/Makefile ])
+AC_CONFIG_FILES([ krename/Makefile ])
+AC_CONFIG_FILES([ po/Makefile ])
+AC_OUTPUT
+# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
+if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
+ # And if so, warn when they don't match
+ if test "$kde_libs_prefix" != "$given_prefix"; then
+ # And if kde doesn't know about the prefix yet
+ echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
+ if test $? -ne 0; then
+ echo ""
+ echo "Warning: you chose to install this package in $given_prefix,"
+ echo "but KDE was found in $kde_libs_prefix."
+ echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
+ echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
+ echo "Then restart KDE."
+ echo ""
+ fi
+ fi
+fi
+
+if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
+ echo ""
+ echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
+ echo "was not included. Therefore, GCC symbol visibility support remains disabled."
+ echo ""
+ echo "For better performance, consider including the Qt visibility supporting patch"
+ echo "located at:"
+ echo ""
+ echo "http://bugs.kde.org/show_bug.cgi?id=109386"
+ echo ""
+ echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
+ echo "everything will continue to work just fine without it."
+ echo ""
+fi
+
+if test "$all_tests" = "bad"; then
+ if test ! "$cache_file" = "/dev/null"; then
+ echo ""
+ echo "Please remove the file $cache_file after changing your setup"
+ echo "so that configure will find the changes next time."
+ echo ""
+ fi
+else
+ echo ""
+ echo "Good - your configure finished. Start make now"
+ echo ""
+fi
diff --git a/configure.in.in b/configure.in.in
new file mode 100644
index 0000000..6b3717e
--- /dev/null
+++ b/configure.in.in
@@ -0,0 +1,3 @@
+#MIN_CONFIG(3.0)
+
+AM_INIT_AUTOMAKE(krename,3.0.14)
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..6063bd6
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,6 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+
+SUBDIRS = en
+
+####### kdevelop will overwrite this part!!! (end)############
+
diff --git a/doc/en/HTML/Makefile.am b/doc/en/HTML/Makefile.am
new file mode 100644
index 0000000..b668138
--- /dev/null
+++ b/doc/en/HTML/Makefile.am
@@ -0,0 +1,13 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+
+
+EXTRA_DIST = index.html
+
+install-data-local:
+ $(mkinstalldirs) $(kde_htmldir)/en/krename/
+ $(INSTALL_DATA) $(srcdir)/index.html $(kde_htmldir)/en/krename/index.html
+
+uninstall-local:
+ -rm -f $(kde_htmldir)/en/krename/index.html
+
+####### kdevelop will overwrite this part!!! (end)############
diff --git a/doc/en/HTML/index.html b/doc/en/HTML/index.html
new file mode 100644
index 0000000..2ae28f5
--- /dev/null
+++ b/doc/en/HTML/index.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>
+ The Krename Handbook
+ </title>
+ <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.64">
+ <link rel="NEXT" title="Introduction" href="introduction.html">
+ <meta name="KEYWORD" content="KDE">
+ <meta name="KEYWORD" content="Krename">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <link rel="stylesheet" href="common/kde-common.css" type="text/css">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta http-equiv="Content-Language" content="en">
+ <link rel="stylesheet" href="common/kde-localised.css" type="text/css" title="KDE-English">
+ <link rel="stylesheet" href="common/kde-default.css" type="text/css" title="KDE-Default">
+ <meta name="KEYWORDS" content="KDE, Krename">
+ </head>
+ <body class="BOOK" bgcolor="#FFFFFF" text="#000000" link="#AA0000" vlink="#AA0055" alink="#AA0000" style="font-family: sans-serif;">
+ <div class="logoheader">
+ <a href="http://www.kde.org/"><img src="common/logotp3.png" border="0" alt="The K Desktop Environment" height="62" width="229"></a>
+ </div>
+ <div class="BOOK">
+ <div class="TITLEPAGE">
+ <h1 class="TITLE">
+ <a name="AEN2">The KRename Handbook</a>
+ </h1>
+ </span>Last updated:<span class="DATE">06/01/2005</span>
+ <h3 class="AUTHOR">
+ <a name="AEN5">Dominik Seichter</a>
+ </h3>
+ <div class="AFFILIATION">
+ <div class="ADDRESS">
+ <p class="ADDRESS">
+ <a href="mailto:domseichter@web.de">domseichter@web.de</a>
+ </p>
+ </div>
+ </div>
+ <p class="COPYRIGHT">
+ Copyright &copy; 2001-2005 by <span class="HOLDER">Dominik Seichter</span>
+ </p>
+ <div>
+ <p><h3>Introduction</h3></p>
+ <p>
+ KRename is a batch renamer or a mass renamer, how it is called by a few people, for KDE. A batch renamer takes a list of files and renames them all at once using a given set of expressions. KRename has lot's of features which makes the renaming easier.
+ </p>
+ <p>
+ First of all there is the powerful GUI with two GUI modes: One mode (called wizard-mode) is for first time KRename users witch only want to do simple tasks and the other mode (called tabbedmode) shows the full power of KRename and allows you to do allmost everything with your filenames. But there is much more than only the GUI. KRename supports all of the great KDE technologies, like KIO-Slaves, which allow to rename files almost everywhere (on ftp:// servers, over fish:// or on smb:// shares), DCOP, giving you easy scripting access to KRename, and the powerful KDE file plugins. Thanks to the file plugins of KDE, KRename can access information, such as the interpret of a mp3 or ogg file or the creation date of a jpeg image.
+ </p>
+ <p>
+ And of course there is support for simple stuff like converting a filename from upper case to lower case, adding to a number to a filename or doing simple find and replace on filenames. Finally KRename comes with an undo function so that you do not break anything while playing with KRename.
+ </p>
+ <p><h3>Documentation</h3></p>
+ <p>The complete KRename handbook ist available as PDF file and can be downloaded from <a href="http://www.krename.net/Documentation.20.0.html">www.krename.net</a>.</p>
+ </div>
+ <hr>
+ </div>
+
+ </div>
+ </body>
+</html>
+
diff --git a/doc/en/Makefile.am b/doc/en/Makefile.am
new file mode 100644
index 0000000..8838c6b
--- /dev/null
+++ b/doc/en/Makefile.am
@@ -0,0 +1,10 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+
+SUBDIRS = HTML
+
+####### kdevelop will overwrite this part!!! (end)############
+
+KDE_LANG = en
+KDE_DOCS = krename
+
+
diff --git a/krename.kdevelop b/krename.kdevelop
new file mode 100644
index 0000000..6ebec56
--- /dev/null
+++ b/krename.kdevelop
@@ -0,0 +1,195 @@
+<!DOCTYPE kdevelop>
+<kdevelop>
+ <general>
+ <author>Dominik Seichter</author>
+ <email>domseichter@web.de</email>
+ <projectmanagement>KDevKDEAutoProject</projectmanagement>
+ <primarylanguage>C++</primarylanguage>
+ <keywords>
+ <keyword>KDE</keyword>
+ <keyword>Qt</keyword>
+ </keywords>
+ <projectdirectory>.</projectdirectory>
+ <absoluteprojectpath>false</absoluteprojectpath>
+ <version>3.0.3</version>
+ <description/>
+ <ignoreparts/>
+ <secondaryLanguages/>
+ </general>
+ <kdevautoproject>
+ <general>
+ <mainprogram>krename</mainprogram>
+ <useconfiguration>default</useconfiguration>
+ <activetarget>krename/krename</activetarget>
+ </general>
+ <configure>
+ <configargs>\s--build=i386-linux --host=i386-linux --target=i386-linux --prefix=/opt/kde3\s</configargs>
+ </configure>
+ <make>
+ <abortonerror>false</abortonerror>
+ <numberofjobs>1</numberofjobs>
+ <dontact>false</dontact>
+ <makebin/>
+ <envvars>
+ <envvar value="1" name="WANT_AUTOCONF_2_5" />
+ <envvar value="1" name="WANT_AUTOMAKE_1_6" />
+ </envvars>
+ </make>
+ <compiler>
+ <cflags/>
+ <cxxflags>\s-O2 -g2 -Wall</cxxflags>
+ </compiler>
+ <run>
+ <directoryradio>executable</directoryradio>
+ <customdirectory>/</customdirectory>
+ <mainprogram>krename/krename</mainprogram>
+ <programargs/>
+ <terminal>false</terminal>
+ <autocompile>true</autocompile>
+ <envvars/>
+ </run>
+ <configurations>
+ <default>
+ <configargs/>
+ <builddir/>
+ <topsourcedir/>
+ <cppflags/>
+ <ldflags/>
+ <ccompiler>kdevgccoptions</ccompiler>
+ <cxxcompiler>kdevgppoptions</cxxcompiler>
+ <f77compiler>kdevg77options</f77compiler>
+ <ccompilerbinary/>
+ <cxxcompilerbinary/>
+ <f77compilerbinary/>
+ <cflags/>
+ <cxxflags/>
+ <f77flags/>
+ </default>
+ <debug>
+ <configargs>--enable-debug</configargs>
+ <builddir>debug</builddir>
+ <topsourcedir/>
+ <cppflags/>
+ <ldflags/>
+ <ccompiler>kdevgccoptions</ccompiler>
+ <cxxcompiler>kdevgppoptions</cxxcompiler>
+ <f77compiler>kdevg77options</f77compiler>
+ <ccompilerbinary/>
+ <cxxcompilerbinary/>
+ <f77compilerbinary/>
+ <cflags/>
+ <cxxflags/>
+ <f77flags/>
+ </debug>
+ </configurations>
+ </kdevautoproject>
+ <kdevfileview>
+ <groups>
+ <group pattern="*.h;*.hh;*.hxx;*.hpp;*.H" name="Header" />
+ <group pattern="*.cpp;*.c;*.cc;*.C;*.cxx;*.ec;*.ecpp;*.lxx;*.l++;*.ll;*.l" name="Quellen" />
+ <group pattern="*.kdevdlg;*.ui;*.rc" name="Benutzerschnittstelle" />
+ <group pattern="*.po" name="Ãœbersetzungen" />
+ <group pattern="AUTHORS;COPYING;ChangeLog;INSTALL;README;TODO;NEWS" name="GNU" />
+ <group pattern="*.html;*.HTML;*.htm;*.html" name="Documentation" />
+ <group pattern="*" name="Andere" />
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ <hidenonlocation>false</hidenonlocation>
+ </groups>
+ <tree>
+ <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ <showvcsfields>false</showvcsfields>
+ </tree>
+ </kdevfileview>
+ <kdevdoctreeview>
+ <ignoretocs>
+ <toc>gtk</toc>
+ <toc>gnustep</toc>
+ <toc>python</toc>
+ <toc>php</toc>
+ <toc>perl</toc>
+ </ignoretocs>
+ <projectdoc>
+ <userdocDir>html/</userdocDir>
+ <apidocDir>html/</apidocDir>
+ </projectdoc>
+ <ignoreqt_xml/>
+ <ignoredoxygen/>
+ <ignorekdocs/>
+ <ignoredevhelp/>
+ </kdevdoctreeview>
+ <kdevdebugger>
+ <general>
+ <dbgshell>libtool</dbgshell>
+ <programargs/>
+ <gdbpath/>
+ <configGdbScript/>
+ <runShellScript/>
+ <runGdbScript/>
+ <breakonloadinglibs>true</breakonloadinglibs>
+ <separatetty>false</separatetty>
+ <floatingtoolbar>false</floatingtoolbar>
+ </general>
+ <display>
+ <staticmembers>true</staticmembers>
+ <demanglenames>true</demanglenames>
+ <outputradix>10</outputradix>
+ </display>
+ </kdevdebugger>
+ <kdevcppsupport>
+ <references/>
+ <codecompletion>
+ <includeGlobalFunctions>true</includeGlobalFunctions>
+ <includeTypes>true</includeTypes>
+ <includeEnums>true</includeEnums>
+ <includeTypedefs>false</includeTypedefs>
+ <automaticCodeCompletion>true</automaticCodeCompletion>
+ <automaticArgumentsHint>true</automaticArgumentsHint>
+ <automaticHeaderCompletion>true</automaticHeaderCompletion>
+ <codeCompletionDelay>250</codeCompletionDelay>
+ <argumentsHintDelay>400</argumentsHintDelay>
+ <headerCompletionDelay>250</headerCompletionDelay>
+ </codecompletion>
+ </kdevcppsupport>
+ <kdevfilecreate>
+ <filetypes/>
+ <useglobaltypes/>
+ </kdevfilecreate>
+ <cppsupportpart>
+ <filetemplates>
+ <interfacesuffix>.h</interfacesuffix>
+ <implementationsuffix>.cpp</implementationsuffix>
+ </filetemplates>
+ </cppsupportpart>
+ <dist>
+ <custom>false</custom>
+ <bzip>false</bzip>
+ <archname/>
+ <appname/>
+ <version/>
+ <release/>
+ <vendor/>
+ <licence/>
+ <summary/>
+ <group/>
+ <packager/>
+ <description/>
+ <changelog/>
+ <devpackage>false</devpackage>
+ <docspackage>false</docspackage>
+ <appicon>false</appicon>
+ <arch>0</arch>
+ <genHTML>false</genHTML>
+ <useRPM>false</useRPM>
+ <ftpkde>false</ftpkde>
+ <appskde>false</appskde>
+ <url/>
+ </dist>
+ <kdevcvsservice>
+ <recursivewhenupdate>true</recursivewhenupdate>
+ <prunedirswhenupdate>true</prunedirswhenupdate>
+ <createdirswhenupdate>true</createdirswhenupdate>
+ <recursivewhencommitremove>true</recursivewhencommitremove>
+ <revertoptions>-C</revertoptions>
+ </kdevcvsservice>
+</kdevelop>
diff --git a/krename.spec b/krename.spec
new file mode 100644
index 0000000..a6fddd8
--- /dev/null
+++ b/krename.spec
@@ -0,0 +1,53 @@
+%define name krename
+%define version 3.0.14
+
+Summary: A powerfull batch renamer for KDE
+Name: %{name}
+Version: %{version}
+Release: 1
+License: GPL
+Vendor: Dominik Seichter <domseichter@web.de>
+Url: http://krename.sourceforge.net
+Packager: Dominik Seichter <domseichter@web.de>
+Group: kde/utilities
+Source: %{name}-%{version}.tar.bz2
+BuildRoot: /var/tmp/%{name}-%{version}
+
+%description
+Krename is a very powerful batch file renamer for KDE3 which can rename a list of files based on a set of expressions. It can copy/move the files to another directory or simply rename the input files. Krename supports many conversion operations, including conversion of a filename to lowercase or to uppercase, conversion of the first letter of every word to uppercase, adding numbers to filenames, finding and replacing parts of the filename, and many more. It can also change access and modification dates, permissions, and file ownership.
+
+%prep
+%setup
+
+%build
+# Look for common rpm-options:
+if [ -f /etc/opt/kde3/common_options ]; then
+ . /etc/opt/kde3/common_options
+ ./configure $configkde
+else
+ ./configure
+fi
+
+# Setup for parallel builds
+numprocs=`egrep -c ^cpu[0-9]+ /proc/stat || :`
+if [ "$numprocs" = "0" ]; then
+ numprocs=1
+fi
+
+make -j$numprocs
+
+%install
+make install-strip DESTDIR=$RPM_BUILD_ROOT
+
+cd $RPM_BUILD_ROOT
+find . -type d | sed '1,2d;s,^\.,\%attr(-\,root\,root) \%dir ,' > $RPM_BUILD_DIR/master.list
+find . -type f | sed 's,^\.,\%attr(-\,root\,root) ,' >> $RPM_BUILD_DIR/master.list
+find . -type l | sed 's,^\.,\%attr(-\,root\,root) ,' >> $RPM_BUILD_DIR/master.list
+
+%clean
+cd $RPM_BUILD_DIR
+rm -rf $RPM_BUILD_ROOT
+rm -rf %{name}-%{version}
+rm master.list
+
+%files -f ../master.list
diff --git a/krename/Makefile.am b/krename/Makefile.am
new file mode 100644
index 0000000..5d1503f
--- /dev/null
+++ b/krename/Makefile.am
@@ -0,0 +1,49 @@
+## Makefile.am for KRename
+
+# set the include path for X, qt and KDE
+INCLUDES = -I$(top_srcdir)/src $(all_includes)
+
+# these are the headers for your project
+
+# let automoc handle all of the meta source files (moc)
+METASOURCES = AUTO
+KDE_ICON = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kdedcoptest.pot
+
+# this is the program that gets installed. it's name is used for all
+# of the other Makefile.am variables
+bin_PROGRAMS = krename
+
+# the application source, library search path, and link libraries
+
+krename_LDFLAGS = $(KDE_RPATH) $(all_libraries)
+krename_LDADD =$(LIB_KPARTS) $(LIB_KFILE) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT) $(LIBSOCKET)
+
+noinst_HEADERS = ProgressDialog.h dateplugin.h fileplugin.h kmylistbox.h krenameimpl.h \
+ pictureplugin.h tabs.h batchrenamer.h datetime.h firststartdlg.h \
+ kmylistview.h mydirplugin.h plugin.h threadedlister.h commandplugin.h \
+ dsdirselectdialog.h guimodeselector.h krecursivelister.h myinputdialog.h \
+ pluginloader.h translitplugin.h confdialog.h encodingplugin.h helpdialog.h \
+ krename.h numberdialog.h profiledlg.h undodialog.h coorddialog.h \
+ fileoperation.h kmyhistorycombo.h krenamedcop.h permission.h replacedialog.h \
+ wizard.h
+
+krename_SOURCES = guimodeselector.cpp firststartdlg.cpp tabs.cpp \
+ krenameimpl.cpp numberdialog.cpp coorddialog.cpp commandplugin.cpp helpdialog.cpp \
+ pictureplugin.cpp mydirplugin.cpp datetime.cpp permission.cpp fileplugin.cpp \
+ undodialog.cpp myinputdialog.cpp kmylistview.cpp wizard.cpp replacedialog.cpp \
+ pluginloader.cpp plugin.cpp kmylistbox.cpp kmyhistorycombo.cpp fileoperation.cpp \
+ confdialog.cpp batchrenamer.cpp ProgressDialog.cpp main.cpp krecursivelister.cpp \
+ dsdirselectdialog.cpp krenamedcop.skel dateplugin.cpp encodingplugin.cpp profiledlg.cpp \
+ threadedlister.cpp translitplugin.cpp
+
+
+xdg_apps_DATA = krename.desktop
+
+krenameservice_DATA = krenameservicemenu.desktop krename_dir.desktop
+krenameservicedir = $(kde_datadir)/konqueror/servicemenus
+
+datafiles_DATA = logo.png krename_system_default_tabbed.xml krename_system_default_wizard.xml
+datafilesdir = $(kde_datadir)/krename
diff --git a/krename/ProgressDialog.cpp b/krename/ProgressDialog.cpp
new file mode 100644
index 0000000..81723b5
--- /dev/null
+++ b/krename/ProgressDialog.cpp
@@ -0,0 +1,360 @@
+/***************************************************************************
+ ProgressDialog.cpp - description
+ -------------------
+ begin : Die Mai 15 15:34:19 CEST 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// QT Includes
+#include <qlayout.h>
+#include <qprogressbar.h>
+#include <qtimer.h>
+#include <qtooltip.h>
+
+#if QT_VERSION < 0x030100
+ #include <qregexp.h>
+#endif
+
+// KDE includes
+#include <kapplication.h>
+#include <kiconloader.h>
+#include <klistview.h>
+#include <klocale.h>
+#include <kpopupmenu.h>
+#include <kpushbutton.h>
+#include <krun.h>
+
+#include <qfile.h>
+
+// Own includes
+#include "ProgressDialog.h"
+#include "krenameimpl.h"
+#include "undodialog.h"
+#include "fileoperation.h"
+
+#define MNU_ERROR_ID 33999
+#define MNU_DONE_ID 33998
+
+// update user interface every 1/2 second
+#define TIMER_INTERVAL 500
+
+ProgressDialog::ProgressDialog( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+{
+ renamedFiles = NULL;
+
+ resize( 400, 380 );
+ setCaption( i18n("Progress") );
+ setIcon( BarIcon( "krename" ) );
+
+ ProgressDialogLayout = new QVBoxLayout( this, 11, 6 );
+ Layout1 = new QHBoxLayout( 0, 0, 6 );
+ QHBoxLayout* Layout2 = new QHBoxLayout( 0, 6, 6 );
+
+ bar = new QProgressBar( this );
+ bar->setProgress( 0 );
+
+ buttonCancel = new KPushButton( i18n("&Cancel"), this );
+
+ display = new KListView( this );
+ display->addColumn( i18n("Messages") );
+ display->addColumn( "sort" );
+ display->setColumnWidthMode( 0, QListView::Maximum );
+ display->setColumnWidthMode( 1, QListView::Manual );
+ display->setColumnWidth( 1, 0 );
+ display->setSorting( -1 );
+ display->setUpdatesEnabled( false );
+
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Minimum );
+
+ buttonUndo = new KPushButton( this );
+ buttonUndo->setText( i18n("&Undo") );
+ buttonUndo->setEnabled( false );
+
+ mnuButton = new KPopupMenu( this );
+ mnuButton->insertItem( i18n("Restart KRename..."), this, SLOT( restart() ));
+ mnuButton->insertSeparator();
+ mnuButton->insertItem( i18n("Rename Processed Files &Again..."), this, SLOT( again() ), 0, MNU_DONE_ID );
+ mnuButton->insertItem( i18n("Rename Unprocessed Files &Again..."), this, SLOT( unAgain() ), 0, MNU_ERROR_ID );
+ mnuButton->insertItem( i18n("Rename All Files &Again..."), this, SLOT( allAgain() ));
+ buttonRestart = new KPushButton( this );
+ buttonRestart->setText( i18n( "&Rename More..." ) );
+ buttonRestart->setPopup( mnuButton );
+ buttonRestart->setEnabled( false );
+
+ buttonOpenDest = new KPushButton( this );
+ buttonOpenDest->setText( i18n("&Open Destination...") );
+
+ buttonClose = new KPushButton( this );
+ buttonClose->setText( i18n( "&Close" ) );
+ buttonClose->setEnabled( false );
+
+ Layout1->addItem( spacer );
+ Layout1->addWidget( buttonUndo );
+ Layout1->addWidget( buttonRestart );
+ Layout1->addWidget( buttonOpenDest );
+ Layout1->addWidget( buttonClose );
+ Layout1->addItem( spacer );
+
+ Layout2->addWidget( bar );
+ Layout2->addWidget( buttonCancel );
+ Layout2->setStretchFactor( bar, 2 );
+
+ ProgressDialogLayout->addLayout( Layout2 );
+ ProgressDialogLayout->addWidget( display );
+ ProgressDialogLayout->addLayout( Layout1 );
+
+ connect( buttonClose, SIGNAL(clicked()), this, SLOT(quitAll()));
+ connect( buttonOpenDest, SIGNAL(clicked()), this, SLOT(openDest()));
+ connect( buttonCancel, SIGNAL( clicked()), this, SLOT(canceled() ));
+ connect( buttonUndo, SIGNAL( clicked() ), this, SLOT( undo() ) );
+
+ m_count = 0;
+ m_canceled = false;
+ m_timer = new QTimer( this, "m_timer" );
+ connect( m_timer, SIGNAL( timeout() ), this, SLOT( slotTimer() ) );
+
+ hide();
+}
+
+ProgressDialog::~ProgressDialog()
+{
+ delete m_timer;
+
+ if( renamedFiles )
+ delete [] renamedFiles;
+}
+
+void ProgressDialog::print( QString text, QString pixmap )
+{
+ if( !m_timer->isActive() )
+ {
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ m_timer->start( TIMER_INTERVAL );
+ }
+
+ // set an icon if we have none yet
+ if( pixmap.isNull() )
+ pixmap = "ok";
+
+ KListViewItem* item = new KListViewItem( display, text, count() );
+ item->setPixmap( 0, SmallIcon(pixmap) );
+ display->insertItem( item );
+}
+
+void ProgressDialog::error( QString text )
+{
+ if( !m_timer->isActive() )
+ {
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ m_timer->start( TIMER_INTERVAL );
+ }
+
+ //TODO: simplify this (breaks i18n)
+ KListViewItem* item = new KListViewItem( display, QString( i18n("Error: %1") ).arg( QString::null ) + simplify( text ), count() );
+ item->setPixmap( 0, SmallIcon("cancel") );
+ display->insertItem( item );
+}
+
+void ProgressDialog::warning( QString text )
+{
+ if( !m_timer->isActive() )
+ {
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ m_timer->start( TIMER_INTERVAL );
+ }
+
+ KListViewItem* item = new KListViewItem( display, QString( i18n("Warning: %1") ).arg( QString::null ) + simplify( text ), count() );
+ item->setPixmap( 0, SmallIcon("idea") );
+ display->insertItem( item );
+}
+
+void ProgressDialog::quitAll()
+{
+ KApplication::exit(0);
+}
+
+void ProgressDialog::done( int errors, int successfull, bool allowundo )
+{
+ m_timer->stop();
+ KApplication::restoreOverrideCursor();
+
+ display->setUpdatesEnabled( true );
+ display->setSorting( 1, true );
+ display->sort();
+ display->setSorting( -1 );
+ display->triggerUpdate();
+ display->ensureItemVisible( display->lastItem() );
+
+ bar->setProgress( bar->totalSteps() );
+ mnuButton->setItemEnabled( MNU_ERROR_ID, errors );
+ mnuButton->setItemEnabled( MNU_DONE_ID, successfull );
+
+ buttonClose->setEnabled( true );
+ buttonRestart->setEnabled( true );
+ if( allowundo )
+ buttonUndo->setEnabled( true );
+ buttonCancel->setEnabled( false );
+
+ kapp->processEvents( 0 );
+}
+
+void ProgressDialog::show()
+{
+ QWidget::show();
+
+ int w = kapp->desktop()->width();
+ int h = kapp->desktop()->height();
+ move( (w-width())/2,(h-height())/2 );
+}
+
+void ProgressDialog::restart()
+{
+ QWidget* krename = KRenameImpl::launch( QRect( 0, 0, 0, 0 ), KURL::List() );
+ krename->show();
+ close();
+}
+
+void ProgressDialog::again()
+{
+ KURL::List list;
+ for( unsigned int i = 0; i < m_size; i++ )
+ if( !renamedFiles[i].error )
+ list.append( renamedFiles[i].dst );
+
+ QWidget* krename = KRenameImpl::launch( QRect( 0, 0, 0, 0 ), list );
+ krename->show();
+ close();
+}
+
+void ProgressDialog::unAgain()
+{
+ KURL::List list;
+ for( unsigned int i = 0; i < m_size; i++ )
+ if( renamedFiles[i].error )
+ list.append( renamedFiles[i].src );
+
+ QWidget* krename = KRenameImpl::launch( QRect( 0, 0, 0, 0 ), list );
+ krename->show();
+ close();
+}
+
+void ProgressDialog::allAgain()
+{
+ KURL::List list;
+ for( unsigned int i = 0; i < m_size; i++ )
+ list.append( renamedFiles[i].error ? renamedFiles[i].src : renamedFiles[i].dst );
+
+ QWidget* krename = KRenameImpl::launch( QRect( 0, 0, 0, 0 ), list );
+ krename->show();
+ close();
+}
+
+void ProgressDialog::openDest()
+{
+ new KRun( m_dest );
+}
+
+QString ProgressDialog::count()
+{
+ QString s;
+ return s.sprintf( "%0*i", 7, ++m_count );
+}
+
+void ProgressDialog::setProgressTotalSteps( int t )
+{
+ bar->setTotalSteps( t );
+}
+
+void ProgressDialog::setProgress( int p )
+{
+ m_timer->start( TIMER_INTERVAL );
+
+ bar->setProgress( p );
+}
+
+void ProgressDialog::canceled()
+{
+ warning( i18n("User pressed cancel!") );
+ warning( i18n("Aborting...") );
+ m_canceled = true;
+}
+
+const QString ProgressDialog::simplify( const QString & text )
+{
+ // make error messages fit in one line!
+ QString t( text );
+#if QT_VERSION >= 0x030100
+ t.remove( '\n' );
+#else
+ t.replace( QRegExp("\n"), "" );
+#endif
+
+ return t;
+}
+
+void ProgressDialog::undo()
+{
+ KURL::List list;
+ FileOperation fop;
+
+ m_timer->start( TIMER_INTERVAL );
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ for( unsigned int i = 0; i < m_size; i++ )
+ {
+ setProgress( i );
+ list.append( renamedFiles[i].src );
+ if( !renamedFiles[i].error )
+ {
+ if( renamedFiles[i].dir ) {
+ /** handle renamed directories and their contents
+ */
+ QString ddir = renamedFiles[i].dst.path();
+ QString sdir = renamedFiles[i].src.path();
+ for( unsigned int c = i+1; c < m_size; c++ ) {
+ QString dpath = renamedFiles[c].dst.path();
+ QString spath = renamedFiles[c].src.path();
+
+ if( spath.startsWith( ddir ) )
+ {
+ spath = sdir + spath.right( spath.length() - ddir.length() );
+ renamedFiles[c].src.setPath( spath );
+ }
+
+
+ if( dpath.startsWith( ddir ) )
+ {
+ dpath = sdir + dpath.right( dpath.length() - ddir.length() );
+ renamedFiles[c].dst.setPath( dpath );
+ }
+ }
+ }
+
+ if(!fop.start( renamedFiles[i].dst, renamedFiles[i].src, MOVE, false ))
+ error( i18n("Undo: ") + fop.error() );
+ }
+ }
+
+ print( i18n("Undoing the renaming operation has been completed."), "undo" );
+ m_timer->stop();
+ KApplication::restoreOverrideCursor();
+
+ QWidget* krename = KRenameImpl::launch( QRect( 0, 0, 0, 0 ), list );
+ krename->show();
+ close();
+}
+
+void ProgressDialog::slotTimer()
+{
+ kapp->processEvents( 0 );
+}
diff --git a/krename/ProgressDialog.h b/krename/ProgressDialog.h
new file mode 100644
index 0000000..0bbab51
--- /dev/null
+++ b/krename/ProgressDialog.h
@@ -0,0 +1,129 @@
+/***************************************************************************
+ ProgressDialog.h - description
+ -------------------
+ begin : Die Mai 15 15:34:19 CEST 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef PROGRESSDIALOG_H
+#define PROGRESSDIALOG_H
+
+#include <qwidget.h>
+#include <kurl.h>
+
+typedef struct RenamedList
+{
+ KURL src;
+ KURL dst;
+
+ bool dir;
+ bool error;
+};
+
+class KRenameImpl;
+class KListView;
+class KPopupMenu;
+class KPushButton;
+class QProgressBar;
+class QStringList;
+class QStrList;
+class QString;
+class QTimer;
+class QHBoxLayout;
+class QVBoxLayout;
+class ProgressDialog : public QWidget
+{
+ Q_OBJECT
+ public:
+ ProgressDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~ProgressDialog();
+
+ void setProgressTotalSteps( int t );
+ void setProgress( int p );
+
+ inline bool wasCancelled() const;
+ inline void setDestination( const KURL & dir );
+ inline void setRenamedFiles( RenamedList* list, unsigned int size ) ;
+ inline void setCreatedDirectories( const KURL::List & list );
+
+ void done( int errors, int successfull, bool allowundo );
+ void print( QString text, QString pixmap = 0 );
+ void error( QString text );
+ void warning( QString text );
+
+ public slots:
+ void show();
+
+ private slots:
+ void quitAll();
+ void restart();
+ void again();
+ void unAgain();
+ void allAgain();
+ void openDest();
+ void canceled();
+ void undo();
+ void slotTimer();
+
+ private:
+ QString count();
+ const QString simplify( const QString & text );
+
+ protected:
+ RenamedList* renamedFiles;
+ unsigned int m_size;
+
+ KURL m_dest;
+ int m_count;
+ bool m_canceled;
+ KURL::List m_created;
+
+ QTimer* m_timer;
+
+ KListView* display;
+ KPushButton* buttonClose;
+ KPushButton* buttonRestart;
+ KPushButton* buttonOpenDest;
+ KPushButton* buttonUndo;
+ KPushButton* buttonCancel;
+ KPopupMenu* mnuButton;
+
+ QProgressBar* bar;
+
+ QVBoxLayout* ProgressDialogLayout;
+ QHBoxLayout* Layout1;
+};
+
+
+bool ProgressDialog::wasCancelled() const
+{
+ return m_canceled;
+}
+
+void ProgressDialog::setDestination( const KURL & dir )
+{
+ m_dest = dir;
+}
+
+void ProgressDialog::setRenamedFiles( RenamedList* list, unsigned int size )
+{
+ renamedFiles = list;
+ m_size = size;
+}
+
+void ProgressDialog::setCreatedDirectories( const KURL::List & list )
+{
+ m_created = list;
+}
+
+#endif // PROGRESSDIALOG_H
diff --git a/krename/batchrenamer.cpp b/krename/batchrenamer.cpp
new file mode 100644
index 0000000..89721e0
--- /dev/null
+++ b/krename/batchrenamer.cpp
@@ -0,0 +1,950 @@
+/***************************************************************************
+ batchrenamer.cpp - description
+ -------------------
+ begin : Sat Aug 18 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifndef VERSION
+ #define VERSION "unknown"
+#endif
+
+// OS includes
+#include <stdio.h>
+#include <pwd.h>
+#include <grp.h>
+#include <unistd.h>
+// chmod:
+#include <sys/types.h>
+#include <sys/stat.h>
+
+// QT includes
+#include <qdir.h>
+#include <qregexp.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kio/job.h>
+#include <kio/netaccess.h>
+#include <klocale.h>
+
+// Own includes
+#include "ProgressDialog.h"
+#include "batchrenamer.h"
+#include "fileoperation.h"
+#include "pluginloader.h"
+#include "kmylistview.h"
+
+using namespace KIO;
+
+BatchRenamer::BatchRenamer()
+ : m_index( 0 )
+{
+ plug = PluginLoader::instance();
+ m_counter_index = 0;
+}
+
+BatchRenamer::~BatchRenamer()
+{
+}
+
+void BatchRenamer::processFiles( ProgressDialog* p, QObject* object )
+{
+ delete object;
+ t.start();
+
+ m_counters.clear();
+
+ for( unsigned int i = 0; i < m_files.count(); i++)
+ {
+ m_counter_index = 0;
+
+ if( m_mode == RENAME ) {// final Path = source Path
+ m_files[i].dst.directory = m_files[i].src.directory;
+ m_files[i].dst.url = m_files[i].src.url;
+ m_files[i].dst.url.setFileName( QString::null );
+ } else {
+ m_files[i].dst.directory = dirname.path();
+ m_files[i].dst.url = dirname;
+ }
+
+ if( i == 0 )
+ p->setDestination( m_files[i].dst.url );
+ else
+ {
+ if( m_reset )
+ findCounterReset( i );
+ }
+
+ m_files[i].dst.name = processString( text, m_files[i].src.name, i );
+ if( !extext.isEmpty() )
+ m_files[i].dst.extension = processString( extext, m_files[i].src.extension, i );
+
+ (void)applyManualChanges( i );
+
+ // Assemble filenames
+ parseSubdirs( &m_files[i] );
+ // TODO: DOM
+ // ESCAPE HERE
+
+ m_files[i].src.name = BatchRenamer::buildFilename( &m_files[i].src, true );
+
+ // Let's run the plugins that change the final filename,
+ // i.e the encodingsplugin
+ m_files[i].dst.name = parsePlugins( i, m_files[i].dst.name, TYPE_FINAL_FILENAME );
+
+ m_files[i].dst.name = BatchRenamer::buildFilename( &m_files[i].dst, true );
+
+ /*
+ * take care of renamed directories and
+ * correct the paths of their contents
+ */
+ if( m_files[i].dir && (m_mode == RENAME || m_mode == MOVE) ) {
+ for( unsigned int c = i; c < m_files.count(); c++ ) {
+ if( m_files[c].src.directory.left( m_files[i].src.name.length() + 1 )
+ == ( m_files[i].src.name + "/" ) ) {
+
+ m_files[c].src.directory.replace( 0, m_files[i].src.name.length(), m_files[i].dst.name );
+ m_files[c].src.url.setPath( BatchRenamer::buildFilename( &m_files[c].src, true ) );
+ }
+ }
+ }
+ }
+
+ p->print( QString( i18n("Filenames Processed after %1 seconds.")).arg(t.elapsed()/1000) );
+
+ work( p );
+}
+
+QString BatchRenamer::processString( QString text, QString oldname, int i )
+{
+ /*
+ * Come on! Grep for this text and help me!
+ *
+ * note about krename escape sequences
+ * for certain characters:
+ *
+ * Krename will have problems with files
+ * which contain one of the following
+ * unicode characters: 60000, 60001, 60002
+ * 60003, 60004, 60005, 60006.
+ *
+ * This is not a good solution, if you have a
+ * better one please tell me about it!
+ */
+
+ doEscape( oldname );
+ /*
+ * Call here all functions that handle
+ * arguments that are single tokens (&,%,...).
+ * or in [brackets]
+ */
+ text = findBrackets( oldname, text, i );
+ text = findAndProcess( "$", text, oldname );
+ text = findAndProcess( "%", text, oldname.lower() );
+ text = findAndProcess( "&", text, oldname.upper() );
+ text = findAndProcess( "\\", text, oldname.stripWhiteSpace() );
+ text = findStar( oldname, text );
+ text = findNumbers( text, m_files.count(), i );
+ /*
+ * text is used as argument token for plugins!
+ */
+ text = parsePlugins( i, text, TYPE_TOKEN );
+ /*
+ * Replace after Plugins !
+ * Replace shoud be the last the
+ * before re-escaping tokens !
+ */
+ text = findReplace( text );
+
+ // convert special chars back (e.g. &,$)
+ // TODO: this is to early, because
+ // parseSubdirs creates subdirectories
+ // for "/" returned by plugins!!!!
+ // text = unEscape( text );
+
+ return text;
+}
+
+QString BatchRenamer::parsePlugins( int i, const QString& text, int type )
+{
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plug->libs );
+ QString ret = text;
+
+ if( type == TYPE_FINAL_FILE )
+ ret = "";
+
+ for( ; it.current(); ++it )
+ if( (*it)->usePlugin && (*it)->plugin->type() == type )
+ {
+ ret = (*it)->plugin->processFile( this, i, text, type );
+ doEscape( ret );
+ }
+
+ return ret;
+}
+
+void BatchRenamer::createPreview( QListView* list )
+{
+ KMyListViewItem* item1 = NULL;
+ QString tmp;
+
+ m_counters.clear();
+ for( unsigned int i = 0; i < m_files.count(); i++)
+ {
+ m_counter_index = 0;
+
+ if( i && m_reset )
+ findCounterReset( i );
+
+ m_files[i].dst.name = processString( text, m_files[i].src.name, i );
+ if( !extext.isEmpty() )
+ m_files[i].dst.extension = processString( extext, m_files[i].src.extension, i );
+
+ bool modified = applyManualChanges( i );
+
+
+ QString sname = BatchRenamer::buildFilename( &m_files[i].src, false );
+
+ // Let's run the plugins that change the final filename,
+ // i.e the encodingsplugin
+ m_files[i].dst.name = parsePlugins( i, m_files[i].dst.name, TYPE_FINAL_FILENAME );
+ QString dname = BatchRenamer::buildFilename( &m_files[i].dst, false );
+
+ item1 = new KMyListViewItem( modified, list, item1, sname, dname );
+ }
+}
+
+void BatchRenamer::work( ProgressDialog* p )
+{
+ // TODO: use CopyJob here
+
+ FileOperation fop;
+ QFile* fundo ( NULL );
+ QTextStream* tundo ( NULL );
+
+ if( undo ) {
+ // Create header for undo script
+ fundo = new QFile( m_undoScript );
+ if( fundo->open( IO_WriteOnly ) ) {
+ tundo = new QTextStream( fundo );
+ writeUndoScript( tundo );
+ } else {
+ undo = false;
+ p->error( i18n("Can't create undo script :") + fundo->name() );
+ delete fundo;
+ }
+ }
+
+ int error = 0;
+ RenamedList* renamedFiles = new RenamedList[m_files.count()];
+ p->setProgressTotalSteps( m_files.count() + 1 );
+
+ /*
+ * Give the user some information...
+ */
+ if( m_mode == COPY)
+ p->print( QString( i18n("Files will be copied to: %1") ).arg(m_files[0].dst.directory) );
+ else if( m_mode == MOVE )
+ p->print( QString( i18n("Files will be moved to: %1") ).arg(m_files[0].dst.directory) );
+ else if( m_mode == LINK )
+ p->print( QString( i18n("Symbolic links will be created in: %1") ).arg(m_files[0].dst.directory) );
+ else if( m_mode == RENAME )
+ p->print( i18n("Input files will be renamed.") );
+
+ unsigned int i;
+ for( i = 0; i < m_files.count(); i++) {
+ p->setProgress( i+1 );
+
+ if( p->wasCancelled() )
+ break;
+
+ KURL src = m_files[i].src.url;
+ KURL dst = m_files[i].dst.url;
+ dst.setPath( m_files[i].dst.name );
+
+ renamedFiles[i].src = src;
+ renamedFiles[i].dst = dst;
+ renamedFiles[i].dir = m_files[i].dir;
+
+ FileOperation fop;
+ if( !fop.start( src, dst, m_mode, overwrite ) ) {
+ p->error( fop.error() );
+ renamedFiles[i].error = true;
+ error++;
+ continue;
+ } else {
+ renamedFiles[i].error = false;
+ }
+
+ // TODO: overwriting of files!
+ /*
+ * The renamed file should be on its correct location now,
+ * so that we can call the last plugins (e.g. for changing permissions)
+ *
+ * Remember, the token argument is the filename for this type of plugins!
+ *
+ * If the return value is not empty an error has occured!
+ * The plugin should return an error message in this case!
+ */
+
+ QString eplug = parsePlugins( i, QString::null, TYPE_FINAL_FILE );
+ if( !eplug.isEmpty() ) {
+ p->error( eplug );
+ error++;
+ }
+
+ /* Create the undo script now */
+ if( undo )
+ if( dst.isLocalFile() && src.isLocalFile() ) {
+ // Plugins ???
+ (*tundo) << "echo \"" << src.fileName()
+ << " -> " << dst.fileName() << "\"" << endl;
+ (*tundo) << "mv --force -b --suffix=.krename_ \"" << m_files[i].dst.name
+ << "\" \"" << m_files[i].src.name << "\"" << endl;
+ } else
+ p->warning( QString( i18n("Undo is not possible for remote file: %1") ).arg( dst.prettyURL() ) );
+
+ }
+
+ if( !p->wasCancelled() ) {
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plug->libs );
+ for( ; it.current(); ++it ) {
+ if( (*it)->usePlugin )
+ (*it)->plugin->finished();
+ }
+ }
+
+ const QString m = QString( i18n("Renamed %1 files successfully.") ).arg(i-error);
+ ( i - error ) ? p->print( m ) : p->warning( m );
+
+ if( error > 0 )
+ p->warning( QString( i18n("%2 errors occurred!") ).arg(error));
+
+ p->print( QString( i18n("Elapsed time: %1 seconds") ).arg( t.elapsed()/1000 ), "kalarm" );
+ p->print( i18n("KRename finished the renaming process."), "krename" );
+ p->print( i18n("Press close to quit!") );
+ p->setRenamedFiles( renamedFiles, m_files.count() );
+
+ if( undo ) {
+ (*tundo) << endl << "echo \"Finished undoing " << m_files.count() << " actions.\"" << endl;
+ delete tundo;
+ fundo->close();
+
+ // Make fundo exuteable
+ if( chmod( (const char*)m_undoScript, (unsigned int) S_IRUSR | S_IWUSR | S_IXUSR ) )
+ p->error( i18n("Can't set executable bit on undo script.") );
+ delete fundo;
+ }
+
+ p->done( error, i-error, m_mode == MOVE || m_mode == RENAME );
+ m_files.clear();
+ delete this;
+}
+
+void BatchRenamer::escape( QString & text, const QString & token, const QString & sequence )
+{
+ /*
+ * NEVER, ABSOLUTELY NEVER change pos = 0
+ * to pos = -1, it won't work !
+ * This bug took hours to find and was
+ * a serious bug in 1.7.
+ */
+#if QT_VERSION >= 0x030100
+ text.replace( token, sequence );
+#else
+ int pos = 0;
+ do {
+ pos = text.find( token, pos );
+ if( pos >= 0 )
+ text.replace( pos, token.length(), sequence );
+ } while ( pos >= 0 );
+#endif
+}
+
+QString & BatchRenamer::doEscape( QString & text, bool filename )
+{
+ if( filename ) {
+ BatchRenamer::escape( text, "&", QChar( 60000 ) );
+ BatchRenamer::escape( text, "$", QChar( 60001 ) );
+ BatchRenamer::escape( text, "%", QChar( 60002 ) );
+ BatchRenamer::escape( text, "#", QChar( 60004 ) );
+ BatchRenamer::escape( text, "[", QChar( 60005 ) );
+ BatchRenamer::escape( text, "]", QChar( 60006 ) );
+ BatchRenamer::escape( text, "\\", QChar( 60007 ) );
+ BatchRenamer::escape( text, "/", QChar( 60008 ) );
+ BatchRenamer::escape( text, "{", QChar( 60009 ) );
+ BatchRenamer::escape( text, "}", QChar( 60010 ) );
+ BatchRenamer::escape( text, "*", QChar( 60011 ) );
+ } else {
+ BatchRenamer::escape( text, "\\&", QChar( 60000 ) );
+ BatchRenamer::escape( text, "\\$", QChar( 60001 ) );
+ BatchRenamer::escape( text, "\\%", QChar( 60002 ) );
+ BatchRenamer::escape( text, "\\#", QChar( 60004 ) );
+ BatchRenamer::escape( text, "\\[", QChar( 60005 ) );
+ BatchRenamer::escape( text, "\\]", QChar( 60006 ) );
+ BatchRenamer::escape( text, "\\\\", QChar( 60007 ) );
+ BatchRenamer::escape( text, "\\/", QChar( 60008 ) );
+ BatchRenamer::escape( text, "\\{", QChar( 60009 ) );
+ BatchRenamer::escape( text, "\\}", QChar( 60010 ) );
+ BatchRenamer::escape( text, "\\*", QChar( 60011 ) );
+ }
+
+ return text;
+}
+
+QString & BatchRenamer::unEscape( QString & text )
+{
+ BatchRenamer::escape( text, QChar( 60000 ), "&" );
+ BatchRenamer::escape( text, QChar( 60001 ), "$" );
+ BatchRenamer::escape( text, QChar( 60002 ), "%" );
+ BatchRenamer::escape( text, QChar( 60004 ), "#" );
+ BatchRenamer::escape( text, QChar( 60005 ), "[" );
+ BatchRenamer::escape( text, QChar( 60006 ), "]" );
+ BatchRenamer::escape( text, QChar( 60007 ), "\\" );
+ // %252f == /, it seems that filenames on unix cannot contain
+ // a /. So I use %252f, at least konqui displays it correctly
+ // this was needed, so that plugins that return a slash do not cause errors
+ BatchRenamer::escape( text, QChar( 60008 ), "%2f" );
+ BatchRenamer::escape( text, QChar( 60009 ), "{" );
+ BatchRenamer::escape( text, QChar( 60010 ), "}" );
+ BatchRenamer::escape( text, QChar( 60011 ), "*" );
+
+ return text;
+}
+
+int BatchRenamer::getCharacters( int n )
+{
+ QString s;
+ s.sprintf( "%i", n );
+ return s.length();
+}
+
+QString BatchRenamer::findAndProcess( const QString & token, QString text, const QString & replace )
+{
+ /*
+ * pos can here be -1 because
+ * findRev is called with it as a
+ * value !
+ */
+#if QT_VERSION >= 0x030100
+ text.replace( token, replace );
+#else
+ int pos = -1;
+ do {
+ pos = text.findRev( token, pos );
+ if( pos >= 0 )
+ text.replace( pos, token.length(), replace );
+ } while( pos >= 0 );
+#endif
+ return text;
+}
+
+QString BatchRenamer::findNumbers( QString text, int count, int i )
+{
+ // Rewritten in Version 0.8
+ // Added numbers skipping in 1.3
+ // Changed again in Version 1.8 to optimize it and fix a bug with skipping numbers
+ int pos = 0, counter = 1;
+ tCounterValues countervalues;
+ countervalues.start = m_index;
+ countervalues.step = m_step;
+
+ if( text.contains( "#", FALSE ) <= 0 )
+ return text;
+
+ pos = text.find("#", pos);
+ pos++;
+ while( text[pos] == '#' ) {
+ text.remove(pos, 1);
+ counter++;
+ }
+
+ findNumberAppendix( text, pos, &countervalues.start, &countervalues.step );
+
+ pos = text.find("#", 0);
+
+ if( (signed int)m_counters.count() <= m_counter_index )
+ {
+ countervalues.value = countervalues.start - countervalues.step;
+ // other wise the counter would start at:
+ // start + step instead of start
+ m_counters.append( countervalues );
+ }
+
+ do {
+ m_counters[m_counter_index].value += m_counters[m_counter_index].step;
+ } while( m_skip.contains( m_counters[m_counter_index].value ) );
+
+ /*
+ int v = start + (i*step) + m_skip_add[m_counter_index];
+ for( unsigned int z = 0; z < m_skip.count(); z++ ) {
+ if( m_skip[z] == v ) {
+ m_skip_add[m_counter_index] += step;
+ v += step;
+ }
+ }
+ */
+
+ QString temp;
+ temp.sprintf("%0*i", counter, m_counters[m_counter_index].value );
+ text.replace( pos, 1, temp);
+
+ ++m_counter_index;
+ return findNumbers( text, count, i );
+}
+
+void BatchRenamer::findNumberAppendix( QString & text, int pos, int* start, int* step )
+{
+ QString appendix = QString::null;
+ int tmp = 0;
+ int end = 0;
+ bool ok = false;
+
+ if( text[pos] == '{' && (end = text.find( "}", pos )) > -1)
+ {
+ //qDebug("Found an appendix:" + appendix );
+ appendix = text.mid( pos + 1, end - pos - 1);
+ text.remove( pos, end - pos + 1 );
+
+ tmp = appendix.section( ';', 0, 0 ).toInt( &ok ); // first section = start index
+ if( ok )
+ *start = tmp;
+
+ tmp = appendix.section( ';', 1, 1 ).toInt( &ok ); // second section = stepping
+ if( ok )
+ *step = tmp;
+ }
+}
+
+QString BatchRenamer::findStar( const QString & oldname, QString text )
+{
+ int pos = -1;
+ do {
+ pos = text.findRev("*", pos);
+ if( pos >= 0 ) {
+ QString tmp = oldname.lower();
+ if( tmp[0].isLetter() )
+ tmp[0] = tmp[0].upper();
+
+ for( unsigned int i = 0; i < tmp.length(); i++ )
+ if( tmp[i+1].isLetter() && !tmp[i].isLetter() &&
+ tmp[i] != '\'' && tmp[i] != '?' && tmp[i] != '`' )
+ tmp[i+1] = tmp[i+1].upper();
+
+ text.replace( pos, 1, tmp);
+ }
+ } while( pos >= 0 );
+ return text;
+}
+
+QString BatchRenamer::findBrackets( QString oldname, QString text, int i )
+{
+ /*
+ * looks for a statement in brackets [ ]
+ * and calls findToken() with this statement.
+ */
+
+ int num, pos = -1, a;
+ QString token;
+
+ if( text.contains("]", FALSE) <= 0 || text.isEmpty() )
+ return text;
+
+ num = text.contains("[", FALSE);
+ if(num <= 0 )
+ return text;
+
+ pos = text.findRev("[", pos);
+ a = text.find("]", pos );
+ if( a < 0 && pos >= 0 )
+ return text;
+
+ if( pos < 0 && a >= 0 )
+ return text;
+
+ if( pos >= 0 && a >= 0 ) {
+ token = text.mid( pos+1, (a-pos)-1 );
+
+ // support [4-[length]]
+ token = findBrackets( oldname, token, i );
+
+ text.remove( pos, (a-pos)+1 );
+ text.insert( pos, findToken( oldname, token, i ));
+ }
+ return findBrackets( oldname, text, i );
+}
+
+QString BatchRenamer::processToken( QString token, QString oldname, int i )
+{
+ QString tmp;
+
+ /*
+ * Call here all functions that handle
+ * arguments in brackets.
+ */
+ tmp = findPartStrings( oldname, token );
+ if( !tmp.isEmpty() )
+ return tmp;
+
+ tmp = findDirName( token, m_files[i].src.directory );
+ if( !tmp.isEmpty() )
+ return tmp;
+
+ tmp = findLength( token, m_files[i].src.name );
+ if( !tmp.isEmpty() )
+ return tmp;
+
+ Plugin* p = plug->findPlugin( token );
+ if( p )
+ {
+ tmp = p->processFile( this, i, token, TYPE_BRACKET );
+ if( !tmp.isNull() )
+ {
+ doEscape( tmp );
+ return tmp;
+ }
+ }
+
+ /*
+ * Maybe I should remove this!
+ * Krename simply ignores unknown tokens!
+ * Usefull for the MP3 Plugin!
+ */
+ return QString::null;
+}
+
+QString BatchRenamer::findToken( QString oldname, QString token, int i )
+{
+ enum conversion { LOWER, UPPER, MIXED, STAR, STRIP, NONE, EMPTY, NUMBER };
+ unsigned int numwidth = 0;
+
+ conversion c = EMPTY;
+ if( !token.left(1).compare("$") )
+ c = NONE;
+ else if( !token.left(1).compare("%") )
+ c = LOWER;
+ else if( !token.left(1).compare("&") )
+ c = UPPER;
+ else if( !token.left(1).compare("") )
+ c = MIXED;
+ else if( !token.left(1).compare("*") )
+ c = STAR;
+ else if( !token.left(1).compare("\\") )
+ c = STRIP;
+ else if( !token.left(1).compare("#") ) {
+ while( !token.left(1).compare("#") ) {
+ token.remove( 0, 1 );
+ ++numwidth;
+ }
+
+ c = NUMBER;
+ }
+
+ if( c != EMPTY && c != NUMBER )
+ token.remove( 0, 1 );
+
+ QString save = token;
+ token = processToken( token, oldname, i );
+
+ switch( c ) {
+ case LOWER:
+ token = token.lower();
+ break;
+ case UPPER:
+ token = token.upper();
+ break;
+ case MIXED:
+ token = token.lower();
+ token.replace( 0, 1, token[0].upper());
+ break;
+ case STAR:
+ token = findStar( token, "*" );
+ break;
+ case STRIP:
+ token = token.stripWhiteSpace();
+ break;
+ case NUMBER:
+ {
+ bool b = false;
+ int n = token.toInt( &b );
+ if( b )
+ token = token.sprintf("%0*i", numwidth, n );
+ }
+ break;
+ default:
+ break;
+ }
+
+ doEscape( token );
+ return token;
+}
+
+QString BatchRenamer::findPartStrings( QString oldname, QString token )
+{
+ QString first, second;
+ int pos = -1;
+
+ // parse things like [2;4{[dirname]}]
+ if( token.contains( "{" ) >= 1 && token.contains( "}" ) >= 1 ) {
+ int pos = token.find( "{" );
+ oldname = token.mid( pos + 1, token.findRev( "}" ) - pos - 1 );
+ token = token.left( pos );
+ }
+
+ if( token.contains("-") ) {
+ pos = token.find( "-", 0 );
+ first = token.left( pos );
+ // ------- Code OK ^ !
+
+ second = token.mid( pos+1, token.length() );
+
+ // version < 1.7
+ // return oldname.mid( first.toInt()-1, second.toInt()-first.toInt() +1 );
+ // version > 1.7
+ //return oldname.mid( first.toInt()-1, second.toInt()-first.toInt() );
+ // version > 1.8
+
+ bool ok;
+ int sec = second.toInt( &ok );
+ if( !ok || sec == 0 )
+ sec = oldname.length();
+
+ /*
+ * x should not be larger than the old name
+ * and not smaller than zero.
+ */
+ int x = sec-first.toInt();
+ if( x > (signed int)oldname.length() || x < 0 )
+ x = oldname.length()-first.toInt();
+
+ /*
+ * if I would comment my code I would understand this line :)
+ * without this line, there is sometimes the last letter
+ * of a filename missing.
+ */
+ if( x != -1 )
+ x++;
+
+ return oldname.mid( first.toInt()-1, x );
+ } else if( token.contains(";") ) {
+ pos = token.find( ";", 0 );
+
+ first = token.left( pos );
+ second = token.mid( pos+1, token.length() );
+
+ return oldname.mid( first.toInt()-1, second.toInt() );
+ } else {
+ bool ok = false;
+ int number = token.toInt( &ok );
+
+ if( ok && (number <= (signed int)oldname.length() && number > 0 ) )
+ return QString(oldname[ number -1 ]);
+ else
+ return QString::null;
+ }
+}
+
+QString BatchRenamer::findDirName( QString token, QString path )
+{
+ if( token.left( 7 ).lower() == "dirname" ) {
+ if( path.right( 1 ) == "/" )
+ path = path.left( path.length() - 1);
+
+ int recursion = 1;
+ if( token.length() > 7 ) {
+ token = token.right( token.length() - 7 );
+ recursion = token.contains( "." );
+ if( recursion != (signed int)token.length() )
+ return QString::null;
+
+ recursion++;
+ }
+
+ return path.section( "/", recursion * -1, recursion * -1);
+ }
+
+ return QString::null;
+}
+
+QString BatchRenamer::findLength( const QString & token, const QString & name )
+{
+ if( token.lower().startsWith( "length" ) ) {
+ int minus = 0;
+ if( token[6] == '-' ) {
+ bool n = false;
+ minus = token.mid( 7, token.length() - 7 ).toInt( &n );
+ if( !n )
+ minus = 0;
+ }
+
+ return QString::number( name.length() - minus );
+ }
+
+ return QString::null;
+}
+
+QString BatchRenamer::findReplace( QString text )
+{
+ // Call for each element in replace strings doReplace with correct values
+ for( unsigned int i = 0; i < m_replace.count(); i++ ) {
+ replacestrings s = m_replace[i];
+ text = doReplace( text, unEscape( s.find ), s.replace, s.reg );
+ }
+
+ return text;
+}
+
+QString BatchRenamer::doReplace( QString text, QString find, QString replace, bool reg )
+{
+ if( !reg )
+ {
+#if QT_VERSION >= 0x030100
+ // we use the escaped text here because the user might want
+ // to find a "&" and replace it
+ text.replace( doEscape( find ), replace );
+#else
+ int pos = 0;
+ QString f = doEscape( find );
+ do {
+
+ pos = text.find( f, pos );
+ if( pos >= 0 ) {
+ text.replace( pos, f.length(), replace );
+ pos += replace.length();
+ }
+ } while( pos >= 0 );
+#endif
+ }
+ else
+ {
+#if QT_VERSION >= 0x030100
+ // no doEscape() here for the regexp, because it would destroy our regular expression
+ // other wise we will not find stuff like $, [ in the text
+ text = doEscape( unEscape( text ).replace( QRegExp( find ), replace ) );
+#else
+ // Test this code more!
+ pos = 0;
+ do {
+ QRegExp exp( find );
+ pos = exp.search( text, pos );
+ if( pos >= 0 ) {
+ text = doEscape( unEscape( text ).replace( pos, exp.matchedLength(), replace ) );
+ pos += replace.length();
+ }
+ } while( pos >= 0 );
+#endif
+ }
+ return text;
+}
+
+void BatchRenamer::writeUndoScript( QTextStream* t )
+{
+ // write header comments
+ (*t) << "#!/bin/bash" << endl
+ << "# KRename Undo Script" << endl << "#" << endl
+ << "# KRename was written by:" << endl
+ << "# Dominik Seichter <domseichter@web.de>" << endl
+ << "# http://krename.sourceforge.net" << endl << "#" << endl
+ << "# Script generated by KRename Version: " << VERSION << endl << endl
+ << "# This script must be started with the option --krename to work!" << endl;
+
+ // write functions:
+ (*t) << "echo \"KRename Undo Script\"" << endl
+ << "echo \"http://krename.sourceforge.net\"" << endl
+ << "echo \"\"" << endl;
+
+ (*t) << "if test --krename = $1 ; then" << endl
+ << " echo \"\"" << endl
+ << "else" << endl
+ << " echo \"You have to start this script\"" << endl
+ << " echo \"with the command line option\"" << endl
+ << " echo \"--krename\"" << endl
+ << " echo \"to undo a rename operation.\"" << endl
+ << " exit" << endl
+ << "fi" << endl;
+}
+
+void BatchRenamer::parseSubdirs( data* f )
+{
+ int pos = 0;
+ if( (pos = f->dst.name.findRev( "/", -1 ) ) > 0 ) {
+ QString dirs = f->dst.name.left( pos );
+ f->dst.name = f->dst.name.right( f->dst.name.length() - pos - 1 );
+ f->dst.directory += ( f->dst.directory.right( 1 ) == "/" ) ? "" : "/";
+
+ // create the missing subdir now
+ int i = 0;
+ QString d = "";
+ while( (d = dirs.section( "/", i, i, QString::SectionSkipEmpty )) && ! d.isEmpty() ) { // asignment here!
+ KURL url = f->dst.url;
+ // it is important to unescape here
+ // to support dirnames containing "&" or
+ // similar tokens
+ url.addPath( unEscape( d ) );
+ if( !NetAccess::exists( url ) && !NetAccess::mkdir( url ) )
+ // TODO: GUI bug report
+ qDebug("Can't create %s", url.prettyURL().latin1() );
+
+ f->dst.url.addPath( d );
+ f->dst.directory.append( d + "/" );
+ i++;
+ }
+ }
+}
+
+QString BatchRenamer::buildFilename( fileentry* entry, bool dir )
+{
+ QString filename = ( dir ? entry->directory : QString::null ) + entry->name + ( entry->extension.isEmpty() ? QString::null : QString(".") ) + entry->extension;
+ // unescape here as filename is still escaped
+ unEscape( filename );
+ return filename;
+}
+
+bool BatchRenamer::applyManualChanges( int i )
+{
+ /*
+ * The last step: make changes of
+ * the user visible
+ */
+
+ if( !m_changes.isEmpty() )
+ for( unsigned int z = 0; z < m_changes.count(); z++ ) {
+ KURL file = m_changes[z].url;
+ if( file == m_files[i].src.url ) {
+ m_files[i].dst.name = m_changes[z].user;
+ // the file extension is already included
+ // in the users name
+ m_files[i].dst.extension = QString::null;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void BatchRenamer::findCounterReset( int i )
+{
+ int z;
+ if( m_files[i-1].src.directory != m_files[i].src.directory )
+ for( z=0;z<(int)m_counters.count();z++ )
+ {
+ m_counters[z].value = m_counters[z].start - m_counters[z].step;
+ }
+}
+
+
diff --git a/krename/batchrenamer.h b/krename/batchrenamer.h
new file mode 100644
index 0000000..1eae7c6
--- /dev/null
+++ b/krename/batchrenamer.h
@@ -0,0 +1,188 @@
+/***************************************************************************
+ batchrenamer.h - description
+ -------------------
+ begin : Sat Aug 18 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef BATCHRENAMER_H
+#define BATCHRENAMER_H
+
+#include <qdatetime.h>
+#include <qvaluelist.h>
+#include <kurl.h>
+
+class QFile;
+class QProgressDialog;
+class QString;
+
+/* How many diferrent users and groups
+ * KRename supports. Values over 1000
+ * make KRename slow, but it may be
+ * necessary on bigger systems to
+ * increase this value.
+ * MAXENTRIES must be < sizeof(int)
+ */
+#define MAXENTRIES 1000
+
+/* May Value for SpinBoxes
+ *
+ */
+#define SPINMAX 100000
+
+enum {
+ COPY, MOVE, RENAME, PREVIEW, LINK
+};
+
+typedef struct fileentry {
+ QString name; // filename
+ QString directory; // directory
+ QString extension; // extension
+
+ KURL url;
+};
+
+typedef struct data {
+ fileentry src;
+ fileentry dst;
+
+ bool dir;
+};
+
+/*
+ * Changes made by hand by the user
+ * in the preview list view are
+ * stored here.
+ */
+typedef struct manualchanges {
+ KURL url; // input filename
+ QString user; // name the user wants
+};
+
+typedef struct replacestrings {
+ QString find; // Text to replace
+ QString replace; // Replace with
+ bool reg; // is it a reg expression ?
+};
+
+typedef struct tCounterValues {
+ int value; // current value of this counter
+ int start; // start value of this counter (for findResetCounter)
+ int step; // stepping value of this counter;
+};
+
+/**
+ *@author Dominik Seichter
+ */
+
+class QObject;
+class QListView;
+class ProgressDialog;
+class PluginLoader;
+class BatchRenamer {
+ public:
+ BatchRenamer();
+ ~BatchRenamer();
+ void processFiles( ProgressDialog* p, QObject* object );
+ void createPreview( QListView* list );
+
+ inline void setText( const QString & t ) { text = t; doEscape( text, false ); }
+ inline void setExText( const QString & t ) { extext = t; }
+ inline void setDirname( const KURL & url ) { dirname = url; }
+ inline void setUndoScript( const QString & t ) { m_undoScript = t; }
+ inline void setUndo( bool b ) { undo = b; }
+ inline void setOverwrite( bool b ) { overwrite = b; }
+ inline void setIndex( int i ) { m_index = i; }
+ inline void setStep( int s ) { m_step = s; }
+ inline void setResetCounter( bool r ) { m_reset = r; }
+ inline void setSkipList( const QValueList<int> & s ) { m_skip = s; }
+ inline void setReplaceList( const QValueList<replacestrings> & r ) { m_replace = r; }
+
+ inline void setFiles( const QValueList<data> & f ) { m_files = f; } //TODO: use a pointer for more speed
+ inline QValueList<data> files() const { return m_files; }
+ inline void setChanges( const QValueList<manualchanges> & m ) { m_changes = m; }
+
+ inline void setMode( int m) { m_mode = m; }
+ inline int mode() const { return m_mode; }
+
+ // Since 2.1 public, because plugins may want to access them to:
+ QString findAndProcess( const QString & token, QString text, const QString & replace );
+
+ QString findNumbers( QString text, int count, int i );
+ QString findStar( const QString & oldname, QString text );
+ QString findBrackets( QString oldname, QString text, int i );
+ QString findToken( QString oldname, QString token, int i );
+ QString processToken( QString token, QString oldname, int i );
+ QString findPartStrings( QString oldname, QString token );
+ static QString findDirName( QString token, QString path );
+ QString findLength( const QString & token, const QString & name );
+ QString findReplace( QString text ); // text is here already the new filename !
+ QString doReplace( QString text, QString find, QString replace, bool reg ); // text is here already the new filename !
+
+ QString processString( QString text, QString oldname, int i );
+
+ static QString & doEscape( QString & text, bool filename = true );
+ static QString & unEscape( QString & text );
+ static void escape( QString & text, const QString & token, const QString & sequence );
+
+ static QString buildFilename( fileentry* entry, bool dir = true );
+
+ private:
+ /**
+ * Returns the length of the string when int n is converted to
+ * a string.
+ * @param n a number whose length as string is needed
+ * @returns stringlength of n converted to a string
+ */
+ int getCharacters( int n ) ;
+
+ void work( ProgressDialog* p );
+ void writeUndoScript( QTextStream* t );
+ void parseSubdirs( data* f );
+ void findNumberAppendix( QString & text, int pos, int* start, int* step );
+ /** resets all counters to there start value if the directory name at @p i
+ * in m_files changes.
+ * The caller has to check m_reset before calling this function.
+ */
+ void findCounterReset( int i );
+ QString parsePlugins( int i, const QString & text, int type );
+ bool applyManualChanges( int i );
+
+ QString text; // template
+ KURL dirname; // destination dir
+ QString extext; // Extension template
+ QString m_undoScript; // Filename of undoscript
+ bool undo; // create an undo script
+ int m_index; // index for numbers
+ int m_step; // step for numbers
+ bool m_reset; // reset counter on new directories
+ bool overwrite; // overwrite existing files
+ int m_mode; // renaming mode
+ QValueList<int> m_skip; // Numbers to skip
+ QValueList<replacestrings> m_replace; // Replace strings
+ QValueList<data> m_files;
+ QValueList<manualchanges> m_changes; // User made changes
+ PluginLoader* plug;
+
+ // a is used in find number and
+ // required for skipping.
+ int m_counter_index;
+ QValueList<tCounterValues> m_counters;
+
+ protected:
+ QFile* f;
+ QTime t;
+ QProgressDialog* progress;
+};
+
+#endif
diff --git a/krename/commandplugin.cpp b/krename/commandplugin.cpp
new file mode 100644
index 0000000..d413cec
--- /dev/null
+++ b/krename/commandplugin.cpp
@@ -0,0 +1,200 @@
+/***************************************************************************
+ commandplugin.cpp - description
+ -------------------
+ begin : Son Jan 5 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "commandplugin.h"
+
+// QT includes
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kconfig.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <klineedit.h>
+#include <klistbox.h>
+#include <kmessagebox.h>
+#include <kpushbutton.h>
+#include <kprocess.h>
+
+const QString CommandPlugin::getName() const
+{
+ return i18n("Command Plugin");
+}
+
+const QString CommandPlugin::getAccelName() const
+{
+ return i18n("&Command Plugin");
+}
+
+const int CommandPlugin::type() const
+{
+ return TYPE_FINAL_FILE;
+}
+
+bool CommandPlugin::checkError()
+{
+ if( commandline->text().isEmpty() ) {
+ KMessageBox::error( 0, i18n("You did not specify a command to execute.") );
+ return false;
+ }
+
+ return true;
+}
+
+void CommandPlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ m_widget = w;
+
+ QHBoxLayout* hb = new QHBoxLayout( 0, 0, 6 );
+ QVBoxLayout* vb = new QVBoxLayout( 0, 0, 6 );
+
+ QLabel* la = new QLabel( w );
+ la->setText( i18n("<b>Command Plugin</b>") );
+ l->addWidget( la );
+
+ la = new QLabel( w );
+ la->setText( i18n( "<qt>Executes a shell command on every file after it has been renamed. "
+ "Add %1 to the command line arguments to get the filename of the renamed file.</qt>") );
+ l->addWidget( la );
+ l->addWidget( new QLabel( i18n("Command:"), w ) );
+
+ commandline = new KLineEdit( w );
+ l->addWidget( commandline );
+
+ checkNoBlock = new QCheckBox( i18n("&Execute without blocking (not recommended)"), w );
+ l->addWidget( checkNoBlock );
+
+ buttonAdd = new KPushButton( i18n("&Add"), w );
+ buttonRemove = new KPushButton( i18n("&Remove"), w );
+ hb->addWidget( buttonAdd );
+ hb->addWidget( buttonRemove );
+
+ vb->addLayout( hb );
+
+ list = new KListBox( w );
+ vb->addWidget( list );
+ vb->setStretchFactor( list, 2 );
+ l->addLayout( vb );
+
+ connect( buttonAdd, SIGNAL( clicked() ), this, SLOT( add() ) );
+ connect( buttonRemove, SIGNAL( clicked() ), this, SLOT( remove() ) );
+ connect( list, SIGNAL( executed( QListBoxItem* ) ), this, SLOT( exec() ) );
+
+ KConfig* conf = kapp->config();
+ conf->setGroup("CommandPlugin");
+ list->insertStringList( conf->readListEntry("commandlines" ) );
+
+ QStringList examples;
+ examples.append( "chmod 0444 %1" );
+ examples.append( "convert %1 %1.png" );
+ examples.append( "echo %1 >> $HOME/file.list" );
+// examples.append( ")
+ for( unsigned int i = 0; i < examples.count(); i++ )
+ if( !list->findItem( examples[i] ) )
+ list->insertItem( examples[i] );
+}
+
+void CommandPlugin::fillStructure()
+{
+ command = commandline->text();
+ noblock = checkNoBlock->isChecked();
+}
+
+QString CommandPlugin::processFile( BatchRenamer* b, int i, QString, int )
+{
+ QString filename = b->files()[i].dst.name;
+
+
+ QString c = command;
+
+ KShellProcess proc;
+#if QT_VERSION >= 0x030100
+ c = c.replace( "%1", KShellProcess::quote( filename ) );
+#else
+ int pos = 0;
+ do {
+ pos = c.find( "%1", pos );
+ if( pos >= 0 )
+ c.replace( pos, 2, KShellProcess::quote( filename ) );
+ } while ( pos >= 0 );
+#endif
+
+ proc << c;
+
+ if( noblock )
+ proc.start( KProcess::DontCare, KProcess::NoCommunication );
+ else
+ proc.start( KProcess::Block, KProcess::NoCommunication );
+
+ proc.resume();
+
+ if( !noblock && proc.exitStatus() )
+ return command.arg( filename ) + QString( i18n(" exited with error: %1") ).arg( proc.exitStatus() );
+
+ return QString::null;
+}
+
+void CommandPlugin::finished()
+{
+ KConfig* conf = kapp->config();
+ conf->setGroup("CommandPlugin");
+ QStringList slist;
+ for( unsigned int i = 0; i < list->count(); i++ )
+ slist.append( list->text( i ) );
+
+ conf->writeEntry("commandlines", slist );
+ conf->sync();
+ return;
+}
+
+void CommandPlugin::add()
+{
+ if( !commandline->text().isEmpty() ) {
+ for( unsigned int i = 0; i < list->count(); i++ )
+ if( list->text( i ) == commandline->text() )
+ return;
+
+ list->insertItem( commandline->text() );
+ }
+}
+
+void CommandPlugin::remove()
+{
+ unsigned int i = 0;
+ do {
+ if(list->isSelected( i ))
+ list->removeItem( i );
+ else
+ i++;
+ } while( i < list->count() );
+}
+
+void CommandPlugin::exec()
+{
+ for( unsigned int i = 0; i < list->count(); i++ )
+ if( list->isSelected( i ) )
+ commandline->setText( list->text( i ) );
+}
+
+const QPixmap CommandPlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "konsole", KIcon::Small );
+}
+
diff --git a/krename/commandplugin.h b/krename/commandplugin.h
new file mode 100644
index 0000000..61edaee
--- /dev/null
+++ b/krename/commandplugin.h
@@ -0,0 +1,62 @@
+/***************************************************************************
+ commandplugin.h - description
+ -------------------
+ begin : Son Jan 5 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef COMMANDPLUGIN_H
+#define COMMANDPLUGIN_H
+
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "plugin.h"
+#include "helpdialog.h"
+
+class QCheckBox;
+class KLineEdit;
+class KListBox;
+class KPushButton;
+class CommandPlugin : public Plugin {
+ Q_OBJECT
+ public:
+ const QString getName() const;
+ const QString getAccelName() const;
+ const int type() const;
+
+ bool checkError();
+ void drawInterface( QWidget* w, QVBoxLayout* l );
+ void fillStructure();
+ QString processFile( BatchRenamer*, int, QString token, int );
+ void finished();
+
+ bool alwaysUsed() const { return false; }
+ const QPixmap getIcon() const;
+
+ private slots:
+ void add();
+ void remove();
+ void exec();
+
+ private:
+ KLineEdit* commandline;
+ QCheckBox* checkNoBlock;
+ KListBox* list;
+ KPushButton* buttonAdd;
+ KPushButton* buttonRemove;
+
+ QString command;
+ bool noblock;
+};
+
+#endif
diff --git a/krename/confdialog.cpp b/krename/confdialog.cpp
new file mode 100644
index 0000000..eb03c3d
--- /dev/null
+++ b/krename/confdialog.cpp
@@ -0,0 +1,109 @@
+/***************************************************************************
+ confdialog.cpp - description
+ -------------------
+ begin : Sun Jan 27 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// Own includes
+#include "confdialog.h"
+
+// QT includes
+#include <qbuttongroup.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qradiobutton.h>
+#include <qtooltip.h>
+
+// KDE includes
+#include <kiconloader.h>
+#include <klocale.h>
+
+ConfDialog::ConfDialog( QWidget* parent, const char* name )
+ : KDialogBase( KDialogBase::IconList, "KRename",
+ KDialogBase::Ok | KDialogBase::Cancel | KDialogBase::Default, KDialogBase::Ok, parent, name, true, true ),
+ GUIModeSelector()
+{
+ setupTab1();
+ setupTab2();
+
+ connect( this, SIGNAL( defaultClicked() ), this, SLOT( defaults() ) );
+}
+
+ConfDialog::~ConfDialog()
+{
+}
+
+void ConfDialog::setupTab1()
+{
+ const QString caption = i18n("Look and Feel");
+ QFrame* box = addPage( caption, caption, BarIcon("looknfeel") );
+ QVBoxLayout* layout = new QVBoxLayout( box );
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ QButtonGroup* group = new QButtonGroup( box );
+ group->setColumnLayout(0, Qt::Vertical );
+ QVBoxLayout* lgroup = new QVBoxLayout( group->layout() );
+
+ optionWizard = new QRadioButton( group );
+ optionWizard->setText( i18n("Use &wizard style GUI (beginners)") );
+ optionTabs = new QRadioButton( group );
+ optionTabs->setText( i18n("Use &tabbed GUI (advanced users)") );
+
+ lgroup->addWidget( new QLabel( i18n("Configure the look and feel of the KRename GUI:<br>"), group ) );
+ lgroup->addWidget( optionWizard );
+ lgroup->addWidget( optionTabs );
+ lgroup->addItem( spacer );
+
+ layout->addWidget( group );
+ layout->addItem( spacer );
+}
+
+void ConfDialog::setupTab2()
+{
+ const QString caption = i18n("KRename");
+ QFrame* box = addPage( caption, caption, BarIcon("krename") );
+ QVBoxLayout* layout = new QVBoxLayout( box );
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ checkPlugins = new QCheckBox( i18n("&Load file plugins on start"), box );
+ checkAutosize = new QCheckBox( i18n("Auto &resize columns in preview"), box );
+
+ spinSize = new KIntNumInput( box );
+ spinSize->setRange( 20, 500, 1, false );
+ spinSize->setLabel( i18n( "&Thumbnail size:" ), AlignLeft | AlignVCenter );
+
+ spinHistory = new KIntNumInput( box );
+ spinHistory->setRange( 2, 500, 1, false );
+ spinHistory->setLabel( i18n( "&Number of template history items:" ), AlignLeft | AlignVCenter );
+
+ layout->addWidget( checkPlugins );
+ layout->addWidget( checkAutosize );
+ layout->addItem( spacer );
+ layout->addWidget( spinSize );
+ layout->addWidget( spinHistory );
+ layout->addItem( spacer );
+
+ QToolTip::add( checkPlugins, i18n("Disabling this option decreases KRename's startup time, because no KFilePlugins are loaded.") );
+}
+
+void ConfDialog::defaults()
+{
+ checkPlugins->setChecked( true );
+ checkAutosize->setChecked( false );
+
+ optionWizard->setChecked( true );
+
+ spinSize->setValue( 80 );
+}
+
diff --git a/krename/confdialog.h b/krename/confdialog.h
new file mode 100644
index 0000000..06c7425
--- /dev/null
+++ b/krename/confdialog.h
@@ -0,0 +1,66 @@
+/***************************************************************************
+ confdialog.h - description
+ -------------------
+ begin : Sun Jan 27 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef CONFDIALOG_H
+#define CONFDIALOG_H
+
+// QT includes
+#include <qcheckbox.h>
+
+// KDE includes
+#include <kdialogbase.h>
+#include <knuminput.h>
+
+#include "guimodeselector.h"
+
+class QHBoxLayout;
+class QVBoxLayout;
+class QWidget;
+class KIntNumInput;
+class ConfDialog : public KDialogBase, public GUIModeSelector {
+ Q_OBJECT
+ public:
+ ConfDialog( QWidget* parent = 0, const char* name = 0 );
+ ~ConfDialog();
+
+ inline bool loadplugins() const { return checkPlugins->isChecked(); }
+ inline int thumbSize() const { return spinSize->value(); }
+ inline bool autosize() const { return checkAutosize->isChecked(); }
+ inline int historyItems() const { return spinHistory->value(); }
+
+ inline void setLoadPlugins( bool b ) { checkPlugins->setChecked( b ); }
+ inline void setThumbSize( int b ) { spinSize->setValue( b ); }
+ inline void setAutosize( bool b ) { checkAutosize->setChecked( b ); }
+ inline void setHistoryItems( int b ) { spinHistory->setValue( b ); }
+
+ private slots:
+ void defaults();
+
+ private:
+ void setupTab1();
+ void setupTab2();
+
+ protected:
+ QCheckBox* checkAsk;
+ QCheckBox* checkPlugins;
+ QCheckBox* checkAutosize;
+
+ KIntNumInput* spinSize;
+ KIntNumInput* spinHistory;
+};
+
+#endif
diff --git a/krename/coorddialog.cpp b/krename/coorddialog.cpp
new file mode 100644
index 0000000..f67062d
--- /dev/null
+++ b/krename/coorddialog.cpp
@@ -0,0 +1,142 @@
+/***************************************************************************
+ coorddialog.cpp - description
+ -------------------
+ begin : Die Feb 4 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "coorddialog.h"
+
+// Qt includes
+#include <qcheckbox.h>
+#include <qfontmetrics.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qvalidator.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <klocale.h>
+
+DSLineEdit::DSLineEdit( QWidget* parent, const char* name )
+ : KLineEdit( parent, name )
+{
+}
+
+void DSLineEdit::keyPressEvent( QKeyEvent* e )
+{
+ KLineEdit::keyPressEvent( e );
+ emit changed();
+}
+
+void DSLineEdit::mousePressEvent( QMouseEvent* e )
+{
+ KLineEdit::mousePressEvent( e );
+ emit changed();
+}
+
+bool CoordDialog::m_inversion = false;
+
+CoordDialog::CoordDialog( const QString & file, QWidget *_parent, const char *name )
+ : KDialogBase( KDialogBase::Plain, "KRename",
+ KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, _parent, name, true, true ), m_file( file )
+{
+ QFrame* parent = plainPage();
+ QVBoxLayout* layout = new QVBoxLayout( parent );
+
+ filename = new DSLineEdit( parent );
+ filename->setText( file );
+ filename->setValidator( new QRegExpValidator( QRegExp( file ), this ) );
+
+ preview = new QLabel( parent );
+
+ checkInvert = new QCheckBox( i18n("&Invert selection"), plainPage() );
+ checkInvert->setChecked( m_inversion );
+
+ layout->addWidget( new QLabel( i18n("Please select the text you want to insert:"), plainPage() ) );
+ layout->addWidget( filename );
+ layout->addWidget( checkInvert );
+ layout->addWidget( preview );
+
+ updateCommand();
+ connect( filename, SIGNAL( selectionChanged() ), this, SLOT( updateCommand() ) );
+ connect( checkInvert, SIGNAL( clicked() ), this, SLOT( updateCommand() ) );
+ connect( filename, SIGNAL( textChanged( const QString & ) ), this, SLOT( resetText() ) );
+ connect( filename, SIGNAL( changed() ), this, SLOT( updateCommand() ) );
+
+ show();
+
+ QFontMetrics fm( filename->font() );
+ int w = fm.width( file );
+ if( w > width() )
+ resize(
+ ( w < KApplication::desktop()->width() - 40 ? w + 40 : KApplication::desktop()->width() ), height() );
+}
+
+CoordDialog::~CoordDialog()
+{
+}
+
+void CoordDialog::updateCommand()
+{
+ int start = 0;
+ int end = 0;
+ m_command = "";
+
+ (void)filename->getSelection( &start, &end );
+
+ if( !filename->text().isEmpty() ) {
+ if( checkInvert->isChecked() && filename->hasSelectedText() ) {
+ // inverted
+ if( end ) {
+ start++;
+ end++;
+ if( start > 1 )
+ m_command = QString("[$1;%1]").arg(start-1);
+
+ if( end <= (signed int)filename->text().length() )
+ m_command.append( QString("[$%1-[length]]").arg(end) );
+ }
+ } else if( checkInvert->isChecked() && !filename->hasSelectedText() ) {
+ int p = filename->cursorPosition();
+ m_command = QString("[$1;%1][$%2-[length]]").arg(p).arg(p+1);
+ } else if( !checkInvert->isChecked() && filename->hasSelectedText() ){
+ if( end ) {
+ start++;
+ end++;
+ if( end <= (signed int)filename->text().length() )
+ m_command = QString("[$%1;%2]").arg(start).arg(end-start);
+ else
+ m_command = QString("[$%1-[length]]").arg(start);
+ }
+ } else if( !checkInvert->isChecked() && !filename->hasSelectedText() ) {
+ int p = filename->cursorPosition();
+ m_command = QString("[$%1-[length]]").arg( p );
+ }
+
+ }
+
+ preview->setText( i18n("Preview: ") + m_command );
+}
+
+void CoordDialog::resetText()
+{
+ filename->setText( m_file );
+ updateCommand();
+}
+
+QString CoordDialog::coords()
+{
+ m_inversion = checkInvert->isChecked();
+ return m_command;
+}
diff --git a/krename/coorddialog.h b/krename/coorddialog.h
new file mode 100644
index 0000000..e8e5be3
--- /dev/null
+++ b/krename/coorddialog.h
@@ -0,0 +1,70 @@
+/***************************************************************************
+ coorddialog.h - description
+ -------------------
+ begin : Die Feb 4 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef COORDDIALOG_H
+#define COORDDIALOG_H
+
+#include <kdialogbase.h>
+#include <klineedit.h>
+
+class QKeyEvent;
+class DSLineEdit : public KLineEdit {
+ Q_OBJECT
+ public:
+ DSLineEdit( QWidget* parent = 0, const char* name = 0 );
+
+ signals:
+ void changed();
+
+ protected:
+ void keyPressEvent( QKeyEvent* e );
+ void mousePressEvent( QMouseEvent* e );
+};
+
+class QCheckBox;
+class QLabel;
+class QString;
+
+/* The name of this class was a very bad choice.
+ * CoordDialog is an abreviation vor Coordinate Dialog,
+ * because this dialog is ought to be for selecting
+ * the coordinates of a filename using an [x;y] token.
+ */
+class CoordDialog : public KDialogBase {
+ Q_OBJECT
+ public:
+ CoordDialog( const QString & file, QWidget *_parent=0, const char *name=0);
+ ~CoordDialog();
+
+ QString coords();
+
+ static bool m_inversion;
+
+ private slots:
+ void updateCommand();
+ void resetText();
+
+ private:
+ QString m_file;
+ QString m_command;
+
+ DSLineEdit* filename;
+ QCheckBox* checkInvert;
+ QLabel* preview;
+};
+
+#endif
diff --git a/krename/dateplugin.cpp b/krename/dateplugin.cpp
new file mode 100644
index 0000000..0021c94
--- /dev/null
+++ b/krename/dateplugin.cpp
@@ -0,0 +1,153 @@
+/***************************************************************************
+ dateplugin.cpp - description
+ -------------------
+ begin : Mon Feb 02 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+#include "dateplugin.h"
+
+// Qt includes
+#include <qdatetime.h>
+
+// KDE includes
+#include <kfileitem.h>
+#include <kio/netaccess.h>
+#include <klocale.h>
+
+DatePlugin::DatePlugin()
+ : FilePlugin(0)
+{
+ keys.append("date");
+ keys.append("date;.*");
+ keys.append("year");
+ keys.append("month");
+ keys.append("day");
+ keys.append("time");
+ keys.append("hour");
+ keys.append("minute");
+ keys.append("second");
+ keys.append("user");
+ keys.append("group");
+ keys.append("creationdate");
+ keys.append("creationdate;.*");
+ keys.append("modificationdate");
+ keys.append("modificationdate;.*");
+ keys.append("accessdate");
+ keys.append("accessdate;.*");
+ setupKeys();
+
+ m_icon = "clock";
+}
+
+
+QString DatePlugin::processFile(BatchRenamer* b, int i, QString token, int )
+{
+ if( !supports( token ) )
+ return QString::null;
+
+ if( token.lower().startsWith( getPattern() ) )
+ token = token.mid( getPattern().length(), token.length() - getPattern().length() );
+
+
+ QDate d = QDate::currentDate();
+ QTime t = QTime::currentTime();
+ QString tmp, text;
+ QString format = "dd-MM-yyyy";
+ if( token.contains( ";" ) )
+ {
+ format = token.section( ';', 1, 1 );
+ token = token.section( ';', 0, 0 ).lower();
+ } else
+ token = token.lower();
+
+ if( token == "date" ) {
+ return QDateTime::currentDateTime().toString( format );
+ } else if( token == "year" )
+ return QString( "%1" ).arg( d.year() );
+ else if( token == "month" )
+ return tmp.sprintf("%0*i", 2, d.month() );
+ else if( token == "day" )
+ return tmp.sprintf("%0*i", 2, d.day() );
+ else if( token == "time" )
+ return QString( "%1-%2-%3" ).arg( t.hour() ).arg( QString().sprintf("%0*i", 2, t.minute() ) ).arg( QString().sprintf("%0*i", 2, t.second() ) );
+ else if( token == "hour" )
+ return tmp.sprintf("%0*i", 2, t.hour() );
+ else if( token == "minute" )
+ return tmp.sprintf("%0*i", 2, t.minute() );
+ else if( token == "second" )
+ return tmp.sprintf("%0*i", 2, t.second() );
+ else {
+ KIO::UDSEntry entry;
+ KIO::NetAccess::stat( b->files()[i].src.url, entry );
+ KFileItem item( entry, b->files()[i].src.url );
+ if( token == "user" )
+ return item.user();
+ else if( token == "group" )
+ return item.group();
+ else if( token == "creationdate" )
+ return time( item.time( KIO::UDS_CREATION_TIME ), format );
+ else if( token == "modificationdate" )
+ return time( item.time( KIO::UDS_MODIFICATION_TIME ), format );
+ else if( token == "accessdate" )
+ return time( item.time( KIO::UDS_ACCESS_TIME ), format );
+
+ }
+
+ return QString::null;
+}
+
+const QString DatePlugin::getAccelName() const
+{
+ return i18n("&System Functions");
+}
+
+const QString DatePlugin::getName() const
+{
+ return i18n("System Functions");
+}
+
+const QString DatePlugin::getPattern() const
+{
+ return QString::null;
+}
+
+const QString DatePlugin::time( time_t time, const QString & format )
+{
+ QDateTime dt;
+ dt.setTime_t( time );
+ return dt.toString( format );
+}
+
+void DatePlugin::addHelp( HelpDialogData* data )
+{
+ QStringList list;
+ list.append( "[date];;" + i18n("Insert the current date") );
+ list.append( "[date;yyyy-MM-dd];;" + i18n("Insert the current date using the formatting string yyyy-MM-dd") );
+ list.append( "[year];;" + i18n("Insert the current year") );
+ list.append( "[month];;" + i18n("Insert the current month as number") );
+ list.append( "[day];;" + i18n("Insert the current day as number") );
+ list.append( "[time];;" + i18n("Insert the current time") );
+ list.append( "[hour];;" + i18n("Insert the current hour as number") );
+ list.append( "[minute];;" + i18n("Insert the current minute as number") );
+ list.append( "[second];;" + i18n("Insert the current second as number") );
+ list.append( "[user];;" + i18n("Owner of the file") );
+ list.append( "[group];;" + i18n("Owning group of the file") );
+ list.append( "[creationdate];;" + i18n("Insert the files creation date"));
+ list.append( "[creationdate;yyyy-MM-dd];;" + i18n("Insert the formatted file creation date") );
+ list.append( "[modificationdate];;" + i18n("Insert the files modification date"));
+ list.append( "[modificationdate;yyyy-MM-dd];;" + i18n("Insert the formatted modification date") );
+ list.append( "[accessdate];;" + i18n("Insert the date of the last file access") );
+ list.append( "[accessdate;yyyy-MM-dd];;" + i18n("Insert the formatted date of the last file access") );
+
+ data->add( getName(), &list, getIcon() );
+}
diff --git a/krename/dateplugin.h b/krename/dateplugin.h
new file mode 100644
index 0000000..06eee70
--- /dev/null
+++ b/krename/dateplugin.h
@@ -0,0 +1,44 @@
+/***************************************************************************
+ dateplugin.h - description
+ -------------------
+ begin : Mon Feb 02 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef DATEPLUGIN_H
+#define DATEPLUGIN_H
+
+#include <fileplugin.h>
+// time_t support...
+#include <time.h>
+/**
+@author Dominik Seichter
+*/
+class DatePlugin : public FilePlugin
+{
+ public:
+ DatePlugin();
+
+ QString processFile(BatchRenamer* b, int i, QString token, int mode);
+ const QString getAccelName() const;
+ const QString getName() const;
+ const QString getPattern() const;
+
+ void addHelp( HelpDialogData* data );
+
+ private:
+ const QString time( time_t time, const QString & format );
+
+};
+
+#endif
diff --git a/krename/datetime.cpp b/krename/datetime.cpp
new file mode 100644
index 0000000..f06fedb
--- /dev/null
+++ b/krename/datetime.cpp
@@ -0,0 +1,238 @@
+/***************************************************************************
+ datetime.cpp - description
+ -------------------
+ begin : Mon Jan 7 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "datetime.h"
+
+// QT includes
+#include <qcheckbox.h>
+#include <qfileinfo.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kiconloader.h>
+#include <kdatepik.h>
+#include <knuminput.h>
+#include <klocale.h>
+
+// OS includes
+#include <stdio.h>
+#include <time.h>
+#include <utime.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+const QString MyDatePlugin::getName() const
+{
+ return i18n("Date & Time");
+}
+
+const QString MyDatePlugin::getAccelName() const
+{
+ return i18n("Date && &Time");
+}
+
+const int MyDatePlugin::type() const
+{
+ return TYPE_FINAL_FILE;
+}
+
+bool MyDatePlugin::checkError()
+{
+ return true;
+}
+
+const QPixmap MyDatePlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "kalarm", KIcon::Small );
+}
+
+void MyDatePlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ m_widget = w;
+
+#ifdef BENNY
+ l->addWidget( new QLabel("Setze Modifiaction Time um eine Stunde zurück", w) );
+#else
+ Layout0 = new QHBoxLayout( 0, 0, 6, "Layout0");
+ Layout1 = new QVBoxLayout( 0, 0, 6, "Layout1");
+ Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2");
+
+ kDate = new KDatePicker( w );
+
+ checkAccess = new QCheckBox( w, "checkAccess" );
+ checkAccess->setText( i18n( "Change &access date && time" ) );
+
+ checkModification = new QCheckBox( w, "checkModification" );
+ checkModification->setText( i18n( "Change &modification date && time" ) );
+
+ labelTime = new QLabel( w, "labelTime" );
+ labelTime->setText( i18n( "Time:" ) );
+
+ spinHour = new KIntSpinBox( w, "spinHour" );
+ spinHour->setSuffix( i18n( "h" ) );
+ spinHour->setMaxValue( 23 );
+
+ spinMinute = new KIntSpinBox( w, "spinMinute" );
+ spinMinute->setSuffix( i18n( "min" ) );
+ spinMinute->setMaxValue( 59 );
+
+ spinSecond = new KIntSpinBox( w, "spinSecond" );
+ spinSecond->setSuffix( i18n( "s" ) );
+ spinSecond->setMaxValue( 59 );
+
+ buttonCurrentDT = new QPushButton( w, "buttonCurrentDT" );
+ buttonCurrentDT->setText( i18n( "&Get Current Date && Time" ) );
+
+ Layout2->addWidget( labelTime );
+ Layout2->addWidget( spinHour );
+ Layout2->addWidget( spinMinute );
+ Layout2->addWidget( spinSecond );
+
+ Layout1->addWidget( kDate );
+ Layout1->addWidget( checkAccess );
+ Layout1->addWidget( checkModification );
+ Layout1->addLayout( Layout2 );
+ Layout1->addWidget( buttonCurrentDT );
+
+
+ Layout0->addLayout( Layout1 );
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+ Layout0->addItem( spacer );
+
+ l->addLayout( Layout0 );
+
+ connect( buttonCurrentDT, SIGNAL(clicked()), this, SLOT(changeDT()));
+#endif
+}
+
+void MyDatePlugin::fillStructure()
+{
+#ifndef BENNY
+ dvals.date = kDate->getDate();
+ dvals.changeModification = checkModification->isChecked();
+ dvals.changeAccess = checkAccess->isChecked();
+ dvals.hour = spinHour->value();
+ dvals.minute = spinMinute->value();
+ dvals.second = spinSecond->value();
+#endif
+}
+
+QString MyDatePlugin::processFile( BatchRenamer* b, int i, QString, int )
+{
+#ifdef BENNY
+ QString filename = b->files()[i].dst.name;
+
+ FILE * f;
+ struct utimbuf * t = new utimbuf();
+ struct tm tmp;
+ struct stat st;
+
+ time_t ti;
+
+ f = fopen((const char *)filename, "r");
+ if( f == NULL )
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ fclose( f );
+
+ QFileInfo info( filename );
+ tmp.tm_mday = info.lastModified().date().day();
+ tmp.tm_mon = info.lastModified().date().month() - 1;
+ tmp.tm_year = info.lastModified().date().year() - 1900;
+
+ tmp.tm_hour = info.lastModified().time().hour() - 1;
+ tmp.tm_min = info.lastModified().time().minute();
+ tmp.tm_sec = info.lastModified().time().second();
+ tmp.tm_isdst = -1;
+
+ ti = mktime( &tmp );
+ if( ti == -1 )
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ if( stat( (const char *)filename, &st ) == -1 )
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ t->actime = st.st_atime;
+ t->modtime = ti;
+
+ if(utime( (const char *)filename, t ) != 0)
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ return QString::null;
+#else
+ QString filename = b->files()[i].dst.name;
+
+ FILE * f;
+ struct utimbuf * t = new utimbuf();
+ struct tm tmp;
+ struct stat st;
+
+ time_t ti;
+
+ f = fopen((const char *)filename, "r");
+ if( f == NULL )
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ fclose( f );
+
+ tmp.tm_mday = dvals.date.day();
+ tmp.tm_mon = dvals.date.month() - 1;
+ tmp.tm_year = dvals.date.year() - 1900;
+
+ tmp.tm_hour = dvals.hour;
+ tmp.tm_min = dvals.minute;
+ tmp.tm_sec = dvals.second;
+ tmp.tm_isdst = -1;
+
+ ti = mktime( &tmp );
+ if( ti == -1 )
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ if( stat( (const char *)filename, &st ) == -1 )
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ if(dvals.changeAccess)
+ t->actime = ti;
+ else
+ t->actime = st.st_atime;
+
+ if(dvals.changeModification)
+ t->modtime = ti;
+ else
+ t->modtime = st.st_mtime;
+
+ if(utime( (const char *)filename, t ) != 0)
+ return QString( i18n("Can't change date of file %1.") ).arg(filename);
+
+ return QString::null;
+#endif
+}
+
+void MyDatePlugin::changeDT()
+{
+ spinHour->setValue( QTime::currentTime().hour());
+ spinMinute->setValue( QTime::currentTime().minute());
+ spinSecond->setValue( QTime::currentTime().second());
+ kDate->setDate( QDate::currentDate() );
+}
+
+
+
diff --git a/krename/datetime.h b/krename/datetime.h
new file mode 100644
index 0000000..769e4c7
--- /dev/null
+++ b/krename/datetime.h
@@ -0,0 +1,90 @@
+/***************************************************************************
+ datetime.h - description
+ -------------------
+ begin : Mon Jan 7 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef DATETIME_H
+#define DATETIME_H
+
+/*
+ * This two includes are required, because you have to use
+ * KRenames internal structures and enums.
+ */
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "plugin.h"
+#include "helpdialog.h"
+
+#include <stdio.h>
+
+class KDatePicker;
+class KIntSpinBox;
+class QCheckBox;
+class QButtonGroup;
+class QGroupBox;
+class QLabel;
+class QVBoxLayout;
+class QHBoxLayout;
+class QPushButton;
+class QString;
+class QWidget;
+
+class MyDatePlugin: public Plugin {
+ Q_OBJECT
+ public:
+ const QString getName() const;
+ const QString getAccelName() const;
+ const int type() const;
+
+ bool checkError();
+ void drawInterface( QWidget* w, QVBoxLayout* l );
+ void fillStructure();
+ QString processFile( BatchRenamer*, int, QString token, int );
+
+ const QPixmap getIcon() const;
+
+ private slots:
+ void changeDT();
+
+ protected:
+ QCheckBox* checkAccess;
+ QCheckBox* checkModification;
+ KDatePicker* kDate;
+ QLabel* labelTime;
+ KIntSpinBox* spinHour;
+ KIntSpinBox* spinMinute;
+ KIntSpinBox* spinSecond;
+ QPushButton* buttonCurrentDT;
+
+ QHBoxLayout* Layout0;
+ QVBoxLayout* Layout1;
+ QHBoxLayout* Layout2;
+
+ struct datevals {
+ QDate date; // Date
+
+ bool changeModification; // Change modification date
+ bool changeAccess; // Change access date
+
+ int hour;
+ int minute;
+ int second;
+ } dvals;
+};
+
+
+#endif
+
+
diff --git a/krename/dsdirselectdialog.cpp b/krename/dsdirselectdialog.cpp
new file mode 100644
index 0000000..c37c88a
--- /dev/null
+++ b/krename/dsdirselectdialog.cpp
@@ -0,0 +1,112 @@
+/***************************************************************************
+ dsdirselectdialog.cpp - description
+ -------------------
+ begin : Sat Jan 03 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "dsdirselectdialog.h"
+
+// Qt includes
+#include <qcheckbox.h>
+#include <qhbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qvbox.h>
+
+// KDE includes
+#include <kdiroperator.h>
+#include <klocale.h>
+#include <kurlcombobox.h>
+
+DSDirSelectDialog::DSDirSelectDialog( QWidget* parent )
+ : KFileDialog( ":KRename", "*", parent, 0, false )
+{
+ setOperationMode( KFileDialog::Opening );
+ setMode( KFile::Files | KFile::ExistingOnly );
+
+ QVBox* vbox = new QVBox( this );
+
+ if( layout() )
+ layout()->add( vbox );
+ else
+ qDebug("KFileDialog does not have a layout!!!");
+
+ checkDir = new QCheckBox( i18n("Add directory names &with filenames"), vbox );
+ check = new QCheckBox( i18n("Add subdirectories &recursively"), vbox );
+ QHBox* hbox = new QHBox( vbox );
+ QWidget* spacer = new QWidget( hbox );
+ spacer->setMinimumWidth( 20 );
+ checkHidden = new QCheckBox( i18n("Add &hidden directories"), hbox );
+ hbox->setStretchFactor( checkHidden, 4 );
+ checkOnlyDir = new QCheckBox( i18n("Add directory names only"), vbox );
+ connect( check, SIGNAL( clicked() ), this, SLOT( enableControls() ));
+
+ QToolTip::add( check, i18n("Walk recursively through the directory tree and add also the content of all subdirectories to the list of files to rename.") );
+ QToolTip::add( checkHidden, i18n("If not checked, KRename will ignore directories starting with a dot during recursive adding.") );
+ QToolTip::add( checkOnlyDir, i18n("Add only the directory names and not the names of the files in the directory to KRename.") );
+ QToolTip::add( checkDir, i18n("This option causes KRename to add also the name of the base directory of the selected files to its list.") );
+
+ enableControls();
+}
+
+bool DSDirSelectDialog::recursively() const
+{
+ return check->isChecked();
+}
+
+bool DSDirSelectDialog::hidden() const
+{
+ return checkHidden->isChecked();
+}
+
+bool DSDirSelectDialog::dirs() const
+{
+ return checkDir->isChecked();
+}
+
+bool DSDirSelectDialog::onlyDirs() const
+{
+ return checkOnlyDir->isChecked();
+}
+
+void DSDirSelectDialog::setRecursively( bool b )
+{
+ check->setChecked( b );
+}
+
+void DSDirSelectDialog::enableControls()
+{
+ checkHidden->setEnabled( check->isChecked() );
+}
+
+void DSDirSelectDialog::slotOk()
+{
+ const KFileItemList *items = ops->selectedItems();
+ if ( !items || items->isEmpty() )
+ {
+ KDialogBase::accept();
+ } else
+ KFileDialog::slotOk();
+}
+
+KURL::List DSDirSelectDialog::selectedURLs()
+{
+ KURL::List list = KFileDialog::selectedURLs();
+ if( list.isEmpty() )
+ list.append( baseURL() );
+
+ return list;
+}
+#include "dsdirselectdialog.moc"
diff --git a/krename/dsdirselectdialog.h b/krename/dsdirselectdialog.h
new file mode 100644
index 0000000..55dc573
--- /dev/null
+++ b/krename/dsdirselectdialog.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ dsdirselectdialog.h - description
+ -------------------
+ begin : Sat Jan 03 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef DSDIRSELECTDIALOG_H
+#define DSDIRSELECTDIALOG_H
+
+#include <kfiledialog.h>
+
+class QCheckBox;
+class QLabel;
+class KComboBox;
+
+/* A small helper class to allow layout changes in KDirSelectDialog */
+class DSDirSelectDialog : public KFileDialog {
+ Q_OBJECT
+
+ public:
+ DSDirSelectDialog( QWidget* parent );
+
+ bool recursively() const;
+ bool hidden() const;
+ bool dirs() const;
+ bool onlyDirs() const;
+ void setRecursively( bool b );
+
+ KURL::List selectedURLs();
+
+ private slots:
+ void enableControls();
+ void slotOk();
+
+ private:
+ QCheckBox* check;
+ QCheckBox* checkHidden;
+ QCheckBox* checkDir;
+ QCheckBox* checkOnlyDir;
+ QLabel* label;
+};
+
+#endif
diff --git a/krename/encodingplugin.cpp b/krename/encodingplugin.cpp
new file mode 100644
index 0000000..1bbabce
--- /dev/null
+++ b/krename/encodingplugin.cpp
@@ -0,0 +1,144 @@
+/***************************************************************************
+ encodingplugin.cpp - description
+ -------------------
+ begin : Tue Jul 06 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "encodingplugin.h"
+
+// QT includes
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtextcodec.h>
+#include <qvgroupbox.h>
+
+
+// KDE includes
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+
+const QString EncodingPlugin::getName() const
+{
+ return i18n("Encoding Conversion Plugin");
+}
+
+const QString EncodingPlugin::getAccelName() const
+{
+ return i18n("&Encoding Conversion Plugin");
+}
+
+const int EncodingPlugin::type() const
+{
+ return TYPE_FINAL_FILENAME;
+}
+
+void EncodingPlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ // build a list of all available TextCodecs
+ QStringList codecs;
+ QTextCodec *codec;
+ for( int i=0; (codec = QTextCodec::codecForIndex(i));i++)
+ codecs.append( codec->name() );
+
+ m_widget = w;
+
+ codec = QTextCodec::codecForLocale();
+ m_locale_codec = codec->name();
+
+ QLabel* label = new QLabel(
+ i18n("<qt>This plugin is able to convert filenames between different "
+ "encodings. For example you can convert filenames from KOI8-R "
+ "to UTF-8 encoding.</qt>"), w );
+ l->addWidget( label );
+
+ QVGroupBox* groupInput = new QVGroupBox( i18n("Encoding of Input Files:"), w );
+ checkInput = new QCheckBox( i18n("&Use local encoding: %1").arg( m_locale_codec), groupInput );
+ comboInput = new KComboBox( false, groupInput );
+ comboInput->insertStringList( codecs );
+
+ QVGroupBox* groupOutput = new QVGroupBox( i18n("Encoding of Output Files:"), w );
+ checkOutput = new QCheckBox( i18n("&Use local encoding: %1").arg( m_locale_codec), groupOutput );
+ checkOutput->setChecked( true );
+ comboOutput = new KComboBox( false, groupOutput );
+ comboOutput->insertStringList( codecs );
+
+ l->addWidget( groupInput );
+ l->addWidget( groupOutput );
+
+ connect( checkInput, SIGNAL( clicked() ), this, SLOT( enableControls() ) );
+ connect( checkOutput, SIGNAL( clicked() ), this, SLOT( enableControls() ) );
+
+ connect( comboOutput, SIGNAL( activated(int) ),this, SLOT( updatePreview() ) );
+ connect( comboInput, SIGNAL( activated(int) ),this, SLOT( updatePreview() ) );
+
+ setLocale( comboInput );
+ setLocale( comboOutput );
+
+ enableControls();
+}
+
+void EncodingPlugin::fillStructure()
+{
+ m_input_codec = (checkInput->isChecked() ? m_locale_codec : comboInput->currentText() );
+ m_output_codec = (checkOutput->isChecked() ? m_locale_codec : comboOutput->currentText() );
+}
+
+bool EncodingPlugin::checkError()
+{
+ return true;
+}
+
+QString EncodingPlugin::processFile( BatchRenamer*, int, QString token, int )
+{
+ QString input = token;
+ QString unicode = QString::null;
+
+ QTextCodec* toUnicode = QTextCodec::codecForName(m_input_codec); // get the codec for KOI8-R
+ QTextCodec* fromUnicode = QTextCodec::codecForName(m_output_codec);
+
+ unicode = toUnicode->toUnicode( input );
+ return fromUnicode->fromUnicode( unicode );
+}
+
+void EncodingPlugin::finished()
+{
+}
+
+
+const QPixmap EncodingPlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "fonts", KIcon::Small );
+}
+
+void EncodingPlugin::enableControls()
+{
+ comboInput->setEnabled( !checkInput->isChecked() );
+ comboOutput->setEnabled( !checkOutput->isChecked() );
+
+ //updatePreview();
+}
+
+void EncodingPlugin::setLocale( KComboBox* combo )
+{
+ for(int i=0;i<combo->count();i++)
+ if( combo->text(i) == m_locale_codec )
+ {
+ combo->setCurrentItem( i );
+ break;
+ }
+}
diff --git a/krename/encodingplugin.h b/krename/encodingplugin.h
new file mode 100644
index 0000000..801dd3f
--- /dev/null
+++ b/krename/encodingplugin.h
@@ -0,0 +1,68 @@
+/***************************************************************************
+ encodingplugin.h - description
+ -------------------
+ begin : Tue Jul 06 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef _ENCODINGPLUGIN_H_
+#define _ENCODINGPLUGIN_H_
+
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "plugin.h"
+#include "helpdialog.h"
+#include "fileoperation.h"
+
+class KComboBox;
+class QCheckBox;
+
+class EncodingPlugin : public Plugin {
+ Q_OBJECT
+ public:
+ const QString getName() const;
+ const QString getAccelName() const;
+ const int type() const;
+
+ bool checkError();
+ void drawInterface( QWidget* w, QVBoxLayout* l );
+ void fillStructure();
+ QString processFile( BatchRenamer*, int, QString token, int );
+ void finished();
+
+ const QPixmap getIcon() const;
+
+ private slots:
+ void enableControls();
+
+ private:
+ void setLocale( KComboBox* combo );
+
+ FileOperation fop;
+
+ QString m_input_codec;
+ QString m_output_codec;
+ QString m_locale_codec;
+
+ int mib_input;
+ int mib_output;
+
+ QCheckBox* checkInput;
+ QCheckBox* checkOutput;
+
+ KComboBox* comboInput;
+ KComboBox* comboOutput;
+};
+
+
+#endif // _ENCODINGPLUGIN_H_
diff --git a/krename/fileoperation.cpp b/krename/fileoperation.cpp
new file mode 100644
index 0000000..23fa405
--- /dev/null
+++ b/krename/fileoperation.cpp
@@ -0,0 +1,124 @@
+/***************************************************************************
+ fileoperation.cpp - description
+ -------------------
+ begin : Sun Nov 11 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// KDE includes
+#include <kapplication.h>
+#include <klocale.h>
+#include <kio/netaccess.h>
+#include <kio/job.h>
+
+// QT includes
+#if QT_VERSION >= 0x030100
+ #include <qeventloop.h>
+#else
+ #include <qapplication.h>
+#endif
+
+#include <qfileinfo.h>
+
+// OS includes
+#include <stdio.h>
+#include <unistd.h>
+
+// Own includes
+#include "fileoperation.h"
+#include "ProgressDialog.h"
+#include "batchrenamer.h"
+
+using namespace KIO;
+
+FileOperation::FileOperation()
+{
+ canceled = false;
+}
+
+FileOperation::~FileOperation() { }
+
+bool FileOperation::start( const KURL & src, const KURL & dest, int mode, bool overwrite )
+{
+ locked = true;
+ result = 0;
+
+ if( src == dest && !overwrite ) {
+ m_error = QString( i18n( "File %1 exists already!") ).arg( dest.prettyURL() );
+ return false;
+ }
+
+ Job* job = 0;
+ switch( mode ) {
+ case RENAME:
+ case MOVE:
+ default:
+ job = file_move( src, dest, -1, overwrite, false, false );
+ break;
+ case COPY:
+ job = file_copy( src, dest, -1, overwrite, false, false );
+ break;
+ case LINK:
+ // Does only work if both files are on the same host
+ if( src.protocol() == dest.protocol() && src.host() == dest.host() )
+ {
+ job = symlink( src.path(), dest, overwrite, false );
+ }
+ else
+ {
+ m_error = i18n("Can't create symlinks on different hosts for file %1.").arg( src.prettyURL() );
+ result = true;
+ return !result;
+ }
+ break;
+ };
+
+ if( !job )
+ return false;
+
+ job->setAutoErrorHandlingEnabled( false, 0 );
+ connect( job, SIGNAL( result (KIO::Job *) ),
+ this, SLOT( slotResult (KIO::Job *) ) );
+
+#if QT_VERSION >= 0x030100
+ kapp->eventLoop()->enterLoop();
+#else
+ kapp->enter_loop();
+#endif
+ return !result;
+}
+
+bool FileOperation::fcopy( const QString & src, const QString & dest )
+{
+ return start( KURL( src ), KURL( dest ), KIO::CopyJob::Copy, false );
+}
+
+QString FileOperation::getName( const QString & file )
+{
+ QFileInfo info( file );
+ return info.fileName();
+}
+
+void FileOperation::slotResult( KIO::Job * job )
+{
+ result = job->error();
+ if( result )
+ m_error = job->errorString();
+
+#if QT_VERSION >= 0x030100
+ kapp->eventLoop()->exitLoop();
+#else
+ kapp->exit_loop();
+#endif
+}
+
diff --git a/krename/fileoperation.h b/krename/fileoperation.h
new file mode 100644
index 0000000..32a2552
--- /dev/null
+++ b/krename/fileoperation.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ fileoperation.h - description
+ -------------------
+ begin : Sun Nov 11 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef FILEOPERATION_H
+#define FILEOPERATION_H
+
+#include <qobject.h>
+#include <kio/jobclasses.h>
+#include <kurl.h>
+
+class QString;
+class FileOperation: public QObject {
+ Q_OBJECT
+ public:
+ FileOperation();
+ ~FileOperation();
+
+ bool start( const KURL & src, const KURL & dest, int mode, bool overwrite );
+ bool fcopy( const QString & src, const QString & dest );
+
+ inline const QString & error() const;
+ static QString getName( const QString & file );
+
+ private slots:
+ void slotResult( KIO::Job * job );
+
+ private:
+ bool locked;
+ bool canceled;
+ int result;
+
+ QString m_error;
+};
+
+inline const QString & FileOperation::error() const
+{
+ return m_error;
+}
+
+#endif
diff --git a/krename/fileplugin.cpp b/krename/fileplugin.cpp
new file mode 100644
index 0000000..535b8bb
--- /dev/null
+++ b/krename/fileplugin.cpp
@@ -0,0 +1,213 @@
+/***************************************************************************
+ fileplugin.cpp - description
+ -------------------
+ begin : Mon Jul 1 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "fileplugin.h"
+
+// Qt includes
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qregexp.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kfilemetainfo.h>
+#include <klineedit.h>
+#include <klistbox.h>
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kpushbutton.h>
+
+FilePlugin::FilePlugin( KService* service )
+{
+ if(!service) {
+ setupKeys();
+ return;
+ }
+
+ KFileMetaInfoProvider* mip = KFileMetaInfoProvider::self();
+ m_name = service->name();
+ m_comment = service->comment();
+ QStringList options = service->serviceTypes();
+ for( unsigned int i = 0; i < options.count(); i++ ) {
+ if( options[i] != "KFilePlugin" ) {
+ m_mimetype = options[i];
+ const KFileMimeTypeInfo* info = mip->mimeTypeInfo( m_mimetype );
+ if( info )
+ keys = info->supportedKeys();
+
+ fileplugin = mip->plugin( m_mimetype );
+
+ KMimeType::Ptr mime = KMimeType::mimeType( m_mimetype );
+ m_icon = mime->icon( QString::null, true ); // arguments are unused
+
+ setPattern( mime );
+ }
+ }
+}
+
+FilePlugin::~FilePlugin()
+{ }
+
+void FilePlugin::setPattern( KMimeType::Ptr mime )
+{
+ QStringList pattern = mime->patterns();
+ if( pattern.count() ) {
+ m_pattern = pattern[0];
+ if( m_pattern.startsWith( "*." ) )
+ m_pattern = m_pattern.right( m_pattern.length() - 2 );
+ }
+
+ // TODO: REFACTOR
+ // We need a pattern
+ if( m_pattern.isEmpty() ) {
+ int a = 0;
+ a = m_name.find( "-" );
+ if( a > -1 )
+ m_pattern = m_name.left( a ).lower();
+ else {
+ a = m_pattern.find( " " );
+ if( a > -1 )
+ m_pattern = m_name.left( a ).lower();
+ else
+ m_pattern = m_name;
+ }
+ }
+
+ setupKeys();
+}
+
+void FilePlugin::setupKeys()
+{
+ for( unsigned int i = 0; i < keys.count(); i++ )
+ keys[i] = getPattern() + keys[i];
+}
+
+const QString FilePlugin::getName() const
+{
+ return m_name;
+}
+
+const QString FilePlugin::getAccelName() const
+{
+ return "&" + getName();
+}
+
+const QString FilePlugin::getPattern() const
+{
+ return m_pattern;
+}
+
+const int FilePlugin::type() const
+{
+ return TYPE_BRACKET;
+}
+
+bool FilePlugin::checkError()
+{
+ return true;
+}
+
+void FilePlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
+
+ QHBoxLayout* hbox = new QHBoxLayout( 0, 6, 6 );
+
+ QLabel* pix = new QLabel( w );
+ pix->setPixmap( kapp->iconLoader()->loadIcon( m_icon, KIcon::Desktop ) );
+
+ hbox->addWidget( pix );
+ hbox->addWidget( new QLabel( "<qt><b>"+getName()+"</b></qt>", w ) );
+ hbox->addItem( spacer );
+
+ l->addLayout( hbox );
+ l->addWidget( new QLabel( m_comment, w ) );
+ l->addWidget( new QLabel( i18n("Supported tokens:"), w ) );
+
+ KListBox* list = new KListBox( w );
+ list->setColumnMode( KListBox::FitToWidth );
+
+ for( unsigned int i = 0; i < keys.count(); i++ )
+ list->insertItem( "[" + keys[i] + "]" );
+
+ l->addWidget( list );
+ l->setStretchFactor( list, 2 );
+}
+
+QString FilePlugin::processFile( BatchRenamer* b, int i, QString token, int )
+{
+ QString filename = BatchRenamer::buildFilename( &b->files()[i].src );
+
+ token = token.lower();
+
+ /*
+ * Check if we have something cached for this file
+ */
+ if( cache.contains( filename + "::" + token ) )
+ return cache[filename + "::" + token ];
+
+ for( unsigned int i = 0; i < keys.count(); i++ ) {
+ if( token.lower() == keys[i].lower() ) {
+ KFileMetaInfo meta( filename );
+ if( meta.isValid() ) {
+ QString k = keys[i];
+ if( k.startsWith( getPattern() ) )
+ k = k.mid( getPattern().length(), k.length() - getPattern().length() );
+
+ QString ret = meta.item( k ).string( true ).stripWhiteSpace();
+
+ if( cache.count() >= CACHE_MAX )
+ cache.remove( cache.begin() );
+
+ cache.insert( filename + "::" + token, ret );
+ kapp->processEvents();
+ return ret;
+ }
+ }
+ }
+
+ return QString::null;
+}
+
+void FilePlugin::addHelp( HelpDialogData* data )
+{
+ QStringList list;
+ for( unsigned int i = 0; i < keys.count(); i++ )
+ list.append( "[" + keys[i] + "]" + ";;" + keys[i] );
+
+ data->add( getName(), &list, getIcon() );
+}
+
+const QPixmap FilePlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( m_icon, KIcon::Small );
+}
+
+bool FilePlugin::supports( const QString & token )
+{
+ for( unsigned int i = 0; i < keys.count(); i++ )
+ if( QRegExp( keys[i].lower() ).exactMatch( token.lower() ) )
+ return true;
+
+ return false;
+}
+
+void FilePlugin::clearCache()
+{
+ cache.clear();
+}
diff --git a/krename/fileplugin.h b/krename/fileplugin.h
new file mode 100644
index 0000000..8931936
--- /dev/null
+++ b/krename/fileplugin.h
@@ -0,0 +1,86 @@
+/***************************************************************************
+ fileplugin.h - description
+ -------------------
+ begin : Mon Jul 1 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef FILEPLUGIN_H
+#define FILEPLUGIN_H
+
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "plugin.h"
+#include "helpdialog.h"
+#include <kmimetype.h>
+
+/*
+ * number of items we shall cache from file plugins
+ */
+#define CACHE_MAX 2000
+
+class KFileMetaInfoProvider;
+class KFileMimeTypeInfo;
+class KPushButton;
+class KService;
+class QLabel;
+class QWidget;
+class QVBoxLayout;
+class KFilePlugin;
+class FilePlugin : public Plugin {
+ Q_OBJECT
+ public:
+ FilePlugin( KService* service );
+ ~FilePlugin();
+
+ inline bool isValid() const;
+
+ virtual const QString getName() const;
+ virtual const QString getAccelName() const;
+ virtual const QString getPattern() const;
+ virtual const int type() const;
+
+ virtual bool checkError();
+ virtual void drawInterface( QWidget* w, QVBoxLayout* l );
+ virtual QString processFile( BatchRenamer* b, int i, QString token, int mode );
+
+ virtual void addHelp( HelpDialogData* data );
+ virtual const QPixmap getIcon() const;
+
+ virtual bool alwaysUsed() const { return true; }
+
+ virtual const QStringList getKeys() const { return keys; }
+
+ virtual void clearCache();
+
+ private:
+ void setPattern( KMimeType::Ptr mime );
+
+ protected:
+ bool supports( const QString & token );
+ void setupKeys();
+
+ QMap<QString,QString> cache;
+ KFilePlugin* fileplugin;
+
+ QString m_name, m_comment, m_icon, m_mimetype, m_pattern;
+
+ QStringList keys;
+};
+
+bool FilePlugin::isValid() const
+{
+ return keys.count() > 0 && fileplugin ? true : false;
+}
+
+#endif
diff --git a/krename/firststartdlg.cpp b/krename/firststartdlg.cpp
new file mode 100644
index 0000000..39b4941
--- /dev/null
+++ b/krename/firststartdlg.cpp
@@ -0,0 +1,33 @@
+/***************************************************************************
+ firststartdlg.cpp - description
+ -------------------
+ begin : Fre Jun 6 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "firststartdlg.h"
+
+FirstStartDlg::FirstStartDlg(QWidget *parent, const char *name )
+ : KDialogBase( KDialogBase::Plain, "KRename",
+ KDialogBase::Ok, KDialogBase::Ok, parent, name, true, true ),
+ GUIModeSelector()
+{
+ setCaption( guiModeCaption() );
+ createFrame( plainPage() );
+ setUseWizard( true );
+}
+
+FirstStartDlg::~FirstStartDlg()
+{
+}
+
diff --git a/krename/firststartdlg.h b/krename/firststartdlg.h
new file mode 100644
index 0000000..998d617
--- /dev/null
+++ b/krename/firststartdlg.h
@@ -0,0 +1,32 @@
+/***************************************************************************
+ firststartdlg.h - description
+ -------------------
+ begin : Fre Jun 6 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef FIRSTSTARTDLG_H
+#define FIRSTSTARTDLG_H
+
+#include <qwidget.h>
+#include <kdialogbase.h>
+#include "guimodeselector.h"
+
+class FirstStartDlg : public KDialogBase, public GUIModeSelector {
+ Q_OBJECT
+ public:
+ FirstStartDlg(QWidget *parent=0, const char *name=0);
+ ~FirstStartDlg();
+};
+
+#endif
diff --git a/krename/guimodeselector.cpp b/krename/guimodeselector.cpp
new file mode 100644
index 0000000..92b0e94
--- /dev/null
+++ b/krename/guimodeselector.cpp
@@ -0,0 +1,78 @@
+/***************************************************************************
+ guimodeselector.cpp - description
+ -------------------
+ begin : Fre Jun 6 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "guimodeselector.h"
+
+// Qt includes
+#include <qbuttongroup.h>
+#include <qframe.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qradiobutton.h>
+
+// KDE includes
+#include <klocale.h>
+
+GUIModeSelector::GUIModeSelector()
+{
+ optionWizard = optionTabs = 0;
+}
+
+GUIModeSelector::~GUIModeSelector()
+{
+}
+
+bool GUIModeSelector::useWizard() const
+{
+ return optionWizard->isChecked();
+}
+
+void GUIModeSelector::setUseWizard( bool b )
+{
+ optionWizard->setChecked( b );
+ optionTabs->setChecked( !b );
+}
+
+const QString GUIModeSelector::guiModeCaption() const
+{
+ return i18n("Look and Feel");
+}
+
+void GUIModeSelector::createFrame( QFrame* frame )
+{
+ QVBoxLayout* layout = new QVBoxLayout( frame );
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ QButtonGroup* group = new QButtonGroup( frame );
+ group->setColumnLayout(0, Qt::Vertical );
+ QVBoxLayout* lgroup = new QVBoxLayout( group->layout() );
+
+ optionWizard = new QRadioButton( group );
+ optionWizard->setText( i18n("Use &wizard style GUI (beginners)") );
+ optionTabs = new QRadioButton( group );
+ optionTabs->setText( i18n("Use &tabbed GUI (advanced users)") );
+
+ lgroup->addWidget( new QLabel( i18n("Configure the look and feel of the KRename GUI:<br>"), group ) );
+ lgroup->addWidget( optionWizard );
+ lgroup->addWidget( optionTabs );
+ lgroup->addItem( spacer );
+
+ layout->addWidget( group );
+ layout->addItem( spacer );
+}
+
+
diff --git a/krename/guimodeselector.h b/krename/guimodeselector.h
new file mode 100644
index 0000000..524319f
--- /dev/null
+++ b/krename/guimodeselector.h
@@ -0,0 +1,41 @@
+/***************************************************************************
+ guimodeselector.h - description
+ -------------------
+ begin : Fre Jun 6 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef GUIMODESELECTOR_H
+#define GUIMODESELECTOR_H
+
+#include <qobject.h>
+
+class QFrame;
+class QRadioButton;
+class GUIModeSelector {
+ public:
+ GUIModeSelector();
+ ~GUIModeSelector();
+
+ bool useWizard() const;
+ void setUseWizard( bool b );
+
+ protected:
+ const QString guiModeCaption() const;
+ void createFrame( QFrame* frame );
+
+ QRadioButton* optionWizard;
+ QRadioButton* optionTabs;
+};
+
+#endif
diff --git a/krename/helpdialog.cpp b/krename/helpdialog.cpp
new file mode 100644
index 0000000..2707f38
--- /dev/null
+++ b/krename/helpdialog.cpp
@@ -0,0 +1,159 @@
+/***************************************************************************
+ helpdialog.cpp - description
+ -------------------
+ begin : Fr Nov 15 13:44:19 CEST 2001
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+#include "helpdialog.h"
+#include "krenameimpl.h"
+
+// Qt includes
+#include <qcombobox.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+
+// KDE includes
+#include <klocale.h>
+#include <klistview.h>
+#include <kpushbutton.h>
+#include <kstdguiitem.h>
+
+void HelpDialogData::remove( const QString & headline )
+{
+ if( m_map.contains( headline ) ) {
+ m_map.remove( headline );
+ m_icons.remove( headline );
+
+ emit updateHeadline();
+ emit updateItems();
+ }
+}
+
+void HelpDialogData::add( const QString & headline, QStringList* commands, const QPixmap & icon, bool first )
+{
+ m_map.insert( headline, *commands );
+ m_icons.insert( headline, icon );
+ if( first )
+ m_first = headline;
+
+ emit updateHeadline();
+ emit updateItems();
+}
+
+QStringList HelpDialogData::tokens() const
+{
+ QStringList list;
+
+#if QT_VERSION >= 0x030005
+ // map.keys() seems only to be avaible in Qt >= 3.0.5
+ QStringList keys = m_map.keys();
+#else
+ QStringList keys;
+ QMap<QString, QStringList>::Iterator it;
+ for ( it = m_map.begin(); it != m_map.end(); ++it )
+ keys.append( it.key() );
+#endif
+
+ for( unsigned int i = 0; i < keys.count(); i++ )
+ for( unsigned int z = 0; z < m_map[keys[i]].count(); z++ )
+ list.append( m_map[keys[i]][z].section( ";;", 0, 0 ) );
+
+ return list;
+}
+
+
+HelpDialog::HelpDialog( HelpDialogData* data, QWidget* parent,
+ const char* name, bool modal, WFlags fl )
+ : QDialog( parent, name, modal, fl )
+{
+ text = NULL;
+
+ resize( 500, 400 );
+ setCaption( i18n( "Help" ) );
+ HelpDialogLayout = new QVBoxLayout( this, 11, 6, "HelpDialogLayout");
+
+ comboHeadline = new QComboBox( FALSE, this, "comboHeadline" );
+ HelpDialogLayout->addWidget( comboHeadline );
+
+ list = new KListView( this, "list" );
+ list->addColumn( i18n( "Token" ) );
+ list->addColumn( i18n( "Description" ) );
+ HelpDialogLayout->addWidget( list );
+
+ Layout1 = new QHBoxLayout( 0, 0, 6, "Layout1");
+ QSpacerItem* spacer = new QSpacerItem( 91, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
+ Layout1->addItem( spacer );
+
+ buttonAdd = new KPushButton( this, "buttonAdd" );
+ buttonAdd->setText( i18n( "&Add" ) );
+ Layout1->addWidget( buttonAdd );
+
+ buttonClose = createButton( KStdGuiItem::close(), this );
+ Layout1->addWidget( buttonClose );
+ HelpDialogLayout->addLayout( Layout1 );
+
+ // signals and slots connections
+ connect( buttonClose, SIGNAL( clicked() ), this, SLOT( accept() ) );
+ connect( buttonAdd, SIGNAL( clicked() ), this, SLOT( execute() ) );
+ connect( list, SIGNAL( executed(QListViewItem*) ), this, SLOT( execute() ) );
+ connect( comboHeadline, SIGNAL( activated(int) ), this, SLOT(updateItems() ) );
+
+ m_data = data;
+ connect( m_data, SIGNAL( updateItems() ), this, SLOT( updateItems() ) );
+ connect( m_data, SIGNAL( updateHeadline() ), this, SLOT( updateHeadline() ) );
+}
+
+HelpDialog::~HelpDialog()
+{
+ disconnect( m_data, SIGNAL( updateItems() ), this, SLOT( updateItems() ) );
+ disconnect( m_data, SIGNAL( updateHeadline() ), this, SLOT( updateHeadline() ) );
+}
+
+void HelpDialog::execute()
+{
+ if(!list->currentItem())
+ return;
+
+ QString t = text->text();
+
+ t.insert( text->cursorPosition(), list->currentItem()->text( 0 ) );
+ text->setText( t );
+
+ if( isModal() )
+ accept();
+}
+
+void HelpDialog::updateItems()
+{
+ list->clear();
+ QStringList items = m_data->map()[comboHeadline->currentText()];
+
+ for( unsigned int i = 0; i < items.count(); i++ ) {
+ QString tmp = items[i];
+ new KListViewItem( list, tmp.section( ";;", 0, 0 ), tmp.section( ";;", 1, 1 ) );
+ }
+}
+
+void HelpDialog::updateHeadline()
+{
+ comboHeadline->clear();
+ QMap<QString,QStringList> m = m_data->map();
+ QMap<QString,QPixmap> ic = m_data->icons();
+
+ comboHeadline->insertItem( ic[m_data->first()], m_data->first() );
+ QMap<QString, QStringList>::Iterator it;
+ for ( it = m.begin(); it != m.end(); ++it )
+ if( it.key() != m_data->first() )
+ comboHeadline->insertItem( ic[it.key()], it.key() );
+}
+
diff --git a/krename/helpdialog.h b/krename/helpdialog.h
new file mode 100644
index 0000000..f15f541
--- /dev/null
+++ b/krename/helpdialog.h
@@ -0,0 +1,111 @@
+/***************************************************************************
+ helpdialog.h - description
+ -------------------
+ begin : Fr Nov 15 13:44:19 CEST 2001
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef HELPDIALOG_H
+#define HELPDIALOG_H
+
+#include <qdialog.h>
+#include <qstringlist.h>
+#include <qpixmap.h>
+#include <qmap.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QComboBox;
+class QLineEdit;
+class QPixmap;
+class KListView;
+class KPushButton;
+
+class HelpDialogData : public QObject {
+ Q_OBJECT
+ public:
+ HelpDialogData() {}
+ ~HelpDialogData() {}
+
+ void add( const QString & headline, QStringList* commands, const QPixmap & icon, bool first = false );
+ void remove( const QString & headline );
+
+ /** returns all available and supported tokens
+ */
+ QStringList tokens() const;
+
+ inline const QMap<QString,QStringList> & map() const
+ {
+ return m_map;
+ }
+
+ inline const QMap<QString,QPixmap> & icons() const
+ {
+ return m_icons;
+ }
+
+ inline const QString & first() const
+ {
+ return m_first;
+ }
+
+ signals:
+ void updateHeadline();
+ void updateItems();
+
+ private:
+ QMap<QString,QStringList> m_map;
+ QMap<QString,QPixmap> m_icons;
+
+ QString m_first;
+};
+
+class HelpDialog : public QDialog
+{
+ Q_OBJECT
+ public:
+ HelpDialog( HelpDialogData* data, QWidget* parent = 0,
+ const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+ ~HelpDialog();
+
+ inline void setLineEdit( QLineEdit* lineedit );
+
+ public slots:
+ void updateItems();
+ void updateHeadline();
+
+ private slots:
+ void execute();
+
+ private:
+ QComboBox* comboHeadline;
+ KListView* list;
+ KPushButton* buttonAdd;
+ KPushButton* buttonClose;
+
+ protected:
+ HelpDialogData* m_data;
+
+ QLineEdit* text;
+
+ QVBoxLayout* HelpDialogLayout;
+ QHBoxLayout* Layout1;
+};
+
+void HelpDialog::setLineEdit( QLineEdit* lineedit )
+{
+ text = lineedit;
+}
+
+#endif // HELPDIALOG_H
diff --git a/krename/hi32-app-krename.png b/krename/hi32-app-krename.png
new file mode 100644
index 0000000..2a12806
--- /dev/null
+++ b/krename/hi32-app-krename.png
Binary files differ
diff --git a/krename/hi48-app-krename.png b/krename/hi48-app-krename.png
new file mode 100644
index 0000000..91762a8
--- /dev/null
+++ b/krename/hi48-app-krename.png
Binary files differ
diff --git a/krename/kmyhistorycombo.cpp b/krename/kmyhistorycombo.cpp
new file mode 100644
index 0000000..604d352
--- /dev/null
+++ b/krename/kmyhistorycombo.cpp
@@ -0,0 +1,167 @@
+/***************************************************************************
+ kmyhistorycombo.cpp - description
+ -------------------
+ begin : Tue Oct 16 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// QT includes
+#include <qlistbox.h>
+
+// Own includes
+#include "kmyhistorycombo.h"
+
+#include <kapplication.h>
+#include <kconfig.h>
+#include <klocale.h>
+
+#include <qpopupmenu.h>
+#include <qtimer.h>
+
+#define TIMER_DELAY 500
+
+#define KRENAME_FILENAME 5000
+#define KRENAME_FILENAME_LOWER 5001
+#define KRENAME_FILENAME_UPPER 5002
+#define KRENAME_NUMBER 5003
+#define KRENAME_DATE 5004
+
+KMyHistoryCombo::KMyHistoryCombo( bool customPopup, QWidget* parent, const char* name)
+ : KHistoryCombo(parent, name)
+{
+ QStringList history;
+ QStringList completion;
+ KConfig* config = kapp->config();
+ config->setGroup( name );
+ this->setDuplicatesEnabled( false );
+
+ history = config->readListEntry("History");
+ completion = config->readListEntry("CompletionItems");
+ m_timer = new QTimer();
+
+ setHistoryItems( history );
+
+ completionObject()->setItems( ( completion.isEmpty() ? history : completion ) );
+ setCompletionMode( (KGlobalSettings::Completion)config->readNumEntry( "CompletionMode",
+ KGlobalSettings::completionMode() ) );
+
+ connect( this, SIGNAL( textChanged( const QString & ) ), this, SLOT( textChangedGovernor() ) );
+ connect( m_timer, SIGNAL( timeout() ), this, SIGNAL( delayedTextChanged() ) );
+
+ if( customPopup )
+ connect( this, SIGNAL( aboutToShowContextMenu( QPopupMenu* ) ), this, SLOT( slotCustomContextMenu( QPopupMenu* ) ) );
+}
+
+KMyHistoryCombo::~KMyHistoryCombo()
+{
+ delete m_timer;
+}
+
+void KMyHistoryCombo::saveSettings()
+{
+ addToHistory( text() );
+
+ KConfig* config = kapp->config();
+
+ config->setGroup( name() ? name() : "KMyHistoryCombo" );
+ config->writeEntry( "History", historyItems() );
+ config->writeEntry( "CompletionItems", completionObject()->items() );
+ config->writeEntry( "CompletionMode", completionMode() );
+
+ config->sync();
+}
+
+QString KMyHistoryCombo::text( int index ) const
+{
+ return this->listBox()->text( index );
+}
+
+void KMyHistoryCombo::setText( const QString & text )
+{
+ this->lineEdit()->setText( text );
+}
+
+void KMyHistoryCombo::add( const QString & text )
+{
+ int i;
+ for ( i = 0; i < this->count(); i++ )
+ if( this->text( i ) == text ) {
+ QString tmp = this->text( i );
+ this->listBox()->removeItem( i );
+ this->insertItem( tmp, 0 );
+ return;
+ }
+
+ if( this->count() == this->maxCount() )
+ this->listBox()->removeItem( this->maxCount() );
+
+ this->insertItem( text, 0 );
+}
+
+bool KMyHistoryCombo::isEmpty() const
+{
+ return this->lineEdit()->text().isEmpty();
+}
+
+void KMyHistoryCombo::textChangedGovernor()
+{
+ m_timer->stop();
+ m_timer->start( TIMER_DELAY, true );
+}
+
+void KMyHistoryCombo::slotCustomContextMenu( QPopupMenu* p )
+{
+ QPopupMenu* krename = new QPopupMenu( p );
+ krename->insertItem( i18n("&Filename"), KRENAME_FILENAME );
+ krename->insertItem( i18n("Filename to &lowercase"), KRENAME_FILENAME_LOWER );
+ krename->insertItem( i18n("Filename to &uppercase"), KRENAME_FILENAME_UPPER );
+ krename->insertItem( i18n("&Number"), KRENAME_NUMBER );
+ krename->insertItem( i18n("&Date"), KRENAME_DATE );
+
+ connect( krename, SIGNAL( activated( int ) ), this, SLOT( slotInsertKRenameCommand( int ) ) );
+
+ p->insertSeparator( 0 );
+ p->insertItem( i18n("Insert &KRename token"), krename, 0, 0 );
+}
+
+void KMyHistoryCombo::slotInsertKRenameCommand( int id )
+{
+ QString t;
+
+ // TODO:
+ // also use constants for KRename tokens!
+
+ switch( id )
+ {
+ case KRENAME_FILENAME:
+ t = "$";
+ break;
+ case KRENAME_FILENAME_LOWER:
+ t = "%";
+ break;
+ case KRENAME_FILENAME_UPPER:
+ t = "&";
+ break;
+ case KRENAME_NUMBER:
+ t = "#";
+ break;
+ case KRENAME_DATE:
+ t = "[date]";
+ break;
+ default:
+ break;
+ }
+
+ if( !t.isEmpty() )
+ this->lineEdit()->insert( t );
+}
diff --git a/krename/kmyhistorycombo.h b/krename/kmyhistorycombo.h
new file mode 100644
index 0000000..1f9f4d4
--- /dev/null
+++ b/krename/kmyhistorycombo.h
@@ -0,0 +1,74 @@
+/***************************************************************************
+ kmyhistorycombo.h - description
+ -------------------
+ begin : Tue Oct 16 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KMYHISTORYCOMBO_H
+#define KMYHISTORYCOMBO_H
+
+// KDE includes
+#include <kcombobox.h>
+#include <kcompletion.h>
+
+class QPopupMenu;
+class QTimer;
+
+class KMyHistoryCombo : public KHistoryCombo {
+ Q_OBJECT
+ public:
+ /** Create a new KMyHistoryCombo which has automatic KRename default history
+ * handling and a custom popup menu to insert tokens if customPopup is true
+ *
+ * \param customPopup insert custom menu items into context menu.
+ */
+ KMyHistoryCombo(bool customPopup, QWidget* parent=0, const char* name=0);
+ ~KMyHistoryCombo();
+
+ /**
+ * Saves the settings of the HistoryCombo in the applications
+ * config file in a group named name()
+ * Saved settings include:
+ * - history items
+ * - completion items
+ * - completion mode
+ */
+ void saveSettings();
+
+ inline QString text() const;
+
+ QString text( int index ) const;
+
+ void setText( const QString & text );
+ void add( const QString & text );
+ bool isEmpty() const;
+
+ signals:
+ void delayedTextChanged();
+
+ private slots:
+ void textChangedGovernor();
+ void slotCustomContextMenu( QPopupMenu* p );
+ void slotInsertKRenameCommand( int id );
+
+ private:
+ QTimer* m_timer;
+};
+
+inline QString KMyHistoryCombo::text() const
+{
+ return currentText();
+}
+
+#endif
diff --git a/krename/kmylistbox.cpp b/krename/kmylistbox.cpp
new file mode 100644
index 0000000..c1b63ba
--- /dev/null
+++ b/krename/kmylistbox.cpp
@@ -0,0 +1,839 @@
+/***************************************************************************
+ kmylistbox.cpp - description
+ -------------------
+ begin : Tue Oct 16 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// QT includes
+#include <qcursor.h>
+#include <qdir.h>
+#include <qdragobject.h>
+#include <qpainter.h>
+#include <qpalette.h>
+#include <qregexp.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kdirlister.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kio/previewjob.h>
+#include <kio/netaccess.h>
+#include <qptrlist.h>
+#include <kurldrag.h>
+#include <kurllabel.h>
+#include <kpixmap.h>
+#include <kpixmapeffect.h>
+
+// Own includes
+#include "kmylistbox.h"
+#include "krecursivelister.h"
+#include "threadedlister.h"
+
+using namespace KIO;
+
+KMyListBox::KMyListBox(QWidget* parent, const char* name, WFlags fl)
+ :KListBox(parent, name, fl)
+{
+ m_running_lister_counter = 0;
+
+ drag = ctrlPressed = shiftPressed = mousePressed = false;
+ moving = false;
+ m_sorting = UNSORTED;
+
+ label = new KURLLabel( QString::null, "<br>" + i18n("Please add some files...") + "<br>", this );
+ label->setFrameStyle( QFrame::GroupBoxPanel | QFrame::Sunken );
+
+ setAcceptDrops( true );
+ setSelectionMode(Extended); // was extended before 2.9.0
+
+ connect( this, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(openFile(QListBoxItem*)));
+ connect( this, SIGNAL(returnPressed(QListBoxItem*)), this, SLOT(openFile(QListBoxItem*)));
+ connect( label, SIGNAL( leftClickedURL() ), this, SIGNAL( addFiles() ) );
+
+ positionLabel();
+}
+
+KMyListBox::~KMyListBox()
+{
+}
+
+KURL KMyListBox::url( int index ) const
+{
+ return static_cast<KMyListBoxItem*>( item( index ) )->url();
+}
+
+bool KMyListBox::dir( int index ) const
+{
+ return static_cast<KMyListBoxItem*>( item( index ) )->dir();
+}
+
+void KMyListBox::setPreviewSize( int size )
+{
+ previewSize = size;
+}
+
+void KMyListBox::removeItem( int index )
+{
+ KListBox::removeItem( index );
+}
+
+void KMyListBox::addFile( const KURL & filename, bool isfile )
+{
+ // Check if the URL is a file and no dir
+ // Is the file already in our list ?
+ if( !isfile && !isFile( filename ) )
+ return;
+
+ if( isInList( filename ) )
+ return;
+
+ insertItem( new KMyListBoxItem( filename, false ), -1 );
+
+ positionLabel();
+}
+
+void KMyListBox::addDirName( const KURL & dirname )
+{
+ if(!isInList( dirname ) )
+ {
+ insertItem( new KMyListBoxItem( dirname, true ), -1 );
+ positionLabel();
+ }
+}
+
+bool KMyListBox::isFile( const KURL & f, bool autoadd )
+{
+ UDSEntry entry;
+
+ NetAccess::stat( f, entry );
+ KFileItem file( entry, f );
+ if( !file.isReadable() )
+ return false;
+
+ if( file.isDir() ) {
+ if( autoadd )
+ addDir( f, "*", false, true );
+ return false;
+ }
+
+ return true;
+}
+
+void KMyListBox::addDir( const KURL & dirname, const QString & filter, bool hidden, bool recursively, bool dirnames )
+{
+ ThreadedLister* thl = new ThreadedLister( &m_add_mutex, &m_running_lister_counter, this );
+ thl->setDirname( dirname );
+ thl->setDirnames( dirnames );
+ thl->setFilter( filter );
+ thl->setHidden( hidden );
+ thl->setRecursive( recursively );
+
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ thl->start();
+}
+
+void KMyListBox::addDirName( const KURL & dirname, const QString & filter, bool hidden, bool recursive )
+{
+ KApplication::setOverrideCursor( Qt::waitCursor );
+
+ if( recursive ) {
+ ThreadedLister* thl = new ThreadedLister( &m_add_mutex, &m_running_lister_counter, this );
+ thl->setDirname( dirname );
+ thl->setDirnames( true );
+ thl->setFilter( filter );
+ thl->setHidden( hidden );
+ thl->setRecursive( recursive );
+ thl->setRecursiveDirOnlyMode( true );
+
+ thl->start();
+ } else {
+ // escape hiden directories
+ QString name = dirname.fileName();
+ if( !hidden && name.right( 1 ) != QString::fromLatin1(".") )
+ if( !isInList( dirname ) )
+ addDirName( dirname );
+
+ listerDone( NULL );
+ }
+}
+
+void KMyListBox::dropEvent(QDropEvent* e)
+{
+ if( e->source() != this )
+ e->accept(QTextDrag::canDecode(e));
+
+ KURL::List list;
+ if( KURLDrag::decode( e, list ) )
+ {
+
+ KApplication::setOverrideCursor( Qt::waitCursor );
+
+ setUpdatesEnabled( false );
+
+ for( unsigned int i = 0; i < list.count(); i++ )
+ addFile( list[i], false );
+
+ setUpdatesEnabled( true );
+ listerDone( NULL );
+ }
+}
+
+void KMyListBox::dragEnterEvent(QDragEnterEvent* e)
+{
+ if( e->source() != this )
+ e->accept(QTextDrag::canDecode(e));
+}
+
+void KMyListBox::viewportMousePressEvent( QMouseEvent* e )
+{
+ if( moving )
+ move( index( itemAt( e->pos() ) ) );
+ else {
+ KListBox::viewportMousePressEvent( e );
+ QPoint p( e->pos() );
+ QListBoxItem *i = itemAt( p );
+ if ( i ) {
+ presspos = e->pos();
+ mousePressed = TRUE;
+ }
+ }
+}
+
+void KMyListBox::viewportMouseMoveEvent( QMouseEvent* e )
+{
+ if ( mousePressed && ( presspos - e->pos() ).manhattanLength() > KApplication::startDragDistance() ) {
+ mousePressed = FALSE;
+ QListBoxItem *item = itemAt( presspos );
+ if ( item ) {
+ QStringList source = text( index( item ) );
+ for( int i = 0; i < (signed int)count(); i++ )
+ if( isSelected(i) && (i != index(item) ))
+ source.append( text(i) );
+ QUriDrag* ud = new QUriDrag(viewport());
+ ud->setUnicodeUris( source );
+ ud->drag();
+ }
+ } else
+ KListBox::viewportMouseMoveEvent( e );
+}
+
+void KMyListBox::viewportMouseReleaseEvent( QMouseEvent* e )
+{
+ mousePressed = FALSE;
+ KListBox::viewportMouseReleaseEvent( e );
+}
+
+void KMyListBox::keyPressEvent( QKeyEvent* e )
+{
+ /*
+ * TODO: Document all this keyboard commands
+ */
+ if( e->key() == Key_Control )
+ ctrlPressed = true;
+ else if( e->key() == Key_Shift )
+ shiftPressed = true;
+ else if( e->key() == Key_Up )
+ setCurrentItem( currentItem()-1 );
+ else if( e->key() == Key_Down )
+ setCurrentItem( currentItem()+1 );
+ else if( e->key() == Key_Space )
+ select( item(currentItem()) );
+ else if( e->key() == Key_Return )
+ openFile( item(currentItem()) );
+ else if( e->key() == Key_Delete )
+ emit deletePressed();
+ else if( e->key() == Key_A )
+ for( unsigned int i = 0; i < count(); i++ )
+ setSelected( i, true );
+ else if( e->key() == Key_M ) {
+ moveMode();
+ return;
+ } else if( e->key() == Key_N )
+ for( unsigned int i = 0; i < count(); i++ )
+ setSelected( i, false );
+ else if( e->key() == Key_End )
+ setCurrentItem( count()-1 );
+ else if( e->key() == Key_Home )
+ setCurrentItem( 0 );
+ else
+ e->ignore();
+
+ emit updateCount();
+ setPreview( KMyListBoxItem::preview() );
+ emit updatePreview();
+}
+
+void KMyListBox::keyReleaseEvent( QKeyEvent* e )
+{
+ if( e->key() == Key_Control )
+ ctrlPressed = false;
+ else if( e->key() == Key_Shift )
+ shiftPressed = false;
+}
+
+void KMyListBox::openFile( QListBoxItem* item )
+{
+ if( item ) {
+ KMyListBoxItem* it = static_cast<KMyListBoxItem*>(item);
+ KFileItem* fileItem = new KFileItem( KFileItem::Unknown, KFileItem::Unknown, it->url() );
+ fileItem->run();
+ delete fileItem;
+ }
+}
+
+void KMyListBox::moveMode()
+{
+ if ( !moving ) {
+ moving = true;
+ KApplication::setOverrideCursor( Qt::sizeAllCursor );
+ }
+}
+
+void KMyListBox::select( QListBoxItem* item )
+{
+ if( !ctrlPressed && !shiftPressed )
+ /* Single click on the list box,
+ * make all items but the clicked
+ * one not selected */
+ for( int i = 0; i < (signed int)count(); i++ )
+ if( i != index(item) )
+ setSelected( i, false );
+
+ if( shiftPressed ) {
+ if( currentItem() == -1 ) {
+ setSelected( item, !isSelected( item ));
+ setCurrentItem( item );
+ return;
+ }
+ if( currentItem() > index(item) ) {
+ for( int i = index(item); i <= currentItem(); i++ )
+ setSelected( i, !isSelected( i ));
+ setCurrentItem( item );
+ } else if( currentItem() < index(item) ) { /* Works !*/
+ for( int i = currentItem()+1; i <= index(item); i++ )
+ setSelected( i, !isSelected( i ));
+ } else /* c == index(item) */ /* Works !*/
+ setSelected( item, !isSelected( item ));
+ } else {
+ setSelected( item, !isSelected( item ));
+ setCurrentItem( item );
+ }
+}
+
+void KMyListBox::preview( KURL::List list )
+{
+ KIO::PreviewJob* job = KIO::filePreview( list, previewSize, previewSize, 0, 100, false, true, 0 );
+ connect( job, SIGNAL( gotPreview( const KFileItem*, const QPixmap &) ), this, SLOT( previewDone( const KFileItem*, const QPixmap &) ) );
+ connect( job, SIGNAL( failed( const KFileItem*)), this, SLOT( previewFailed( const KFileItem* ) ));
+ connect( job, SIGNAL( result( KIO::Job * ) ), this, SLOT( previewFinished() ) );
+ KApplication::setOverrideCursor( Qt::waitCursor );
+}
+
+void KMyListBox::previewDone( const KFileItem* item, const QPixmap &pixmap )
+{
+ for( unsigned int i = 0; i < count(); i++ )
+ if( url( i ) == item->url() ) {
+ KMyListBoxItem* it = static_cast<KMyListBoxItem*>(this->item( i ));
+ if( it && !pixmap.isNull() ) {
+ it->setPixmap( pixmap );
+ //updateItem( i );
+ }
+ break;
+ }
+}
+
+void KMyListBox::previewFailed( const KFileItem* item )
+{
+ for( unsigned int i = 0; i < count(); i++ )
+ if( url( i ) == item->url() ) {
+ KMyListBoxItem* it = static_cast<KMyListBoxItem*>(this->item( i ));
+ if( it ) {
+ it->setPixmap( item->pixmap( getPreviewSize(), KIcon::DefaultState ) );
+ }
+ break;
+ }
+}
+
+void KMyListBox::previewFinished()
+{
+ triggerUpdate( true ); //maybe false is enough
+ KApplication::restoreOverrideCursor();
+}
+
+void KMyListBox::setPreview( bool prv )
+{
+ KMyListBoxItem::setPreview( prv );
+
+ if( prv ) {
+ KURL::List list;
+ for( unsigned int i = 0; i < count(); i++ ) {
+ KMyListBoxItem* it = static_cast<KMyListBoxItem*>(item( i ) );
+ if( !it->hasPreview() )
+ list.append( it->url() );
+ }
+ preview( list );
+ }
+}
+
+void KMyListBox::setName( bool name )
+{
+ KMyListBoxItem::setName( name );
+ setPreview( KMyListBoxItem::preview() );
+
+ if( name ) {
+ setColumnMode( FixedNumber );
+ } else {
+ setColumnMode( FitToWidth );
+ }
+}
+
+void KMyListBox::move( int i )
+{
+ KApplication::restoreOverrideCursor();
+ moving = false;
+
+ if( !count() )
+ return;
+
+ int nbSelectedBefore = 0;
+ for( unsigned int j = 0 ; j < count() ; j++ ) {
+ if( isSelected( j ) ) {
+ if( j < (unsigned int)i )
+ nbSelectedBefore++;
+
+ KMyListBoxItem* item = new KMyListBoxItem( static_cast<KMyListBoxItem*>(this->item( j )) );
+ removeItem( j );
+ j--;
+ insertItem( item, i - nbSelectedBefore );
+ }
+ }
+}
+
+void KMyListBox::moveUp()
+{
+ if( count() == 0 )
+ return;
+
+ unsigned int i = 0;
+ setUpdatesEnabled( false );
+ do {
+ if( isSelected( i ) && i ) {
+ moveUp( i );
+
+ setSelected( i-1, true );
+ setCurrentItem( i-1 );
+ }
+ i++;
+ } while( i < count() );
+ setUpdatesEnabled( true );
+}
+
+void KMyListBox::moveUp( int i )
+{
+ if( count() == 0 )
+ return;
+
+ KMyListBoxItem* item = new KMyListBoxItem( static_cast<KMyListBoxItem*>(this->item( i )) );
+ removeItem( i );
+ insertItem( item, i - 1 );
+}
+
+void KMyListBox::moveDown()
+{
+ if( count() == 0 )
+ return;
+
+ unsigned int i = count();
+ setUpdatesEnabled( false );
+ do {
+ i--;
+ if( isSelected( i ) && (i < count()) ) {
+ moveDown( i );
+ setSelected( i+1, true );
+ setCurrentItem( i+1 );
+ }
+ } while( i > 0 );
+ setUpdatesEnabled( true );
+}
+
+void KMyListBox::moveDown( int i )
+{
+ if( count() == 0 )
+ return;
+
+ KMyListBoxItem* item = new KMyListBoxItem( static_cast<KMyListBoxItem*>(this->item( i )) );
+ removeItem( i );
+ insertItem( item, i + 1 );
+}
+
+bool KMyListBox::isInList( KURL text )
+{
+ // TODO: faster find algorithm
+ for( unsigned int i = 0; i < count(); i++ ) {
+ KMyListBoxItem* it = dynamic_cast<KMyListBoxItem*>(item( i ) );
+ if( it && it->url() == text ) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void KMyListBox::customEvent( QCustomEvent* e )
+{
+ if( e->type() == ThreadedLister::TYPE() )
+ {
+ listerDone( (ThreadedLister*)e->data() );
+ }
+}
+
+void KMyListBox::listerDone( ThreadedLister* lister )
+{
+ m_add_mutex.lock();
+
+ if( lister )
+ delete lister;
+ KApplication::restoreOverrideCursor();
+
+ setUpdatesEnabled( false );
+ setPreview( KMyListBoxItem::preview() );
+ sortList();
+ setUpdatesEnabled( true );
+
+ emit updateCount();
+ emit updatePreview();
+
+ m_add_mutex.unlock();
+}
+
+unsigned int KMyListBox::runningAddListeners()
+{
+ unsigned int u;
+
+ m_add_mutex.lock();
+ u = m_running_lister_counter;
+ m_add_mutex.unlock();
+
+ return u;
+}
+
+void KMyListBox::sortAscending()
+{
+ m_sorting = ASCENDING;
+
+ sortList();
+}
+
+void KMyListBox::sortDescending()
+{
+ m_sorting = DESCENDING;
+
+ sortList();
+}
+
+void KMyListBox::sortRandom()
+{
+ m_sorting = RANDOM;
+
+ sortList();
+}
+
+void KMyListBox::sortUnsorted()
+{
+ m_sorting = UNSORTED;
+
+ sortList();
+}
+
+void KMyListBox::sortNummeric()
+{
+ m_sorting = NUMMERIC;
+
+ sortList();
+}
+
+void KMyListBox::sortList()
+{
+ KApplication::setOverrideCursor( Qt::WaitCursor );
+
+ if( m_sorting == ASCENDING )
+ sort( true );
+ else if( m_sorting == DESCENDING )
+ sort( false );
+ else if( m_sorting == RANDOM )
+ {
+ unsigned int p = 0;
+ for( unsigned int i = 0;i<count();i++)
+ {
+ p = KApplication::random() % count();
+ if( p != i ) // This prevents the creation of a new ListBoxItem
+ // on the same position as before. It would not change
+ // the position of item, but cost a little bit of speed
+ {
+ KMyListBoxItem* item = new KMyListBoxItem( static_cast<KMyListBoxItem*>(this->item( i )) );
+ removeItem( i );
+ insertItem( item, p );
+ }
+ }
+ }
+ else if( m_sorting == NUMMERIC )
+ {
+ // a very simple bubble sort which sorts filenames by a number inside them.
+ // if no number is found a lexical comparison is performed
+ unsigned int z = count();
+ while( z-- )
+ for( unsigned int i=1;i<=z;i++)
+ {
+ KURL url1 = url( i - 1 );
+ KURL url2 = url( i );
+ if( url1.directory() != url2.directory() )
+ {
+ // different directory, do a lexical comparison
+ if( text( i - 1 ).compare( text( i ) ) >= 0 )
+ moveDown( i - 1 );
+ }
+ else
+ {
+ if( compareNummeric( url1.filename(), url2.filename() ) >= 0 )
+ moveDown( i - 1 );
+ }
+ }
+ }
+
+ KApplication::restoreOverrideCursor();
+}
+
+void KMyListBox::setSorting( int s )
+{
+ switch( s )
+ {
+ default:
+ case UNSORTED:
+ sortUnsorted();
+ break;
+ case ASCENDING:
+ sortAscending();
+ break;
+ case DESCENDING:
+ sortDescending();
+ break;
+ case RANDOM:
+ sortRandom();
+ break;
+ case NUMMERIC:
+ sortNummeric();
+ break;
+ }
+
+ emit updatePreview();
+}
+
+int KMyListBox::compareNummeric( const QString & s1, const QString & s2 )
+{
+ unsigned int z = 0;
+ unsigned int max = ( s1.length() > s2.length() ? s1.length() : s2.length() );
+
+ QString num1;
+ QString num2;
+ for( z=0;z<max;z++)
+ {
+ //if( z >= s1.length() || z >= s2.length() )
+ // break;
+
+ if( s1[z] != s2[z] )
+ {
+ if( z < s1.length() && s1[z].isDigit() )
+ num1 = findNumInString( z, s1 );
+
+ if( z < s2.length() && s2[z].isDigit() )
+ num2 = findNumInString( z, s2 );
+
+ if( num1.isNull() && num2.isNull() )
+ break;
+
+ int a = num1.toInt();
+ int b = num2.toInt();
+ if( a == b )
+ return s1.compare( s2 );
+ else
+ return ( a > b ) ? 1 : -1;
+ }
+ }
+
+ return s1.compare( s2 );
+}
+
+const QString KMyListBox::findNumInString( unsigned int pos, const QString & s )
+{
+ QString num;
+
+ for( int i = (int)pos; i >= 0; i-- )
+ if( s[i].isDigit() )
+ num.prepend( s[i] );
+ else
+ break;
+
+
+ for( unsigned int i = pos + 1; i < s.length(); i++ )
+ if( s[i].isDigit() )
+ num.append( s[i] );
+ else
+ break;
+
+ return num;
+}
+
+void KMyListBox::resizeEvent( QResizeEvent* e )
+{
+ KListBox::resizeEvent( e );
+ positionLabel();
+}
+
+void KMyListBox::clear()
+{
+ KListBox::clear();
+ positionLabel();
+}
+
+void KMyListBox::positionLabel()
+{
+ if( count() )
+ {
+ label->hide();
+ }
+ else
+ {
+ int x = (width() - label->minimumSizeHint().width()) / 2;
+ int y = (height() - label->minimumSizeHint().height()) / 2;
+ label->setGeometry( x, y, label->minimumSizeHint().width(), label->minimumSizeHint().height() );
+ label->show();
+ }
+}
+
+void KMyListBox::paintEvent( QPaintEvent* e )
+{
+ // qDebug("Updates=%i", (int)isUpdatesEnabled() );
+ //if( isUpdatesEnabled() )
+ KListBox::paintEvent( e );
+}
+
+KMyListBoxItem::KMyListBoxItem( const KMyListBoxItem* item )
+ : QListBoxItem()
+{
+ m_url = item->url();
+ m_dir = item->dir();
+ m_has_preview = false;
+ pm = *item->pixmap();
+}
+
+KMyListBoxItem::KMyListBoxItem( const KURL & u, bool b )
+ : QListBoxItem()
+{
+ m_url = u;
+ m_dir = b;
+ m_has_preview = false;
+}
+
+void KMyListBoxItem::setPixmap( const QPixmap & pix )
+{
+ KMyListBox* box = static_cast<KMyListBox*>(this->listBox());
+ pm.resize( box->getPreviewSize(), box->getPreviewSize() );
+ pm.fill( box->colorGroup().base() );
+ QPainter painter( &pm );
+ painter.drawPixmap( (pm.width()-pix.width())/2, (pm.height()-pix.height())/2, pix );
+ m_has_preview = true;
+}
+
+void KMyListBoxItem::setName( bool b )
+{
+ KMyListBoxItem::m_name = b;
+}
+
+void KMyListBoxItem::setPreview( bool b )
+{
+ KMyListBoxItem::m_preview = b;
+}
+
+void KMyListBoxItem::paint( QPainter *painter )
+{
+ if( !KMyListBoxItem::m_preview ) {
+ int itemHeight = height( listBox() );
+ QFontMetrics fm = painter->fontMetrics();
+ int yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
+ painter->drawText( 3, yPos, text() );
+ } else {
+ int itemHeight = height( listBox() );
+ int yPos;
+
+ if( pm.isNull() ) {
+ KFileItem item( KFileItem::Unknown, KFileItem::Unknown, m_url );
+ KMyListBox* box = static_cast<KMyListBox*>(this->listBox());
+ setPixmap( item.pixmap( box->getPreviewSize(), KIcon::DefaultState ) );
+ }
+
+ yPos = ( itemHeight - pm.height() ) / 2;
+ if( !isSelected() )
+ painter->drawPixmap( 3, yPos, pm);
+ else
+ {
+ KPixmap pix = KPixmapEffect::selectedPixmap( pm, listBox()->colorGroup().highlight() );
+ painter->drawPixmap( 3, yPos, pix );
+ }
+
+ if( KMyListBoxItem::m_name && !m_url.isEmpty() ) {
+ QFontMetrics fm = painter->fontMetrics();
+ yPos = ( ( itemHeight - fm.height() ) / 2 ) + fm.ascent();
+ painter->drawText( pm.width() + 5, yPos, text() );
+ }
+ }
+}
+
+int KMyListBoxItem::height( const QListBox* lb ) const
+{
+ if( !KMyListBoxItem::m_preview ) {
+ int h = listBox() ? listBox()->fontMetrics().lineSpacing() + 2 : 0;
+ return QMAX( h, QApplication::globalStrut().height() );
+ } else {
+ int h;
+ if ( KMyListBoxItem::m_name && !m_url.prettyURL().isEmpty() )
+ h = pm.height();
+ else
+ h = QMAX( pm.height(), lb->fontMetrics().lineSpacing() + 2 );
+
+ return QMAX( h, QApplication::globalStrut().height() );
+ }
+}
+
+int KMyListBoxItem::width( const QListBox* ) const
+{
+ if( !KMyListBoxItem::m_preview ) {
+ int w = listBox() ? listBox()->fontMetrics().width( text() ) + 6 : 0;
+ return QMAX( w, QApplication::globalStrut().width() );
+ } else {
+ if ( m_url.path().isEmpty() || !KMyListBoxItem::m_name)
+ return QMAX( pm.width() + 6, QApplication::globalStrut().width() );
+
+ return QMAX( pm.width() + listBox()->fontMetrics().width( text() ) + 6, QApplication::globalStrut().width() );
+ }
+}
+
+QString KMyListBoxItem::text() const
+{
+ return m_url.prettyURL( 0, m_url.isLocalFile() ? KURL::StripFileProtocol : KURL::NoAdjustements );
+}
+
+bool KMyListBoxItem::m_preview = false;
+bool KMyListBoxItem::m_name = false;
+
diff --git a/krename/kmylistbox.h b/krename/kmylistbox.h
new file mode 100644
index 0000000..b0c7a64
--- /dev/null
+++ b/krename/kmylistbox.h
@@ -0,0 +1,186 @@
+/***************************************************************************
+ kmylistbox.h - description
+ -------------------
+ begin : Tue Oct 16 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KMYLISTBOX_H
+#define KMYLISTBOX_H
+
+// KDE includes
+#include <klistbox.h>
+#include <kurl.h>
+#include <kfileitem.h>
+
+// Qt includes
+#include <qmutex.h>
+#include <qstringlist.h>
+
+class ThreadedLister;
+
+class KFileItem;
+class KURLLabel;
+class QDragObject;
+class QPixmap;
+class QPainter;
+class QPoint;
+class KMyListBox : public KListBox {
+ Q_OBJECT
+ public:
+ enum { ASCENDING = 1, DESCENDING = 2, RANDOM = 3, NUMMERIC = 4, UNSORTED = 0 };
+
+ KMyListBox(QWidget* parent=0, const char* name=0, WFlags fl=0);
+ ~KMyListBox();
+
+ void removeItem( int index );
+ void addDir( const KURL & dirname, const QString & m_filter, bool m_hidden, bool recursively, bool dirnames = false );
+ void addDirName( const KURL & dirname, const QString & m_filter, bool m_hidden, bool recursive = false );
+ void setPreview( bool prv );
+
+ inline int sorting() const { return m_sorting; }
+
+ void setName( bool name );
+
+ void move( int i );
+ void setPreviewSize( int size );
+ inline int getPreviewSize() const { return previewSize; }
+
+ KURL url( int index ) const;
+ bool dir( int index ) const;
+
+ bool isFile( const KURL & f, bool autoadd = true );
+ void positionLabel();
+
+ void clear();
+
+ /**
+ * returns the number of currently running ThreadedListers for adding files
+ * or 0 if there is no file adding in progress right now.
+ */
+ unsigned int runningAddListeners();
+
+ public slots:
+ void moveMode();
+ void moveDown();
+ void moveDown( int i );
+ void moveUp();
+ void moveUp( int i );
+ void setSorting( int s );
+
+ void addFile( const KURL & filename, bool isfile = false );
+ void addDirName( const KURL & dirname );
+
+ signals:
+ // emited when new item is drag'n'dropped into listobox
+ // or when files are removed or something similar
+ void updateCount();
+ void updatePreview();
+ void deletePressed();
+ void addFiles();
+
+ void currentlyAddingFiles();
+
+ private:
+ void preview( KURL::List list );
+
+ void dropEvent( QDropEvent* e );
+ void dragEnterEvent( QDragEnterEvent* e );
+ void viewportMousePressEvent( QMouseEvent* e );
+ void viewportMouseReleaseEvent( QMouseEvent* e );
+ void viewportMouseMoveEvent( QMouseEvent* e );
+ void keyPressEvent( QKeyEvent* e );
+ void keyReleaseEvent( QKeyEvent* e );
+
+ bool isInList( KURL text );
+
+ void sortAscending();
+ void sortDescending();
+ void sortUnsorted();
+ void sortRandom();
+ void sortNummeric();
+ void sortList();
+ void setButtonText();
+
+ int compareNummeric( const QString & s1, const QString & s2 );
+ const QString findNumInString( unsigned int pos, const QString & s );
+
+ private slots:
+ void openFile( QListBoxItem* item );
+ void select( QListBoxItem* item );
+
+ void previewDone( const KFileItem* item, const QPixmap &pixmap );
+ void previewFailed( const KFileItem* item );
+ void previewFinished();
+
+ void listerDone( ThreadedLister* lister );
+
+ protected:
+ void resizeEvent( QResizeEvent* e );
+ void customEvent( QCustomEvent* e );
+ void paintEvent( QPaintEvent* e );
+
+ bool drag;
+ bool mousePressed;
+ bool ctrlPressed;
+ bool shiftPressed;
+ bool moving;
+ int previewSize;
+ int m_sorting;
+
+ unsigned int m_running_lister_counter;
+ QMutex m_add_mutex;
+
+ KURLLabel* label;
+
+ QDragObject* drobj;
+ QPoint presspos;
+};
+
+class KMyListBoxItem : public QListBoxItem {
+ public:
+ KMyListBoxItem( const KMyListBoxItem* item );
+ KMyListBoxItem( const KURL&, bool );
+
+ bool hasPreview() const { return m_has_preview; }
+
+ static void setName( bool b );
+ static void setPreview( bool b );
+ void setPixmap( const QPixmap & pix );
+
+ static bool preview() { return m_preview; }
+ static bool name() { return m_name; }
+
+ inline bool dir() const { return m_dir; }
+ inline KURL url() const { return m_url; }
+ inline const QPixmap* pixmap() const { return &pm; }
+
+ private:
+ QString text() const;
+
+ protected:
+ virtual void paint( QPainter *painter );
+ virtual int width( const QListBox* ) const;
+ virtual int height( const QListBox* lb ) const;
+
+ private:
+ KURL m_url;
+ bool m_dir;
+ bool m_has_preview;
+ QPixmap pm;
+
+ static bool m_preview;
+ static bool m_name;
+};
+
+#endif
diff --git a/krename/kmylistview.cpp b/krename/kmylistview.cpp
new file mode 100644
index 0000000..6c6cdbc
--- /dev/null
+++ b/krename/kmylistview.cpp
@@ -0,0 +1,177 @@
+/***************************************************************************
+ kmylistview.cpp - description
+ -------------------
+ begin : Mit M� 27 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "kmylistview.h"
+#include "myinputdialog.h"
+
+// KDE includes
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kpopupmenu.h>
+#include <krun.h>
+
+KMyListView::KMyListView( QValueList<manualchanges>* _changes, KMyListBox* _list, QWidget* parent, const char* name )
+ :KListView(parent, name )
+{
+ changes = _changes;
+ list = _list;
+
+ connect( this, SIGNAL( doubleClicked(QListViewItem*, const QPoint&, int) ),
+ this, SLOT( changeItem(QListViewItem*, const QPoint&, int) ) );
+ connect( this, SIGNAL( contextMenuRequested(QListViewItem*, const QPoint&, int) ),
+ this, SLOT( showContext(QListViewItem*, const QPoint&, int) ) );
+ setAllColumnsShowFocus( true );
+}
+
+KMyListView::~KMyListView()
+{ }
+
+
+void KMyListView::changeItem( QListViewItem* item, const QPoint&, int )
+{
+ if(!item) return;
+
+ KURL url = list->url( itemIndex( item ) );
+
+ bool revertenable = false;
+ QValueList<manualchanges>::iterator it;
+ for ( it = changes->begin(); it != changes->end(); ++it )
+ if( (*it).url == url ) {
+ changes->remove( it );
+ revertenable = true;
+ break;
+ }
+
+
+ MyInputDialog i( item->text( 1 ), revertenable );
+ i.setInputFilename( item->text( 0 ) );
+
+ int code = i.exec();
+ if( code == MyInputDialog::OK ) {
+ manualchanges tmp = {
+ url,
+ i.filename()
+ };
+
+ changes->append( tmp );
+ emit itemChanged();
+ } else if( code == MyInputDialog::USE_KRENAME )
+ emit itemChanged();
+}
+
+void KMyListView::showContext( QListViewItem* item, const QPoint& pos, int )
+{
+ KPopupMenu* menu = new KPopupMenu( this );
+ if(item) {
+ menu->insertTitle( list->text( itemIndex( item ) ), 0, 0 );
+ menu->insertItem( i18n("&Change Filename Manually"), this, SLOT( changeCurrentItem() ), Key_F2 );
+ menu->insertSeparator();
+ menu->insertItem( BarIcon("exec"), i18n("Open"), this, SLOT( openCurrent() ) );
+ menu->insertSeparator();
+ }
+ menu->insertItem( BarIcon("fileopen"), i18n("&Add..."), this, SLOT( addFiles() ) );
+ if(item)
+ menu->insertItem( BarIcon("editdelete"), i18n("&Remove"), this, SLOT( removeCurrentItem() ) );
+
+ menu->popup( pos );
+}
+
+void KMyListView::removeCurrentItem()
+{
+ int index = itemIndex( currentItem() );
+ emit removeItem( index );
+}
+
+void KMyListView::addFiles()
+{
+ emit addFile();
+}
+
+void KMyListView::changeCurrentItem()
+{
+ changeItem( currentItem(), QPoint( 0, 0 ), 0 );
+}
+
+void KMyListView::openCurrent()
+{
+ if( currentItem() )
+ new KRun( list->text( itemIndex( currentItem() ) ) );
+}
+
+/////////////////////////////////////////////////////////////
+
+KMyListViewItem::KMyListViewItem(QListView *parent)
+ : KListViewItem(parent)
+{ }
+
+KMyListViewItem::KMyListViewItem(QListViewItem *parent)
+ : KListViewItem(parent)
+{ }
+
+KMyListViewItem::KMyListViewItem(QListView *parent, QListViewItem *after)
+ : KListViewItem(parent, after)
+{ }
+
+KMyListViewItem::KMyListViewItem(QListViewItem *parent, QListViewItem *after)
+ : KListViewItem(parent, after)
+{ }
+
+KMyListViewItem::KMyListViewItem(bool m, QListView *parent,
+ QString label1, QString label2, QString label3, QString label4,
+ QString label5, QString label6, QString label7, QString label8)
+ : KListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8)
+{
+ modified = m;
+}
+
+KMyListViewItem::KMyListViewItem(bool m, QListViewItem *parent,
+ QString label1, QString label2, QString label3, QString label4,
+ QString label5, QString label6, QString label7, QString label8)
+ : KListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8)
+{
+ modified = m;
+}
+
+KMyListViewItem::KMyListViewItem(bool m, QListView *parent, QListViewItem *after,
+ QString label1, QString label2, QString label3, QString label4,
+ QString label5, QString label6, QString label7, QString label8)
+ : KListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8)
+{
+ modified = m;
+}
+
+KMyListViewItem::KMyListViewItem(QListViewItem *parent, QListViewItem *after,
+ QString label1, QString label2, QString label3, QString label4,
+ QString label5, QString label6, QString label7, QString label8)
+ : KListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8)
+{ }
+
+KMyListViewItem::~KMyListViewItem()
+{ }
+
+void KMyListViewItem::paintCell( QPainter *p, const QColorGroup &cg,
+ int column, int width, int alignment )
+{
+ QColorGroup _cg( cg );
+ QColor c = _cg.text();
+ if( modified )
+ _cg.setColor( QColorGroup::Text, Qt::red );
+
+ KListViewItem::paintCell( p, _cg, column, width, alignment );
+ _cg.setColor( QColorGroup::Text, c );
+}
+
diff --git a/krename/kmylistview.h b/krename/kmylistview.h
new file mode 100644
index 0000000..da1dd29
--- /dev/null
+++ b/krename/kmylistview.h
@@ -0,0 +1,94 @@
+/***************************************************************************
+ kmylistview.h - description
+ -------------------
+ begin : Mit M� 27 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KMYLISTVIEW_H
+#define KMYLISTVIEW_H
+
+#include "batchrenamer.h"
+#include "kmylistbox.h"
+#include <klistview.h>
+#include <qvaluelist.h>
+
+class QMouseEvent;
+class KMyListView : public KListView {
+ Q_OBJECT
+ public:
+ KMyListView( QValueList<manualchanges>* _changes, KMyListBox* _list, QWidget* parent=0, const char* name=0 );
+ ~KMyListView();
+
+ signals:
+ void itemChanged();
+ void removeItem(int);
+ void addFile();
+
+ private slots:
+ void changeItem( QListViewItem* item, const QPoint&, int );
+ void showContext( QListViewItem* item, const QPoint& pos, int );
+ void removeCurrentItem();
+ void addFiles();
+ void changeCurrentItem();
+ void openCurrent();
+
+ private:
+ QValueList<manualchanges>* changes;
+ KMyListBox* list;
+};
+
+/////////////////////////////////////////////////////////////
+class QColor;
+class QString;
+class KMyListViewItem : public KListViewItem {
+ public:
+ KMyListViewItem(QListView *parent);
+ KMyListViewItem(QListViewItem *parent);
+ KMyListViewItem(QListView *parent, QListViewItem *after);
+ KMyListViewItem(QListViewItem *parent, QListViewItem *after);
+
+ KMyListViewItem(bool m, QListView *parent,
+ QString, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null);
+
+ KMyListViewItem(bool m, QListViewItem *parent,
+ QString, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null);
+
+ KMyListViewItem(bool m, QListView *parent, QListViewItem *after,
+ QString, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null);
+
+ KMyListViewItem(QListViewItem *parent, QListViewItem *after,
+ QString, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null,
+ QString = QString::null, QString = QString::null);
+
+ virtual ~KMyListViewItem();
+
+ void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment );
+
+ private:
+ bool modified;
+};
+
+
+#endif
diff --git a/krename/krecursivelister.cpp b/krename/krecursivelister.cpp
new file mode 100644
index 0000000..94d96b4
--- /dev/null
+++ b/krename/krecursivelister.cpp
@@ -0,0 +1,113 @@
+/***************************************************************************
+ krecursivelister.cpp - description
+ -------------------
+ begin : Fri Aug 31 2001
+ copyright : (C) 2001 by Jonathon Sim
+ email : jonathonsim@iname.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. *
+ * *
+ ***************************************************************************/
+
+#include <qtimer.h>
+
+#include "krecursivelister.h"
+
+KRecursiveLister::KRecursiveLister(QObject *parent, const char *name ) : QObject(parent,name) {
+ lister = 0L;
+ filelist.clear();
+ dirlist.clear();
+ dirtree.clear();
+ allItems.setAutoDelete( true ); // only there to delete all items
+ m_hidden = false;
+ m_dirs = false;
+ m_filter = QString::null;
+}
+
+KRecursiveLister::~KRecursiveLister(){
+ delete lister;
+}
+
+void KRecursiveLister::cleanUp()
+{
+ filelist.clear();
+ dirlist.clear();
+}
+/** Starts listing the specified url */
+void KRecursiveLister::openURL(const KURL& url ){
+ filelist.clear();
+ dirlist.clear();
+ startListing(url);
+}
+
+/** Returns the list of fileitems found. */
+const KFileItemList & KRecursiveLister::items(){
+ return filelist;
+}
+
+/** handles completion of a listing. */
+void KRecursiveLister::slotListingComplete(){
+ KFileItemList templist=lister->items();
+
+ KFileItem * item;
+ KFileItem * newitem;
+ for( item = templist.first(); item != 0; item=templist.next() )
+ {
+ if (item->isDir()) {
+ newitem= new KFileItem(*item);
+ dirlist.append(newitem);//Used for recursing the directories
+ dirtree.append(newitem);//Returned to user on request.
+ allItems.append(newitem);
+ }
+ else {
+ newitem= new KFileItem(*item);
+ filelist.append(newitem);
+ allItems.append(newitem);
+ }
+ }
+
+ QTimer::singleShot( 0, this, SLOT( listNextDirectory() ));
+}
+
+/** Starts listing the specified url */
+void KRecursiveLister::startListing(const KURL& url){
+ if (!lister) {
+ lister=new KDirLister(true);
+ lister->setShowingDotFiles( m_hidden );
+ lister->setNameFilter( m_filter );
+ lister->setDirOnlyMode( m_dirs );
+ connect(lister,SIGNAL(completed()), this, SLOT(slotListingComplete()) );
+ }
+
+ lister->openURL( url, false, false );
+}
+
+void KRecursiveLister::listNextDirectory()
+{
+ if ( dirlist.isEmpty() )
+ emit completed();
+ else
+ {
+ KFileItem * nextdir=dirlist.last();
+ KURL url = nextdir->url();
+ dirlist.removeLast();
+ startListing( url );
+ }
+}
+
+/** Stops the listing */
+void KRecursiveLister::stop(){
+ lister->stop();
+}
+
+/** Returns the subdirectories found by the listing */
+const KFileItemList& KRecursiveLister::dirs(){
+ return dirtree;
+}
+#include "krecursivelister.moc"
diff --git a/krename/krecursivelister.h b/krename/krecursivelister.h
new file mode 100644
index 0000000..b470772
--- /dev/null
+++ b/krename/krecursivelister.h
@@ -0,0 +1,107 @@
+/***************************************************************************
+ krecursivelister.h - description
+ -------------------
+ begin : Fri Aug 31 2001
+ copyright : (C) 2001 by Jonathon Sim
+ email : jonathonsim@iname.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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRECURSIVELISTER_H
+#define KRECURSIVELISTER_H
+
+#include <qwidget.h>
+#include <qobject.h>
+#include <kdirlister.h>
+#include <kfileitem.h>
+#include <qguardedptr.h>
+
+/**A convienience class that recursively lists a directory
+ *@author Jonathon Sim
+ *
+ * Modified by Dominik Seichter to support a name filter,
+ * dir only mode, support for showing hidden files on demand
+ * and support for listing directories along with files.
+ */
+
+class KRecursiveLister : public QObject {
+ Q_OBJECT
+
+public:
+ KRecursiveLister(QObject *parent=0, const char *name=0);
+ ~KRecursiveLister();
+
+ /** Returns the list of fileitems found. */
+ const KFileItemList & items();
+
+ /** sets wether hidden files shall be listed */
+ inline void setShowingDotFiles( bool dotfiles );
+
+ /** filter to be used */
+ inline void setNameFilter( const QString & filter );
+
+ /** list only directories */
+ inline void setDirOnlyMode( bool dirsOnly );
+
+ /** Starts listing the specified url */
+ void openURL(const KURL& url);
+
+ /** Stops the listing */
+ void stop();
+
+ /** Returns the subdirectories found by the listing */
+ const KFileItemList& dirs();
+
+ void cleanUp();
+
+ signals: // Signals
+ /** Listing is complete */
+ void completed();
+
+protected slots: // Protected slots
+
+ /** handles completion of a listing. */
+ void slotListingComplete();
+ void listNextDirectory();
+
+protected: // Protected methods
+ /** Starts listing the specified url */
+ void startListing(const KURL& url);
+
+ //Protected variables
+ KFileItemList filelist; //Files found at url
+ KFileItemList dirlist; //Dirs remaining to list
+ KFileItemList dirtree;
+ KFileItemList allItems;
+ QGuardedPtr<KDirLister> lister; //The current KDirLister
+
+ bool m_hidden;
+ bool m_dirs;
+ QString m_filter;
+};
+
+void KRecursiveLister::setShowingDotFiles( bool dotfiles )
+{
+ m_hidden = dotfiles;
+}
+
+void KRecursiveLister::setNameFilter( const QString & filter )
+{
+ m_filter = filter;
+}
+
+void KRecursiveLister::setDirOnlyMode( bool dirsOnly )
+{
+ m_dirs = dirsOnly;
+}
+
+
+#endif
diff --git a/krename/krename.desktop b/krename/krename.desktop
new file mode 100644
index 0000000..8504a0b
--- /dev/null
+++ b/krename/krename.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Application
+Exec=krename -caption "%c" %i %m %U
+Icon=krename.png
+MiniIcon=krename.png
+DocPath=krename/index.html
+Comment=A batch renamer
+Comment[de]=Ein Batch Umbenenner
+Terminal=false
+Name=KRename
+Categories=Qt;KDE;Utility;
diff --git a/krename/krename.h b/krename/krename.h
new file mode 100644
index 0000000..830975a
--- /dev/null
+++ b/krename/krename.h
@@ -0,0 +1,30 @@
+/***************************************************************************
+ krename.h - description
+ -------------------
+ begin : Die Mai 15 15:34:19 CEST 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRENAME_H
+#define KRENAME_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// Why the hell am I still using this file ? ;)
+// -- Just for config.h and we need a sourcefile
+// with KRename in its name, since krename.cpp
+// is missing since version 0.1
+
+#endif // KRENAME_H
diff --git a/krename/krename_dir.desktop b/krename/krename_dir.desktop
new file mode 100644
index 0000000..f605f49
--- /dev/null
+++ b/krename/krename_dir.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Actions=Rename
+Encoding=UTF-8
+ServiceTypes=inode/directory
+
+[Desktop Action Rename]
+Exec=krename -r %U
+Name=Rename with KRename
+Name[de]=Mit KRename umbenennen
+Name[es]=Renombrar con KRename
+Name[fr]=Renommer avec KRename
+Icon=krename
diff --git a/krename/krename_system_default_tabbed.xml b/krename/krename_system_default_tabbed.xml
new file mode 100644
index 0000000..82b6d50
--- /dev/null
+++ b/krename/krename_system_default_tabbed.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE KRenameProfile>
+<krename>
+ <version version="3.0.3rc1" />
+ <settings fileplugins="1" wizard="0" />
+ <filename extension_start="1" extension_enabled="1" extension="$" filename="$" >
+ <replace/>
+ <numbering step="1" start="1" skip="" />
+ </filename>
+ <destination undoscript="" mode="2" undo="0" overwrite="0" directory="" />
+ <files names="1" sorting="0" preview="0" />
+</krename>
diff --git a/krename/krename_system_default_wizard.xml b/krename/krename_system_default_wizard.xml
new file mode 100644
index 0000000..f796b31
--- /dev/null
+++ b/krename/krename_system_default_wizard.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE KRenameProfile>
+<krename>
+ <version version="3.0.3rc1" />
+ <settings fileplugins="1" wizard="1" />
+ <filename extension_start="1" extension_enabled="1" extension="$" filename="$" >
+ <replace/>
+ <numbering step="1" start="1" skip="" />
+ </filename>
+ <destination undoscript="" mode="2" undo="0" overwrite="0" directory="" />
+ <files names="1" sorting="0" preview="0" />
+</krename>
diff --git a/krename/krenamedcop.h b/krename/krenamedcop.h
new file mode 100644
index 0000000..7e4f4ed
--- /dev/null
+++ b/krename/krenamedcop.h
@@ -0,0 +1,55 @@
+/***************************************************************************
+ krenamedcop.h - description
+ -------------------
+ begin : Sat Dec 27 23:54:28 CET 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRENAMEDCOP_H
+#define KRENAMEDCOP_H
+
+#include <dcopobject.h>
+#include <qstringlist.h>
+#include <kurl.h>
+
+class KRenameDCOP : virtual public DCOPObject
+{
+ K_DCOP
+
+ public:
+ k_dcop:
+ virtual void addFileOrDir( const QString & name ) = 0;
+ virtual void addDir( const QString & name, const QString & filter, bool recursive, bool hidden, bool dirnames ) = 0;
+ virtual void updatePre() = 0;
+
+ virtual void setFileNameTemplate( const QString & t ) = 0;
+ virtual const QString fileNameTemplate() const = 0;
+
+ virtual void setExtensionTemplate( const QString & t ) = 0;
+ virtual const QString extensionTemplate() const = 0;
+
+ virtual void setUseExtension( bool b ) = 0;
+ virtual bool useExtension() const = 0;
+
+ virtual void setCounterStart( int index ) = 0;
+ virtual int counterStart() const = 0;
+
+ virtual void start() = 0;
+
+ virtual QStringList tokens() const = 0;
+
+ virtual QString parseString( const QString & token, const QString & string ) = 0;
+};
+
+#endif /* KRENAMEDCOP_H */
+
diff --git a/krename/krenameimpl.cpp b/krename/krenameimpl.cpp
new file mode 100644
index 0000000..e321185
--- /dev/null
+++ b/krename/krenameimpl.cpp
@@ -0,0 +1,1836 @@
+/***************************************************************************
+ krenameimpl.cpp - description
+ -------------------
+ begin : Die Mai 20 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "krenameimpl.h"
+
+// Own includes
+#include "ProgressDialog.h"
+#include "confdialog.h"
+#include "fileoperation.h"
+#include "kmylistview.h"
+#include "kmyhistorycombo.h"
+#include "pluginloader.h"
+#include "replacedialog.h"
+#include "undodialog.h"
+#include "helpdialog.h"
+#include "coorddialog.h"
+#include "numberdialog.h"
+#include "firststartdlg.h"
+#include "wizard.h"
+#include "tabs.h"
+#include "dsdirselectdialog.h"
+#include "krenamedcop.h"
+#include "profiledlg.h"
+
+// KDE includes
+#include <dcopclient.h>
+#include <kaboutapplication.h>
+#include <kapplication.h>
+#include <kaction.h>
+#include <kcmdlineargs.h>
+#include <kdirselectdialog.h>
+#include <kfiledialog.h>
+#include <kfileitem.h>
+#include <khelpmenu.h>
+#include <kiconloader.h>
+#include <kmessagebox.h>
+#include <kmenubar.h>
+#include <kpopupmenu.h>
+#include <kurlrequester.h>
+#include <ktempfile.h>
+#include <klocale.h>
+#include <kio/netaccess.h>
+
+// QT includes
+#include <qbuttongroup.h>
+#include <qcursor.h>
+#include <qgrid.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qradiobutton.h>
+#include <qrect.h>
+#include <qregexp.h>
+#include <qtabwidget.h>
+#include <qtimer.h>
+#include <qtooltip.h>
+#include <qvgroupbox.h>
+#include <qvbox.h>
+#include <qvbuttongroup.h>
+#include <qwidget.h>
+#include <qwidgetstack.h>
+
+#define ID_WIZARD 2905
+#define ID_TAB 2904
+
+QString pageTitle[] = {
+ I18N_NOOP( "F&iles" ),
+ I18N_NOOP( "Des&tination" ),
+ I18N_NOOP( "P&lugins" ),
+ I18N_NOOP( "File&name" )
+};
+
+KPushButton* createButton( KGuiItem item, QWidget* parent )
+{
+ return new KPushButton( item.iconSet(), item.text(), parent );
+}
+
+KRenameImpl::KRenameImpl( QWidget* p, KMenuBar* m, QPushButton* finish )
+ : DCOPObject( "KRename" ), QObject( (QObject*)p ),
+ parent( p ), menuBar( m ), finishButton( finish )
+{
+ m_hasCommandlineProfile = false;
+
+ // Load Plugins
+ plugin = PluginLoader::instance();
+ helpDialogData = new HelpDialogData();
+ // Maybe parent instead of 0 but might crash when switching from wizard to tab mode
+ helpDialog = new HelpDialog( helpDialogData, NULL, NULL, false );
+
+ m_switching = false;
+
+ kapp->dcopClient()->registerAs( kapp->name() );
+
+}
+
+KRenameImpl::~KRenameImpl()
+{
+ delete helpDialog;
+}
+
+int KRenameImpl::numRealTimePreview = -1;
+
+void KRenameImpl::setup( bool wizardmode )
+{
+ parent->setCaption( "KRename" ); // "KRename by Dominik Seichter
+ setupActions();
+ setupPages();
+ updateCount();
+
+ connect( buttonAdd, SIGNAL( clicked() ), this, SLOT( addFile() ));
+ connect( buttonRemoveAll, SIGNAL( clicked()), this, SLOT( clearList() ));
+ connect( buttonRemove, SIGNAL( clicked()), this, SLOT( removeFile() ));
+ connect( buttonHelp, SIGNAL( clicked()), this, SLOT( showTokenHelp() ));
+ connect( finishButton, SIGNAL( clicked()), this, SLOT( start() ));
+
+ connect( checkExtension, SIGNAL( clicked()), this, SLOT( enableControls() ));
+ connect( optionRename, SIGNAL( clicked()), this, SLOT( enableControls() ));
+ connect( optionMove, SIGNAL( clicked()), this, SLOT( enableControls() ));
+ connect( optionCopy, SIGNAL( clicked()), this, SLOT( enableControls() ));
+ connect( optionLink, SIGNAL( clicked()), this, SLOT( enableControls() ));
+ connect( checkUndoScript, SIGNAL( clicked()), this, SLOT( enableControls() ));
+
+ connect( fileList, SIGNAL( updateCount()), this, SLOT( updateCount() ));
+ connect( fileList, SIGNAL( updatePreview()), this, SLOT( updatePreview() ));
+ connect( fileList, SIGNAL( deletePressed()), this, SLOT( removeFile() ));
+ connect( fileList, SIGNAL( addFiles()), this, SLOT( addFile() ));
+ connect( buttonUp, SIGNAL( clicked()), fileList, SLOT( moveUp() ));
+ connect( buttonDown, SIGNAL( clicked()), fileList, SLOT( moveDown() ));
+ connect( buttonUp, SIGNAL( clicked()), this, SLOT( updatePreview() ));
+ connect( buttonDown, SIGNAL( clicked()), this, SLOT( updatePreview() ));
+ connect( buttonUp2, SIGNAL( clicked()), this, SLOT( moveUp() ));
+ connect( buttonDown2, SIGNAL( clicked()), this, SLOT( moveDown() ));
+ connect( buttonReplace, SIGNAL( clicked()), this, SLOT( replace() ));
+ connect( buttonEasyReplace, SIGNAL( clicked()), this, SLOT( replace() ));
+ connect( buttonCoord, SIGNAL( clicked()), this, SLOT( getCoordinates() ));
+ connect( comboSort, SIGNAL( activated(int)), fileList, SLOT( setSorting(int) ));
+
+ connect( filename, SIGNAL( delayedTextChanged() ), this, SLOT( updatePreview() ));
+ connect( extemplate, SIGNAL( delayedTextChanged() ), this, SLOT( updatePreview() ));
+ connect( checkExtension, SIGNAL( clicked()), this, SLOT( updatePreview() ));
+ connect( comboExtension, SIGNAL( activated(int) ), this, SLOT( updatePreview() ));
+ connect( checkPreview, SIGNAL( clicked()), this, SLOT( toggleImagePreview() ));
+ connect( preview, SIGNAL( itemChanged() ), this, SLOT( updatePreview() ));
+ connect( preview, SIGNAL( removeItem(int) ), this, SLOT( removeFile(int) ));
+ connect( preview, SIGNAL( addFile() ), this, SLOT( addFile() ));
+ connect( undorequester, SIGNAL( urlSelected(const QString &)), this, SLOT( changeUndoScriptName() ));
+ connect( kapp, SIGNAL( aboutToQuit() ), this, SLOT( saveConfig() ) );
+ connect( buttonMove, SIGNAL( clicked()), fileList, SLOT( moveMode() ));
+ connect( checkName, SIGNAL( clicked()), this, SLOT( toggleName() ));
+ connect( buttonNumber, SIGNAL( clicked()), this, SLOT( changeNumbers() ));
+
+ // Load Configuration
+ loadConfig();
+ page_1->setEnabled( true );
+ KApplication::restoreOverrideCursor();
+
+ filename->setText( "$" ); // no i18n() ! ;)
+ extemplate->setText( "$" );
+
+ // do it now so that it can be overwritten by commandline args
+ setWizardMode( wizardmode );
+
+ parseCommandline();
+ enableControls();
+}
+
+const QString KRenameImpl::title( int index ) const
+{
+ return i18n( pageTitle[index] );
+}
+
+void KRenameImpl::parseCommandline()
+{
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ QCStringList optlist = args->getOptionList ( "r" );
+ for (QCStringList::ConstIterator it=optlist.begin(); it!=optlist.end(); ++it)
+ {
+
+ KURL url;
+ url.setPath( *it );
+ fileList->addDir( url, "*", false, true, false );
+ }
+
+ //fileList->setUpdatesEnabled( false );
+ //fileList->viewport()->setUpdatesEnabled( false );
+ for( int i = 0; i < args->count(); i++)
+ fileList->addFile( args->url( i ) );
+ //fileList->viewport()->setUpdatesEnabled( true );
+ //fileList->setUpdatesEnabled( true );
+
+ // load the profile first, so that we do not overwrite other
+ // commandline settings
+ QCString templ = args->getOption( "profile" );
+ if( !templ.isEmpty() )
+ {
+ m_hasCommandlineProfile = true;
+ ProfileManager::loadProfile( QString( templ ), this );
+ }
+
+ if( !args->isSet( "previewitems" ) )
+ numRealTimePreview = -1;
+ else
+ numRealTimePreview = QString( args->getOption( "previewitems" ) ).toInt();
+
+ templ = args->getOption( "template" );
+ if( !templ.isEmpty() )
+ filename->setText( templ );
+
+ templ = args->getOption( "extension" );
+ if( !templ.isEmpty() )
+ {
+ extemplate->setText( templ );
+ checkExtension->setChecked( false );
+ }
+
+ templ = args->getOption( "copy" );
+ if( !templ.isEmpty() )
+ {
+ urlrequester->setURL( templ );
+ optionCopy->setChecked( true );
+ }
+
+ templ = args->getOption( "move" );
+ if( !templ.isEmpty() )
+ {
+ urlrequester->setURL( templ );
+ optionMove->setChecked( true );
+ }
+
+ QCStringList uselist = args->getOptionList ( "use-plugin" );
+ if( !uselist.isEmpty() )
+ {
+ for(unsigned int i = 0; i < uselist.count(); i++ )
+ uselist[i] = uselist[i].lower();
+
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plugin->libs );
+ while ( it.current() )
+ {
+ if( uselist.contains( (*it)->plugin->getName().lower().utf8() ) )
+ (*it)->check->setChecked( true );
+
+ ++it;
+ }
+
+ pluginHelpChanged();
+ }
+
+ bool startnow = args->isSet( "start" );
+
+ // Free some memory
+ args->clear();
+
+ enableControls();
+ updateCount();
+ updatePreview();
+
+ if( fileList->count() )
+ {
+ // we got already filenames over the commandline, so show directly the last
+ // page of the wizard
+ emit showPage( m_wizard ? 3 : 4 );
+ }
+
+ if( startnow )
+ {
+ // As file adding runs in a another trhread,
+ // there might be adding in progress but not yet
+ // all files in the list.
+ // so let's wait for file adding to finish first
+ // before starting.
+ while( fileList->runningAddListeners() > 0 )
+ kapp->processEvents();
+
+ if( fileList->count() )
+ // start renaming
+ QTimer::singleShot( 200, this, SLOT( start() ) );
+ }
+}
+
+void KRenameImpl::setupActions()
+{
+ KActionCollection* actionCollection = new KActionCollection( this );
+
+ KPopupMenu* mnuExtra = new KPopupMenu( parent );
+ KPopupMenu* mnuSettings = new KPopupMenu( parent );
+ KHelpMenu* mnuHelp = new KHelpMenu( parent );
+
+ menuBar->insertItem( i18n("E&xtras"), mnuExtra );
+ mnuExtra->insertItem( i18n("&Profiles..."), this, SLOT( manageProfiles() ) );
+ mnuExtra->insertSeparator();
+ mnuExtra->insertItem( SmallIcon("undo"), i18n("&Undo Old Renaming Action..."), this, SLOT( undo() ) );
+ menuBar->insertItem( i18n("&Settings"), mnuSettings );
+ menuBar->insertSeparator();
+ menuBar->insertItem( i18n("&Help"), mnuHelp->menu() );
+
+ KAction* prefAct = KStdAction::preferences( this, SLOT(preferences()), actionCollection );
+ loadPlugins = new KAction( i18n("&Load KDE file plugins"), 0, this, SLOT( loadFilePlugins() ), actionCollection );
+ KAction* reloadAct = new KAction( i18n("&Reload Plugin Data"), 0, this, SLOT( reloadFilePluginData() ), actionCollection );
+
+ prefAct->plug( mnuSettings );
+ mnuSettings->insertSeparator();
+ loadPlugins->plug( mnuSettings );
+ reloadAct->plug( mnuSettings );
+
+ connect( mnuHelp, SIGNAL(showAboutApplication()), this, SLOT(about()));
+}
+
+void KRenameImpl::setupPages()
+{
+ setupPage1();
+ setupPage2();
+ setupPage3();
+ setupPage4();
+
+ // Disable dirname ;)
+ enableControls();
+}
+
+void KRenameImpl::setupPage1()
+{
+ page_1 = new QWidget( parent );
+
+ pageLayout = new QHBoxLayout( page_1, 11, 6 );
+ Layout3 = new QVBoxLayout( 0, 0, 6 );
+ Layout4 = new QHBoxLayout( 0, 0, 6 );
+ Layout5 = new QVBoxLayout( 0, 0, 6 );
+
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+ QSpacerItem* spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+
+ fileList = new KMyListBox( page_1 );
+
+ buttonAdd = new KPushButton( page_1 );
+ buttonAdd->setText( i18n( "&Add..." ) );
+
+ buttonRemove = new KPushButton( page_1 );
+ buttonRemove->setText( i18n( "Re&move" ) );
+
+ buttonRemoveAll = new KPushButton( page_1 );
+ buttonRemoveAll->setText( i18n( "R&emove All" ) );
+
+ comboSort = new KComboBox( false, page_1 );
+ comboSort->insertItem( i18n("Sort: Unsorted") );
+ comboSort->insertItem( i18n("Sort: Ascending") );
+ comboSort->insertItem( i18n("Sort: Descending") );
+ comboSort->insertItem( i18n("Sort: Random") );
+ comboSort->insertItem( i18n("Sort: Numeric") );
+
+ checkPreview = new QCheckBox( page_1 );
+ checkPreview->setText( i18n("&Preview") );
+
+ labelCount = new QLabel( page_1 );
+
+ buttonUp = new KPushButton( page_1 );
+ buttonUp->setPixmap( BarIcon( "1uparrow" ) );
+
+ buttonDown = new KPushButton( page_1 );
+ buttonDown->setPixmap( BarIcon( "1downarrow" ) );
+
+ checkName = new QCheckBox( page_1 );
+ checkName->setText( i18n("&Display name") );
+
+ buttonMove = new KPushButton( page_1 );
+ buttonMove->setPixmap( BarIcon( "move" ) );
+
+ Layout5->addWidget( buttonUp );
+ Layout5->addWidget( buttonMove );
+ Layout5->addWidget( buttonDown );
+
+ Layout4->addLayout( Layout5 );
+ Layout4->addItem( spacer2 );
+
+ Layout3->addWidget( buttonAdd );
+ Layout3->addWidget( buttonRemove );
+ Layout3->addWidget( buttonRemoveAll );
+ Layout3->addWidget( comboSort );
+ Layout3->addWidget( checkPreview );
+ Layout3->addWidget( checkName );
+ Layout3->addWidget( labelCount );
+ Layout3->addItem( spacer );
+ Layout3->addLayout( Layout4 );
+ Layout3->addItem( spacer );
+
+ pageLayout->addWidget( fileList );
+ pageLayout->setStretchFactor( fileList, 2 );
+ pageLayout->addLayout( Layout3 );
+
+ emit pageDone( page_1, i18n( pageTitle[0] ) );
+
+ QToolTip::add( buttonAdd, i18n( "Add one or more files or directories" ) );
+ QToolTip::add( buttonRemove, i18n( "Remove selected files" ) );
+ QToolTip::add( buttonRemoveAll, i18n( "Remove all files" ) );
+ QToolTip::add( checkPreview, i18n( "Enable/disable preview of pictures." ) );
+ QToolTip::add( labelCount, i18n( "Displays the number of files in the list." ) );
+ QToolTip::add( buttonUp, i18n( "Move selected items up" ));
+ QToolTip::add( buttonDown, i18n( "Move selected items down" ));
+ QToolTip::add( checkName, i18n( "Enable/disable display of file name." ) );
+ QToolTip::add( buttonMove, i18n( "Move selected items (select the new location with the mouse)" ));
+}
+
+void KRenameImpl::setupPage2()
+{
+ page_2 = new QWidget( parent );
+
+ pageLayout_2 = new QVBoxLayout( page_2, 6, 6 );
+
+ QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ groupOptions = new QButtonGroup( page_2 );
+ groupOptions->setTitle( i18n( "O&ptions" ) );
+ groupOptions->setColumnLayout(0, Qt::Vertical );
+ groupOptions->layout()->setSpacing( 6 );
+ groupOptions->layout()->setMargin( 11 );
+ groupOptionsLayout = new QVBoxLayout( groupOptions->layout() );
+ groupOptionsLayout->setAlignment( Qt::AlignTop );
+
+ optionRename = new QRadioButton( groupOptions );
+ optionRename->setText( i18n( "&Rename input files" ) );
+ optionRename->setChecked( true );
+
+ optionCopy = new QRadioButton( groupOptions );
+ optionCopy->setText( i18n( "Cop&y files to destination directory" ) );
+
+ optionMove = new QRadioButton( groupOptions );
+ optionMove->setText( i18n( "&Move files to destination directory" ) );
+
+ optionLink = new QRadioButton( groupOptions );
+ optionLink->setText( i18n("Create symbolic &links in destination directory") );
+
+ dirname = new KMyHistoryCombo( false, groupOptions, "Path" );
+ urlrequester = new KURLRequester( dirname, groupOptions );
+ urlrequester->setMode( KFile::Directory | KFile::ExistingOnly );
+
+ checkOverwrite = new QCheckBox( groupOptions );
+ checkOverwrite->setText( i18n( "&Overwrite existing files" ) );
+
+ groupOptionsLayout->addWidget( optionRename );
+ groupOptionsLayout->addWidget( optionCopy );
+ groupOptionsLayout->addWidget( optionMove );
+ groupOptionsLayout->addWidget( optionLink );
+ groupOptionsLayout->addWidget( urlrequester );
+ groupOptionsLayout->addItem( spacer_3 );
+ groupOptionsLayout->addWidget( checkOverwrite );
+
+ groupUndo = new QVGroupBox( page_2 );
+ groupUndo->setTitle( i18n("&Undo Renaming") );
+
+ checkUndoScript = new QCheckBox( i18n("&Create an undo script"), groupUndo );
+
+ undorequester = new KURLRequester( groupUndo );
+ undorequester->setEnabled( false );
+ undorequester->setMode( KFile::File | KFile::LocalOnly );
+ undorequester->setFilter( i18n("*.krename|KRename undo scripts (*.krename)\n"
+ "*|All Files (*)") );
+ undorequester->fileDialog()->setOperationMode( KFileDialog::Saving );
+
+ pageLayout_2->addWidget( groupOptions );
+ pageLayout_2->addWidget( groupUndo );
+ pageLayout_2->addItem( spacer_3 );
+
+ emit pageDone( page_2, i18n( pageTitle[1] ) );
+
+ QToolTip::add( optionRename, i18n( "Input files will be renamed." ) );
+ QToolTip::add( optionCopy, i18n( "Copies all files to the destination directory and renames them." ) );
+ QToolTip::add( optionMove, i18n( "Moves all files to the destination directory and renames them." ) );
+}
+
+void KRenameImpl::setupPage3()
+{
+ page_3 = new KJanusWidget( parent, "janus", KJanusWidget::TreeList );
+ page_3->setShowIconsInTreeList( true );
+ page_3->setTreeListAutoResize( true );
+
+ setupTab1();
+
+ emit pageDone( page_3, i18n( pageTitle[2] ) );
+}
+
+void KRenameImpl::setupPage4()
+{
+ page_4 = new QWidget( parent );
+ pageLayout_4 = new QVBoxLayout( page_4, 11, 6 );
+
+ fileTab = new QWidgetStack( page_4 );
+ setupFileTab1();
+ setupFileTab2();
+
+ Layout22 = new QHBoxLayout( 0, 0, 6 );
+ Layout23 = new QVBoxLayout( 0, 0, 6 );
+
+ preview = new KMyListView( &changes, fileList, page_4 );
+ preview->setSorting( -1 );
+ preview->addColumn( i18n( "Origin" ) );
+ preview->addColumn( i18n( "Renamed" ) );
+
+ buttonUp2 = new KPushButton( page_4 );
+ buttonUp2->setPixmap( BarIcon( "1uparrow" ) );
+
+ buttonDown2 = new KPushButton( page_4 );
+ buttonDown2->setPixmap( BarIcon( "1downarrow" ) );
+
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
+
+ Layout23->addItem( spacer );
+ Layout23->addWidget( buttonUp2 );
+ Layout23->addWidget( buttonDown2 );
+ Layout23->addItem( spacer );
+
+ Layout22->addWidget( preview );
+ Layout22->addLayout( Layout23 );
+ Layout22->setStretchFactor( preview, 2 );
+
+ pageLayout_4->addWidget( fileTab );
+ pageLayout_4->addLayout( Layout22 );
+
+ emit pageDone( page_4, i18n( pageTitle[3] ) );
+
+ QToolTip::add( filename, i18n( "Add a template.<br>Example: <i>picture###</i>" ) );
+ QToolTip::add( extemplate, i18n( "Add a template for the file extension.<br>It behaves like the filename template.") );
+ QToolTip::add( checkExtension, i18n("Checking this checkbox is the same as setting the extension template to $"));
+ QToolTip::add( buttonUp2, i18n( "Move selected items up" ));
+ QToolTip::add( buttonDown2, i18n( "Move selected items down" ));
+ QToolTip::add( preview, i18n( "Double click on an item to modify it." ));
+ QToolTip::add( buttonHelp, i18n("Help Dialog with all tokens supported by KRename."));
+ QToolTip::add( buttonReplace, i18n("<qt>Find and replace characters or part string of the source filename in the destination filename.</qt>") );
+ QToolTip::add( buttonEasyReplace, i18n("<qt>Find and replace characters or part string of the source filename in the destination filename.</qt>") );
+ QToolTip::add( comboExtension, i18n("<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup.tar.gz depending on this setting.</qt>") );
+}
+
+void KRenameImpl::setupFileTab1()
+{
+ QWidget* tab = new QWidget( fileTab );
+
+ labelTemplate = new QLabel( tab );
+ labelTemplate->setText( i18n( "&Template:" ) );
+
+ filename = new KMyHistoryCombo( true, tab, "Template" );
+ labelTemplate->setBuddy( filename );
+
+ QLabel* labelDot = new QLabel( tab );
+ labelDot->setText("<b>.</b>");
+
+ extemplate = new KMyHistoryCombo( true, tab, "ExTemplate" );
+ extemplate->setEnabled( FALSE );
+
+ buttonHelp = new KPushButton( i18n("&Functions..."), tab );
+ buttonHelp->setIconSet( SmallIcon("help") );
+
+ checkExtension = new QCheckBox( tab );
+ checkExtension->setText( i18n( "&Use extension of the input file" ) );
+ checkExtension->setChecked( TRUE );
+
+ comboExtension = new KComboBox( false, tab );
+
+ buttonReplace = new KPushButton( i18n("Find &and Replace..."), tab );
+ buttonReplace->setIconSet( SmallIconSet("find") );
+
+ buttonNumber = new KPushButton( i18n("&Numbering..."), tab );
+ buttonCoord = new KPushButton( i18n("&Insert Part of Filename..."), tab );
+
+ helpDialog->setLineEdit( filename->lineEdit() );
+
+ QStringList help;
+ help.append("$;;" + i18n("old filename") );
+ help.append("%;;" + i18n("old filename converted to lower case") );
+ help.append("&;;" + i18n("old filename converted to upper case") );
+ help.append("*;;" + i18n("first letter of every word upper case") );
+ help.append("[&1][%2-];;" + i18n("first letter of filename upper case") );
+ help.append("#;;" + i18n("number (try also ##, ###, ... for leading zeros)") );
+ help.append("#{0;1};;" + i18n("counter with custom start value 0 and custom stepping 1") );
+ help.append("/;;" + i18n("create a subdirectory") );
+ help.append("\\;;" + i18n("strip whitespaces leading and trailing") );
+ help.append("[$x-y];;" + i18n("character x to y of old filename") );
+ help.append("[$x;y];;" + i18n("y characters of old filename starting at x") );
+ help.append("[$dirname];;" + i18n("insert name of directory") );
+ help.append("[$dirname.];;" + i18n("insert name of parent directory") );
+ help.append("[#length-0];;" + i18n("insert the length of the input filename") );
+ helpDialogData->add( i18n("Built-in Functions:" ), &help, SmallIcon("krename"), true );
+
+ help.clear();
+ help.append( "\\$;;" + i18n("Insert '$'") );
+ help.append( "\\%;;" + i18n("Insert '%'") );
+ help.append( "\\&;;" + i18n("Insert '&'") );
+ help.append( "\\*;;" + i18n("Insert '*'") );
+ help.append( "\\/;;" + i18n("Insert '/'") );
+ help.append( "\\\\;;" + i18n("Insert '\\\\'") );
+ help.append( "\\[;;" + i18n("Insert '['") );
+ help.append( "\\];;" + i18n("Insert ']'") );
+ help.append( "\\#;;" + i18n("Insert '#'") );
+ helpDialogData->add( i18n("Special Characters:" ), &help, SmallIcon("krename") );
+
+ /*
+ //TODO: FIX this tooltip
+ QToolTip::add( buttonHelp,
+ i18n(
+ "<b>$</b> old filename<br><b>%</b> old filename"
+ " converted to lower case<br><b>&</b> old filename converted to upper case<br>"
+ "<b>*</b> first letter of every word uppercase<br>"
+ "<b>#</b> Adds a number to the filename (add more #'s for leading zeros)<br>"
+ "<b>/</b> creates a subdirectory<br>"
+ "<b>[$x-y]</b> Characters x to y of the old filename<br>"
+ "<b>[%x-y]</b> Characters x to y converted to lower case"
+ ) );
+ */
+
+ QSpacerItem* spacer_9 = new QSpacerItem( 200, 20, QSizePolicy::Maximum, QSizePolicy::Maximum );
+
+ QVBoxLayout* layout = new QVBoxLayout( tab );
+ QHBoxLayout* Layout1 = new QHBoxLayout( 0, 6, 6 );
+ QHBoxLayout* Layout2 = new QHBoxLayout( 0, 6, 6 );
+ QHBoxLayout* ExtensionLayout = new QHBoxLayout( 0, 6, 6 );
+
+ Layout1->addWidget( labelTemplate );
+ Layout1->addWidget( filename );
+ Layout1->setStretchFactor( filename, 4 );
+ Layout1->addWidget( labelDot );
+ Layout1->addWidget( extemplate );
+ Layout1->addWidget( buttonHelp );
+
+ Layout2->addWidget( buttonReplace );
+ Layout2->addWidget( buttonNumber );
+ Layout2->addWidget( buttonCoord );
+ Layout2->addItem( spacer_9 );
+
+ ExtensionLayout->addWidget( checkExtension );
+ ExtensionLayout->addItem( spacer_9 );
+ ExtensionLayout->addWidget( new QLabel( i18n("File extension starts at:"), tab ) );
+ ExtensionLayout->addWidget( comboExtension );
+
+ layout->addLayout( Layout1 );
+ layout->addLayout( ExtensionLayout );
+ layout->addLayout( Layout2 );
+ layout->addItem( spacer_9 );
+
+ fileTab->addWidget( tab, ID_TAB );
+}
+
+void KRenameImpl::setupFileTab2()
+{
+ QWidget* tab = new QWidget( page_4 );
+
+ QHBoxLayout* layout = new QHBoxLayout( tab, 6, 6 );
+
+ QVGroupBox* vgroup1 = new QVGroupBox( i18n("&Filename"), tab );
+ QGrid* grid = new QGrid( 4, vgroup1 );
+
+ QLabel* l = new QLabel( i18n("&Prefix:"), grid );
+ comboKRenamePrefix = new KComboBox( false, grid );
+ comboPrefix = new KMyHistoryCombo( true, grid, "comboPrefix" );
+ buttonEasy1 = new KPushButton( grid );
+ l->setBuddy( comboPrefix );
+
+ l = new QLabel( i18n("&Suffix:"), grid );
+ comboKRenameSuffix = new KComboBox( false, grid, "comboSuffix" );
+ comboSuffix = new KMyHistoryCombo( true, grid );
+ buttonEasy2 = new KPushButton( grid );
+ l->setBuddy( comboSuffix );
+
+ QStringList comboItems;
+ comboItems.append( i18n("Convert to lower case ") );
+ comboItems.append( i18n("Convert to upper case") );
+ comboItems.append( i18n("Capitalize") );
+
+ l = new QLabel( i18n("&Name:"), grid );
+ comboKRenameFilename = new KComboBox( false, grid );
+ comboKRenameFilename->insertItem( i18n("Use original name") );
+ comboKRenameFilename->insertStringList( comboItems );
+ comboKRenameFilename->insertItem( i18n("Custom name") );
+ l->setBuddy( comboKRenameFilename );
+
+ comboCustom = new KMyHistoryCombo( true, grid, "comboCustom" );
+ buttonEasy3 = new KPushButton( grid );
+
+ l = new QLabel( i18n("&Extension:"), grid );
+ comboKRenameExtension = new KComboBox( false, grid );
+ comboKRenameExtension->insertItem( i18n("Use original extension") );
+ comboKRenameExtension->insertStringList( comboItems );
+ comboKRenameExtension->insertItem( i18n("Custom extension") );
+ l->setBuddy( comboKRenameExtension );
+
+ comboCustomExtension = new KMyHistoryCombo( true, grid, "comboCustomExtension" );
+ buttonEasy4 = new KPushButton( grid );
+
+ QVBox* rightBox = new QVBox( tab );
+ QVGroupBox* group = new QVGroupBox( i18n("&Number" ), rightBox );
+
+ spinStart = new KIntNumInput( group );
+ spinStart->setLabel( i18n( "Start &index:" ), AlignLeft | AlignVCenter );
+
+ spinNull = new KIntNumInput( spinStart, 1, group );
+ spinNull->setLabel( i18n("&Number of digits:"), AlignLeft | AlignVCenter );
+ spinNull->setRange( 1, 100, 1, false );
+
+ buttonEasyReplace = new KPushButton( i18n("&Find and Replace..."), rightBox );
+ buttonEasyReplace->setIconSet( SmallIconSet("find") );
+
+ layout->addWidget( vgroup1 );
+ layout->addWidget( rightBox );
+
+ comboKRenamePrefix->insertItem( "" );
+ comboKRenamePrefix->insertItem( i18n("Number") );
+ comboKRenamePrefix->insertItem( i18n("Date") );
+
+ comboKRenameSuffix->insertItem( "" );
+ comboKRenameSuffix->insertItem( i18n("Number") );
+ comboKRenameSuffix->insertItem( i18n("Date") );
+
+ enableControls();
+
+ connect( comboPrefix, SIGNAL( textChanged( const QString &)), this, SLOT( changed()));
+ connect( comboSuffix, SIGNAL( textChanged( const QString &)), this, SLOT( changed()));
+ connect( comboKRenameFilename, SIGNAL( activated(int)), this, SLOT( changed()));
+ connect( comboCustom, SIGNAL( textChanged( const QString & ) ), this, SLOT( changed() ));
+ connect( comboKRenamePrefix, SIGNAL(activated(int)), this, SLOT(changed()));
+ connect( comboKRenameExtension, SIGNAL( activated(int)), this, SLOT( changed()));
+ connect( comboCustomExtension, SIGNAL( textChanged( const QString & ) ), this, SLOT( changed() ));
+ connect( comboKRenameSuffix, SIGNAL(activated(int)), this, SLOT(changed()));
+ connect( spinNull, SIGNAL( valueChanged(int) ), this, SLOT( changed() ));
+ connect( spinStart, SIGNAL( valueChanged(int) ), this, SLOT( changed() ));
+
+ buttonEasy1->setIconSet( SmallIcon("help") );
+ buttonEasy2->setIconSet( SmallIcon("help") );
+ buttonEasy3->setIconSet( SmallIcon("help") );
+ buttonEasy4->setIconSet( SmallIcon("help") );
+
+ buttonEasy1->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum );
+ buttonEasy2->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum );
+ buttonEasy3->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum );
+ buttonEasy4->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum );
+
+ const QString easy_text( i18n("<qt>Insert a special KRename command which inserts file information into the filename.</qt>") );
+
+ connect( buttonEasy1, SIGNAL( clicked() ), this, SLOT( slotEasy1() ) );
+ connect( buttonEasy2, SIGNAL( clicked() ), this, SLOT( slotEasy2() ) );
+ connect( buttonEasy3, SIGNAL( clicked() ), this, SLOT( slotEasy3() ) );
+ connect( buttonEasy4, SIGNAL( clicked() ), this, SLOT( slotEasy4() ) );
+
+ QToolTip::add( buttonEasy1, easy_text );
+ QToolTip::add( buttonEasy2, easy_text );
+ QToolTip::add( buttonEasy3, easy_text );
+ QToolTip::add( buttonEasy4, easy_text );
+
+ fileTab->addWidget( tab, ID_WIZARD );
+}
+
+QString KRenameImpl::easyOptions( KComboBox* combo, KMyHistoryCombo* custom )
+{
+ QString t = QString::null;
+ if( combo->currentItem() == 0 )
+ t = "$";
+ else if( combo->currentItem() == 1 )
+ t = "%";
+ else if( combo->currentItem() == 2 )
+ t = "&";
+ else if( combo->currentItem() == 3 )
+ t = "*";
+ else if( combo->currentItem() == 4 )
+ t = custom->text();
+
+ return t;
+}
+
+void KRenameImpl::changed()
+{
+ QString t = easyOptions( comboKRenameFilename, comboCustom );
+ t = comboPrefix->text() + t + comboSuffix->text();
+
+ for( int i=0; i<spinNull->value();i++)
+ {
+ if( comboKRenamePrefix->currentItem() == 1 )
+ t.prepend("#");
+ if( comboKRenameSuffix->currentItem() == 1 )
+ t.append("#");
+ }
+
+ if( comboKRenamePrefix->currentItem() == 2 )
+ t.prepend( "[date]" );
+
+ if( comboKRenameSuffix->currentItem() == 2 )
+ t.append( "[date]" );
+
+ QString e = easyOptions( comboKRenameExtension, comboCustomExtension );
+
+ bool update = false;
+ update = ( counterStart() != spinStart->value() && t == fileNameTemplate() );
+ setCounterStart( spinStart->value() );
+
+ filename->setText( t );
+ extemplate->setText( e );
+ checkExtension->setChecked( (comboKRenameExtension->currentItem() == 0) );
+
+ if( update )
+ updatePre();
+
+ enableControls();
+}
+
+void KRenameImpl::parseWizardMode()
+{
+ /** This function is not very accrurate and
+ * guesses most cases.
+ * But it works pretty well and is IMHO enough for this
+ * simple dialog.
+ */
+ QString t = filename->text();
+
+ spinNull->setValue( t.contains( "#" ) );
+
+ if( t.startsWith( "[date]") )
+ {
+ t = t.right( t.length() - 6 );
+ comboKRenamePrefix->setCurrentItem( 2 );
+ }
+ else if( t.startsWith( "#") )
+ {
+ while( t.startsWith( "#" ) )
+ t = t.right( t.length() - 1 );
+ comboKRenamePrefix->setCurrentItem( 1 );
+ }
+
+ if( t.endsWith( "[date]" ) )
+ {
+ t = t.left( t.length() - 6 );
+ comboKRenameSuffix->setCurrentItem( 2 );
+ }
+ else if( t.endsWith( "#") )
+ {
+ while( t.endsWith( "#" ) )
+ t = t.left( t.length() - 1 );
+
+ comboKRenameSuffix->setCurrentItem( 1 );
+ }
+
+ int pos = -1;
+ if( (pos = t.find( "$" )) > -1 )
+ comboKRenameFilename->setCurrentItem( 0 );
+ else if( (pos = t.find( "%" )) > -1 )
+ comboKRenameFilename->setCurrentItem( 1 );
+ else if( (pos = t.find( "&" )) > -1 )
+ comboKRenameFilename->setCurrentItem( 2 );
+ else if( (pos = t.find( "*" )) > -1 )
+ comboKRenameFilename->setCurrentItem( 3 );
+ else
+ {
+ comboKRenameFilename->setCurrentItem( 4 );
+ comboCustom->setText( t );
+ }
+
+ if( pos > 0 )
+ {
+ comboPrefix->setText( t.left( pos ) );
+ comboSuffix->setText( t.mid( pos + 1, t.length() - pos - 1) );
+ }
+
+ spinStart->setValue( m_index );
+}
+
+void KRenameImpl::setupTab1()
+{
+ /*
+ * Draw plugin user interfaces
+ */
+
+ QFrame* parent;
+ QVBoxLayout* Layout;
+ QVBoxLayout* gLayout;
+ QGroupBox* g;
+ QWidget* page;
+
+ /* strangely I do not have to delete this stuff
+ * after plugins have been reloaded.
+ * could cause a memory leak though
+ */
+ while( ( page = page_3->pageWidget( 0 ) ) )
+ page_3->removePage( page );
+
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plugin->libs ); // iterator for dict
+ while ( it.current() ) {
+ if( !(*it)->plugin->alwaysUsed() )
+ {
+ parent = page_3->addPage( (*it)->plugin->getName(), QString::null, (*it)->plugin->getIcon() );
+
+ Layout = new QVBoxLayout( parent, 11, 6, "Layout");
+ g = new QGroupBox( parent );
+ gLayout = new QVBoxLayout( g, 11, 6, "gLayout" );
+
+ (*it)->check = new QCheckBox( i18n("&Use this plugin"), parent );
+ connect( (*it)->check, SIGNAL( clicked() ), this, SLOT( pluginHelpChanged() ) );
+ connect( (*it)->plugin, SIGNAL( previewChanged( Plugin* ) ), this, SLOT( updatePluginPreview( Plugin* ) ) );
+ Layout->addWidget( (*it)->check );
+ (*it)->plugin->drawInterface( g, gLayout );
+
+ Layout->addWidget( g );
+
+ } else
+ (*it)->plugin->addHelp( helpDialogData );
+
+ ++it;
+ }
+
+ page_3->showPage( 1 );
+}
+
+void KRenameImpl::addFile()
+{
+ bool auto_up = false;
+
+ DSDirSelectDialog* dsd = new DSDirSelectDialog( parent );
+ if( dsd->exec() == QDialog::Accepted ) {
+ KURL::List slist = dsd->selectedURLs();
+ KURL::List::Iterator it = slist.begin();
+
+ for ( ; it != slist.end(); ++it )
+ {
+ if( !fileList->isFile( *it, false ) )
+ {
+ if( dsd->onlyDirs() )
+ fileList->addDirName( *it, dsd->currentFilter(), dsd->hidden(), dsd->recursively() );
+ else
+ fileList->addDir( *it, dsd->currentFilter(), dsd->hidden(), dsd->recursively(), dsd->dirs() );
+ }
+ else
+ {
+ fileList->addFile( *it, true );
+ auto_up = true;
+ }
+ }
+
+ if( auto_up )
+ {
+ updatePreview();
+ updateCount();
+ }
+ }
+}
+
+void KRenameImpl::clearList()
+{
+ fileList->clear();
+ changes.clear();
+ updateCount();
+ updatePreview();
+}
+
+void KRenameImpl::removeFile()
+{
+ unsigned int i = 0;
+ do {
+ if(fileList->isSelected( i ))
+ removeFile( i );
+ else
+ i++;
+ } while( i < fileList->count() );
+
+ updateCount();
+ updatePreview();
+}
+
+void KRenameImpl::removeFile( int index )
+{
+ KURL url = fileList->url( index );
+ fileList->removeItem( index );
+ // we have this to display the add files url label when count() == 0
+ fileList->positionLabel();
+ // remove this file from changes, too
+ for( unsigned int i = 0; i < changes.count(); i++ )
+ if( changes[i].url == url )
+ changes.remove( changes.at( i ) );
+
+ updateCount();
+ updatePreview();
+}
+
+void KRenameImpl::help()
+{
+ kapp->invokeHelp();
+}
+
+void KRenameImpl::start()
+{
+ if(!checkErrors())
+ return;
+
+ // Let the plugins check for erorrs
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plugin->libs );
+ while ( it.current() ) {
+ if( (*it)->usePlugin && !(*it)->plugin->checkError() )
+ return;
+ ++it;
+ }
+
+ ProgressDialog* p = new ProgressDialog( 0, "p" );
+ p->print(QString( i18n("Starting conversion of %1 files.") ).arg(fileList->count()));
+
+ // Save History
+ dirname->saveSettings();
+ filename->saveSettings();
+ extemplate->saveSettings();
+
+ KConfig * config = kapp->config();
+ config->setGroup("FileExtension");
+ config->writeEntry("FileExtensionCombo", comboExtension->currentItem() );
+
+ // save the configuration
+ saveConfig();
+
+ b = new BatchRenamer();
+ if( setupBatchRenamer( b, false ) )
+ {
+ p->show();
+ parent->hide();
+ b->processFiles( p, this );
+ }
+
+ // Memory leak!!! : ??
+ //delete parent;
+}
+
+void KRenameImpl::enableControls()
+{
+ comboCustom->setEnabled( comboKRenameFilename->currentItem() == 4 );
+ comboCustomExtension->setEnabled( comboKRenameExtension->currentItem() == 4 );
+ buttonEasy3->setEnabled( comboKRenameFilename->currentItem() == 4 );
+ buttonEasy4->setEnabled( comboKRenameExtension->currentItem() == 4 );
+ urlrequester->setEnabled( !optionRename->isChecked() );
+ checkUndoScript->setEnabled( !optionCopy->isChecked() && !optionLink->isChecked() );
+ undorequester->setEnabled( checkUndoScript->isChecked() && checkUndoScript->isEnabled() );
+ extemplate->setEnabled( !checkExtension->isChecked() );
+ loadPlugins->setEnabled( !plugin->filePluginsLoaded() );
+}
+
+bool KRenameImpl::checkErrors()
+{
+ if( filename->text().isEmpty() ) {
+ KMessageBox::sorry( parent, i18n("Specify a template to use for renaming files.") );
+ return false;
+ }
+ if( dirname->text().isEmpty() && !optionRename->isChecked()) {
+ KMessageBox::sorry( parent, i18n("Please give a destination directory !") );
+ emit showPage( 2 );
+ return false;
+ }
+ if( checkUndoScript->isChecked() && !optionCopy->isChecked() && undorequester->url().isEmpty() ) {
+ KMessageBox::sorry( parent, i18n("Please give the name of the undo script!") );
+ showPage( 2 );
+ return false;
+ }
+
+ return true;
+}
+
+void KRenameImpl::updateCount()
+{
+ labelCount->setText( QString( i18n("Files: <b>%1</b>") ).arg(fileList->count()));
+
+ buttonCoord->setEnabled( (bool)fileList->count() );
+ buttonReplace->setEnabled( (bool)fileList->count() );
+ buttonEasyReplace->setEnabled( (bool)fileList->count() );
+ emit enableFinish( (bool)fileList->count() );
+ buttonRemove->setEnabled( (bool)fileList->count() );
+ buttonRemoveAll->setEnabled( (bool)fileList->count() );
+ buttonMove->setEnabled( (bool)fileList->count() );
+ buttonUp->setEnabled( (bool)fileList->count() );
+ buttonUp2->setEnabled( (bool)fileList->count() );
+ buttonDown->setEnabled( (bool)fileList->count() );
+ buttonDown2->setEnabled( (bool)fileList->count() );
+
+ updateDots();
+}
+
+void KRenameImpl::fillStructures( BatchRenamer* b, bool preview )
+{
+ QValueList<data> f;
+ unsigned int max = (preview && KRenameImpl::numRealTimePreview > -1 ? KRenameImpl::numRealTimePreview : fileList->count());
+
+ for( unsigned int i = 0; i < max; i++) {
+ KURL url = fileList->url( i );
+ QFileInfo fi( url.path() );
+
+ data fdata;
+ fdata.dir = fileList->dir( i );
+ if( !fdata.dir ) {
+ splitFilename( &fi, &fdata.src.name, &fdata.src.extension );
+ } else {
+ fdata.src.name = BatchRenamer::findDirName( "dirname", url.path() );
+ fdata.src.extension = "";
+ }
+
+ fdata.src.url = url;
+
+ /* Let's do some error checking for files
+ * called: file_xy.
+ */
+ if( url.path().right(1) == "." )
+ // File ends with a dot
+ fdata.src.name.append( "." );
+
+ fdata.src.directory = fi.dirPath( true );
+ if( fdata.src.directory.right(1) != "/" )
+ fdata.src.directory.append("/");
+
+ f.append( fdata );
+ }
+
+ /*
+ * Tell plugins that they should fill their structure, too.
+ * Check also which plugins should be used !
+ */
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plugin->libs );
+ for( int z = 0; it.current(); ++it, z++ ) {
+ if( (*it)->plugin->alwaysUsed() || ((*it)->check && (*it)->check->isChecked()) )
+ (*it)->plugin->fillStructure();
+ }
+
+ b->setFiles( f );
+}
+
+void KRenameImpl::updatePre()
+{
+ updatePreview();
+ updateCount();
+ toggleImagePreview();
+}
+
+void KRenameImpl::addFileOrDir( const QString & name )
+{
+ fileList->addFile( name, false );
+}
+
+void KRenameImpl::addFileOrDir( const KURL & name )
+{
+ fileList->addFile( name, true );
+}
+
+bool KRenameImpl::setupBatchRenamer( BatchRenamer* b, bool preview )
+{
+ b->setText( filename->text() );
+ b->setExText( ( checkExtension->isChecked() ? QString("$") : extemplate->text() ) );
+ b->setIndex( m_index );
+ b->setResetCounter( m_reset );
+ b->setStep( m_step );
+ b->setSkipList( skip );
+ b->setReplaceList( rep );
+ b->setChanges( changes );
+
+ if( !preview ) {
+ QString url = urlrequester->url();
+ if( url.right(1) != "/" )
+ url.append( "/" );
+
+ if( !KIO::NetAccess::exists( KURL( url ) ) )
+ {
+ int m = KMessageBox::warningContinueCancel( parent, i18n("The directory %1 does not exist. "
+ "KRename will create it for you.").arg( url ) );
+ if( m == KMessageBox::Cancel )
+ return false;
+
+ int i = 0;
+ QString d = "/";
+ while( (d += url.section( "/", i, i, QString::SectionSkipEmpty )) && ! d.isEmpty() ) { // asignment here!
+ if( !KIO::NetAccess::exists( d ) && !KIO::NetAccess::mkdir( d ) )
+ {
+ qDebug( "Can't create %s", d.latin1() );
+ break;
+ }
+ d.append( "/" );
+ i++;
+ }
+ }
+
+ b->setDirname( url );
+ b->setOverwrite( checkOverwrite->isChecked() );
+ b->setUndo( checkUndoScript->isChecked() && !optionCopy->isChecked() );
+ if( checkUndoScript->isChecked() && !optionCopy->isChecked() )
+ b->setUndoScript( undorequester->url() );
+
+ b->setMode( currentRenameMode() );
+ }
+
+ fillStructures( b, preview );
+ return true;
+}
+
+int KRenameImpl::currentRenameMode()
+{
+ if( optionCopy->isChecked() )
+ return COPY;
+ else if( optionMove->isChecked() )
+ return MOVE;
+ else if( optionRename->isChecked() )
+ return RENAME;
+ else if( optionLink->isChecked() )
+ return LINK;
+ // prevent a compiler warning
+ return RENAME;
+}
+
+void KRenameImpl::updatePluginPreview( Plugin* p )
+{
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plugin->libs ); // iterator for dict
+ while ( it.current() ) {
+ if( (*it)->plugin == p && (*it)->usePlugin ) {
+ updatePreview();
+ return;
+ }
+
+ ++it;
+ }
+}
+
+void KRenameImpl::updatePreview()
+{
+ // is there a number in the filename or extension
+ if( filename->text().contains( "#" ) || extemplate->text().contains( "#" ) )
+ buttonNumber->setEnabled( true );
+ else
+ buttonNumber->setEnabled( false );
+
+ if( filename->isEmpty() && extemplate->isEmpty() && !checkExtension->isChecked() )
+ return;
+
+ int h = preview->horizontalScrollBar()->value();
+ int v = preview->verticalScrollBar()->value();
+
+ preview->clear();
+
+ if( fileList->count() <= 0 )
+ return;
+
+ BatchRenamer b;
+ if( setupBatchRenamer( &b, true ) )
+ {
+ KApplication::setOverrideCursor( Qt::WaitCursor );
+ b.createPreview( preview );
+ KApplication::restoreOverrideCursor();
+ }
+ preview->horizontalScrollBar()->setValue( h );
+ preview->verticalScrollBar()->setValue( v );
+}
+
+void KRenameImpl::loadConfig()
+{
+ KConfig* config = kapp->config();
+
+ config->setGroup("HistSize");
+ m_hist = config->readNumEntry("HistoryItems", 10 );
+ updateHist();
+
+ config->setGroup("GUISettings");
+ // Image Preview
+ checkPreview->setChecked(config->readBoolEntry("ImagePreview", false ));
+ fileList->setPreview( checkPreview->isChecked() );
+ m_index = config->readNumEntry("StartIndex", 1);
+ m_step = 1;
+ m_reset = false;
+ m_loadplugins = config->readBoolEntry("LoadFilePlugins", true );
+ m_autosize = config->readBoolEntry("ColumnAutosize", false );
+ checkName->setChecked(config->readBoolEntry("Name", false ));
+ fileList->setPreviewSize( config->readNumEntry("PreviewSize", 80) );
+ fileList->setName( checkName->isChecked() );
+ fileList->setSorting( config->readNumEntry("FileListSorting", KMyListBox::UNSORTED ) );
+ comboSort->setCurrentItem( fileList->sorting() );
+
+ CoordDialog::m_inversion = config->readBoolEntry("Inverse", false);
+ m_wizard = config->readBoolEntry( "GUIWizardMode", true );
+
+ int width = config->readNumEntry( "Width", parent->width() );
+ int height = config->readNumEntry( "Height", parent->height() );
+ if( config->readBoolEntry("Maximized", false ) ) {
+ parent->showMaximized();
+ } else {
+ parent->resize( width, height );
+ }
+
+ refreshColumnMode();
+ if( !m_autosize ) {
+ preview->setColumnWidth( 0,
+ config->readNumEntry("Column0", (width/2) - 40 ) );
+ preview->setColumnWidth( 1,
+ config->readNumEntry("Column1", (width/2) - 40 ) );
+
+ if( preview->columnWidth( 0 ) > (width/2) )
+ {
+ preview->setColumnWidth( 0, (width/2) - 40 );
+ preview->setColumnWidth( 1, (width/2) - 40 );
+ }
+ }
+
+ if( !checkPreview->isChecked() ) {
+ checkName->setChecked( true );
+ checkName->setEnabled( false );
+ }
+
+ //parent->show();
+ page_1->setEnabled( false );
+ KApplication::setOverrideCursor( Qt::WaitCursor );
+ plugin->loadPlugins( m_loadplugins );
+ setupTab1();
+ config->setGroup("GUISettings");
+
+ // File Extension
+ config->setGroup("FileExtension");
+ // default LAST DOT
+ comboExtension->setCurrentItem( config->readNumEntry("FileExtensionCombo", 1 ) );
+}
+
+void KRenameImpl::saveConfig()
+{
+ KConfig* config = kapp->config();
+
+ config->setGroup("HistSize");
+ config->writeEntry("HistoryItems", m_hist );
+
+ config->setGroup("GUISettings");
+ config->writeEntry("firststart", false );
+ config->writeEntry("ImagePreview", checkPreview->isChecked() );
+ config->writeEntry("StartIndex", m_index );
+ config->writeEntry("Maximized", parent->isMaximized() );
+ config->writeEntry("Width", parent->width() );
+ config->writeEntry("Height", parent->height() );
+ config->writeEntry("XPos", parent->x() );
+ config->writeEntry("YPos", parent->y() );
+ config->writeEntry("LoadFilePlugins", m_loadplugins );
+ config->writeEntry("ColumnAutosize", m_autosize );
+ config->writeEntry("Name", checkName->isChecked() );
+ config->writeEntry("PreviewSize", fileList->getPreviewSize() );
+ config->writeEntry("Inverse", CoordDialog::m_inversion );
+ config->writeEntry("Column0", preview->columnWidth( 0 ) );
+ config->writeEntry("Column1", preview->columnWidth( 1 ) );
+ config->writeEntry("GUIWizardMode", m_wizard );
+ config->writeEntry("FileListSorting", fileList->sorting() );
+
+ config->sync();
+}
+
+void KRenameImpl::replace()
+{
+ ReplaceDialog* r = new ReplaceDialog( rep, parent );
+ if( r->exec() == QDialog::Accepted )
+ {
+ rep = r->getList();
+ updatePreview();
+ }
+}
+
+void KRenameImpl::toggleImagePreview()
+{
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ fileList->setPreview( checkPreview->isChecked() );
+ checkName->setEnabled( checkPreview->isChecked() );
+ if( !checkPreview->isChecked() )
+ checkName->setChecked( true );
+ fileList->setName( checkName->isChecked() );
+ KApplication::restoreOverrideCursor();
+}
+
+void KRenameImpl::toggleName()
+{
+ KApplication::setOverrideCursor( Qt::waitCursor );
+ fileList->setName( checkName->isChecked() );
+ KApplication::restoreOverrideCursor();
+}
+
+void KRenameImpl::preferences()
+{
+ ConfDialog* cd = new ConfDialog( parent, "cd" );
+ cd->setLoadPlugins( m_loadplugins );
+ cd->setThumbSize( fileList->getPreviewSize() );
+ cd->setAutosize( m_autosize );
+ cd->setHistoryItems( m_hist );
+ cd->setUseWizard( m_wizard );
+
+ if( cd->exec() == QDialog::Accepted ) {
+ bool oldwiz = m_wizard;
+
+ m_loadplugins = cd->loadplugins();
+ m_autosize = cd->autosize();
+ m_hist = cd->historyItems();
+ m_wizard = cd->useWizard();
+
+ refreshColumnMode();
+
+// fileList->setHiddenDirs( cd->hiddendir() );
+
+ if( fileList->getPreviewSize() != cd->thumbSize() ) {
+ fileList->setPreviewSize( cd->thumbSize() );
+ fileList->setPreview( checkPreview->isChecked() );
+ }
+
+ updatePreview();
+ updateHist();
+
+ if( oldwiz != m_wizard )
+ changeGUIMode();
+ }
+}
+
+void KRenameImpl::changeGUIMode()
+{
+ /* GUI Mode was changed by the user */
+ saveConfig();
+
+ int x = parent->x();
+ int y = parent->y();
+ int w = parent->width();
+ int h = parent->height();
+
+ QWidget* oldparent = parent;
+ QWidget* krename = KRenameImpl::launch( QRect( x, y, w, h ), QStringList(), this, false );
+
+ m_switching = true;
+ oldparent->removeChild( this );
+ oldparent->hide();
+ krename->insertChild( this );
+ krename->show();
+
+ oldparent->close();
+ m_switching = false;
+}
+
+void KRenameImpl::moveUp()
+{
+ QListViewItem* item = preview->selectedItem();
+ if(item) {
+ int i = preview->itemIndex( item );
+ fileList->moveUp( i );
+ updatePreview();
+ if( (i-1) > 0 ) {
+ preview->setCurrentItem( preview->itemAtIndex( i-1 ) );
+ preview->ensureItemVisible( preview->itemAtIndex( i-1 ) );
+ }
+ }
+}
+
+void KRenameImpl::moveDown()
+{
+ QListViewItem* item = preview->selectedItem();
+ if(item) {
+ int i = preview->itemIndex( item );
+ fileList->moveDown( i );
+ updatePreview();
+ preview->setCurrentItem( preview->itemAtIndex( i+1 ) );
+ preview->ensureItemVisible( preview->itemAtIndex( i+1 ) );
+ }
+}
+
+void KRenameImpl::undo()
+{
+ UndoDialog* u = new UndoDialog( parent );
+ u->exec();
+ delete u;
+}
+
+void KRenameImpl::changeUndoScriptName()
+{
+ const char* EXTENSION = ".krename";
+ QString script = undorequester->url();
+ if( script.right( 8 ) != EXTENSION ) {
+ script += EXTENSION;
+ undorequester->setURL( script );
+ }
+}
+
+void KRenameImpl::pluginHelpChanged()
+{
+ QPtrListIterator<PluginLoader::PluginLibrary> it( plugin->libs ); // iterator for dict
+ while ( it.current() ) {
+ if( !(*it)->plugin->alwaysUsed() ) {
+ (*it)->plugin->removeHelp( helpDialogData );
+
+ if( (*it)->check )
+ {
+ (*it)->usePlugin = (*it)->check->isChecked();
+ if( (*it)->check->isChecked() )
+ (*it)->plugin->addHelp( helpDialogData );
+ }
+ }
+ else
+ {
+ (*it)->plugin->removeHelp( helpDialogData );
+ (*it)->plugin->addHelp( helpDialogData );
+ }
+
+ ++it;
+ }
+}
+
+void KRenameImpl::showTokenHelp()
+{
+ helpDialog->show();
+}
+
+void KRenameImpl::getCoordinates()
+{
+ QString name;
+ QListViewItem* item = preview->selectedItem();
+ if( item )
+ name = item->text( 0 );
+ else {
+ item = preview->itemAtIndex( 0 );
+ if( item )
+ name = item->text( 0 );
+ }
+
+ QFileInfo fi( name );
+ QString extension;
+ splitFilename( &fi, &name, &extension );
+ CoordDialog* cd = new CoordDialog( name, parent );
+ if( cd->exec() == QDialog::Accepted ) {
+ QString t = filename->text();
+
+ if( filename->text() == "$" )
+ filename->setText( cd->coords() );
+ else {
+ t.insert( filename->cursorPosition(), cd->coords() );
+ filename->setText( t );
+ }
+ }
+
+ delete cd;
+}
+
+void KRenameImpl::splitFilename( QFileInfo* fi, QString* base, QString* extension )
+{
+ // first dot
+ if( comboExtension->currentItem() == 0 ) {
+ *base = fi->baseName();
+ *extension = fi->extension( true );
+ // last dot
+ } else if( comboExtension->currentItem() == 1 ) {
+ *extension = fi->extension( false );
+ if( !extension->isEmpty() )
+ *base = fi->fileName().left( fi->fileName().length() - extension->length() - 1 );
+ else
+ *base = fi->baseName();
+ } else {
+ // custom value
+ int dot = comboExtension->currentText().toInt();
+
+ QString file = FileOperation::getName( fi->filePath() );
+ int p = 0;
+
+ if( !file.contains( "." ) || !dot || dot > file.contains( "." ) ) {
+ *base = file;
+ *extension = "";
+ return;
+ }
+
+ for( int i = 0; i < dot; i++ )
+ p = file.find( ".", p + 1 );
+
+ *base = file.left( p );
+ *extension = file.right( file.length() - p - 1 );
+ }
+}
+
+void KRenameImpl::refreshColumnMode()
+{
+ if( !m_autosize ) {
+ preview->setColumnWidthMode( 0, QListView::Manual );
+ preview->setColumnWidthMode( 1, QListView::Manual );
+ } else {
+ preview->setColumnWidthMode( 0, QListView::Maximum );
+ preview->setColumnWidthMode( 1, QListView::Maximum );
+ }
+}
+
+void KRenameImpl::updateHist()
+{
+ dirname->setMaxCount( m_hist );
+ filename->setMaxCount( m_hist );
+ extemplate->setMaxCount( m_hist );
+}
+
+void KRenameImpl::changeNumbers()
+{
+ NumberDialog* nd = new NumberDialog( skip, parent );
+ nd->spinIndex->setValue( m_index );
+ nd->spinStep->setValue( m_step );
+ nd->checkResetCounter->setChecked( m_reset );
+
+ if( nd->exec() ) {
+ m_index = nd->spinIndex->value();
+ m_step = nd->spinStep->value();
+ skip = nd->getList();
+ m_reset = nd->checkResetCounter->isChecked();
+
+ updatePreview();
+ }
+}
+
+
+void KRenameImpl::about()
+{
+ KAboutApplication * d = new KAboutApplication( kapp->aboutData(), parent );
+ d->show();
+}
+
+void KRenameImpl::setWizardMode( bool mode )
+{
+ fileTab->raiseWidget( mode ? ID_WIZARD : ID_TAB );
+ // Maybe we should create a WidgetStack here, too
+ if( mode )
+ {
+ optionLink->hide();
+ if( optionLink->isChecked() )
+ {
+ optionLink->setChecked( false );
+ optionRename->setChecked( true );
+ enableControls();
+ }
+ }
+ else
+ optionLink->show();
+
+ if( mode )
+ parseWizardMode();
+}
+
+void KRenameImpl::changeParent( QWidget* p, KMenuBar* m, QPushButton* finish, QRect r )
+{
+ parent = p;
+ menuBar = m;
+ finishButton = finish;
+
+ connect( finishButton, SIGNAL( clicked()), this, SLOT( start() ));
+
+ if( !r.isNull() ) {
+ parent->resize( r.size() );
+ parent->move( r.x(), r.y() );
+ }
+
+ setupActions();
+
+ page_1->reparent( parent, QPoint( 0, 0 ) );
+ page_2->reparent( parent, QPoint( 0, 0 ) );
+ page_3->reparent( parent, QPoint( 0, 0 ) );
+ page_4->reparent( parent, QPoint( 0, 0 ) );
+
+ emit pageDone( page_1, i18n( pageTitle[0] ) );
+ emit pageDone( page_2, i18n( pageTitle[1] ) );
+ emit pageDone( page_3, i18n( pageTitle[2] ) );
+ emit pageDone( page_4, i18n( pageTitle[3] ) );
+}
+
+QWidget* KRenameImpl::launch( QRect rect, const KURL::List & list, KRenameImpl* impl, bool loadprofile )
+{
+ KConfig* config = kapp->config();
+ config->setGroup("GUISettings");
+ bool firststart = config->readBoolEntry( "firststart", true );
+ bool wizardmode = config->readBoolEntry( "GUIWizardMode", false );
+
+ if( firststart ) {
+ /* start the GUI Mode selction dialog */
+ FirstStartDlg* fsd = new FirstStartDlg();
+ fsd->exec();
+ wizardmode = fsd->useWizard();
+
+ config->setGroup("GUISettings");
+ config->writeEntry( "firststart", false );
+ config->writeEntry( "GUIWizardMode", wizardmode );
+ config->sync();
+ }
+
+ QWidget* w = NULL;
+ KRenameImpl* k = NULL;
+
+ if( wizardmode ) {
+ wizard* krename = new wizard( impl, rect );
+ k = krename->getKRename();
+ w = (QWidget*)krename;
+ } else {
+ tabs* krename = new tabs( impl, rect );
+ k = krename->getKRename();
+ w = (QWidget*)krename;
+ }
+
+ kapp->setMainWidget( w );
+
+ for( unsigned int i = 0; i < list.count(); i++ )
+ k->addFileOrDir( list[i] );
+
+ k->updatePre();
+
+ // it is time to load a default profile now (if the user has specified one)
+ if( loadprofile && !k->hasCommandlineProfile() && ProfileManager::hasDefaultProfile() )
+ ProfileManager::loadDefaultProfile( k );
+ else if ( !k->hasCommandlineProfile() )
+ w->show();
+
+ return w;
+}
+
+void KRenameImpl::updateDots()
+{
+ int index = comboExtension->currentItem();
+ comboExtension->clear();
+
+ comboExtension->insertItem( i18n("First Dot") );
+ comboExtension->insertItem( i18n("Last Dot") );
+
+ unsigned int max = 0;
+ for( unsigned int i = 0; i < fileList->count(); i++ ) {
+ QString name = fileList->url( i ).fileName();
+ int c = name.contains( "." );
+ max = ( c > (int)max ? c : (int)max);
+ }
+
+ for( unsigned int i = 2; i <= max; i++ )
+ comboExtension->insertItem( QString::number( i ) );
+
+ comboExtension->setCurrentItem( index );
+}
+
+/** DCOP functions implementation
+ */
+
+void KRenameImpl::setFileNameTemplate( const QString & t )
+{
+ filename->setText( t );
+}
+
+const QString KRenameImpl::fileNameTemplate() const
+{
+ return filename->text();
+}
+
+void KRenameImpl::setExtensionTemplate( const QString & t )
+{
+ extemplate->setText( t );
+}
+
+const QString KRenameImpl::extensionTemplate() const
+{
+ return extemplate->text();
+}
+
+void KRenameImpl::setUseExtension( bool b )
+{
+ checkExtension->setChecked( b );
+ enableControls();
+}
+
+bool KRenameImpl::useExtension() const
+{
+ return checkExtension->isChecked();
+}
+
+QStringList KRenameImpl::tokens() const
+{
+ return helpDialogData->tokens();
+}
+
+QString KRenameImpl::parseString( const QString & token, const QString & string )
+{
+ BatchRenamer b;
+ b.setIndex( 0 );
+ b.setStep( 0 );
+
+ return b.processString( token, string, 0 );
+}
+
+void KRenameImpl::addDir( const QString & name, const QString & filter, bool recursive, bool hidden, bool dirnames )
+{
+ fileList->addDir( name, filter, hidden, recursive, dirnames );
+}
+
+void KRenameImpl::setCounterStart( int index )
+{
+ m_index = index;
+}
+
+void KRenameImpl::loadFilePlugins()
+{
+ KApplication::setOverrideCursor( Qt::WaitCursor );
+ plugin->loadPlugins( true );
+ KApplication::restoreOverrideCursor();
+ pluginHelpChanged();
+
+ enableControls();
+}
+
+void KRenameImpl::reloadFilePluginData()
+{
+ plugin->clearCache();
+ updatePreview();
+}
+
+void KRenameImpl::manageProfiles()
+{
+ ProfileDlg dlg( this, parent, "dlg" );
+ dlg.exec();
+}
+
+void KRenameImpl::getHelpDialogString( QLineEdit* edit )
+{
+ HelpDialog hdlg( helpDialogData, parent, "hdlg", true );
+ hdlg.setLineEdit( edit );
+ hdlg.updateHeadline();
+ hdlg.updateItems();
+ hdlg.exec();
+}
+
+void KRenameImpl::slotEasy1()
+{
+ getHelpDialogString( comboPrefix->lineEdit() );
+}
+
+void KRenameImpl::slotEasy2()
+{
+ getHelpDialogString( comboSuffix->lineEdit() );
+}
+
+void KRenameImpl::slotEasy3()
+{
+ getHelpDialogString( comboCustom->lineEdit() );
+}
+
+void KRenameImpl::slotEasy4()
+{
+ getHelpDialogString( comboCustomExtension->lineEdit() );
+}
diff --git a/krename/krenameimpl.h b/krename/krenameimpl.h
new file mode 100644
index 0000000..ae62b7b
--- /dev/null
+++ b/krename/krenameimpl.h
@@ -0,0 +1,353 @@
+/***************************************************************************
+ krenameimpl.h - description
+ -------------------
+ begin : Die Mai 20 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef KRENAMEIMPL_H
+#define KRENAMEIMPL_H
+
+// Own includes
+#include "batchrenamer.h"
+#include "krenamedcop.h"
+
+class HelpDialog;
+class HelpDialogData;
+class KAction;
+class KComboBox;
+class KJanusWidget;
+class KMyHistoryCombo;
+class KMyListBox;
+class KMyListView;
+class KMenuBar;
+class KPopupMenu;
+class KPushButton;
+class KToggleAction;
+class KURL;
+class KURLRequester;
+class KIntNumInput;
+class MyHelpCombo;
+class MyLabel;
+class Plugin;
+class PluginLoader;
+class QButtonGroup;
+class QCheckBox;
+class QGroupBox;
+class QFileInfo;
+class QFrame;
+class QHBoxLayout;
+class QLabel;
+class QLineEdit;
+class QListView;
+class QPushButton;
+class QRect;
+class QWidgetStack;
+class QRadioButton;
+class QVBoxLayout;
+class QVGroupBox;
+class QWidget;
+
+#include <kguiitem.h>
+KPushButton* createButton( KGuiItem item, QWidget* parent );
+
+class KRenameImpl : public QObject, public KRenameDCOP {
+ Q_OBJECT
+
+ friend class ProfileManager;
+ friend class ProfileDlg;
+ friend class tabs;
+
+ public:
+ KRenameImpl( QWidget* p, KMenuBar* m, QPushButton* finish );
+ ~KRenameImpl();
+
+ void setWizardMode( bool mode );
+
+ /*
+ * public because both get called from KRenameImpl::launch()
+ */
+ void updatePre();
+ void addFileOrDir( const KURL & name );
+
+ void setup( bool wizardmode );
+ void changeParent( QWidget* p, KMenuBar* m, QPushButton* finish, QRect r );
+ static QWidget* launch( QRect rect, const KURL::List & list, KRenameImpl* impl = 0, bool loadprofile = true );
+
+ /** DCOP functions we have to implement
+ */
+ void addFileOrDir( const QString & name );
+ const QString fileNameTemplate() const;
+ inline int counterStart() const;
+
+ void setExtensionTemplate( const QString & t );
+ const QString extensionTemplate() const;
+
+ void setUseExtension( bool b );
+ bool useExtension() const;
+
+ QStringList tokens() const;
+
+ QString parseString( const QString & token, const QString & string );
+ void addDir( const QString & name, const QString & filter, bool recursive, bool hidden, bool dirnames );
+
+ const QString title( int index ) const;
+
+ /** @returns true if the user has specified a profile on the commandline
+ * other wise false is returned
+ */
+ inline bool hasCommandlineProfile() const;
+
+ public slots:
+ void setFileNameTemplate( const QString & t );
+ void setCounterStart( int index );
+
+ signals:
+ void pageDone( QWidget* page, const QString & title );
+ void showPage( int page );
+ void enableFinish( bool b );
+
+ private slots:
+ void about();
+ void addFile();
+ bool checkErrors();
+ void clearList();
+ void enableControls();
+ void toggleImagePreview();
+ void moveUp();
+ void moveDown();
+ void help();
+ void removeFile();
+ void removeFile( int index );
+ void preferences();
+ void replace();
+ void saveConfig();
+ void start();
+ void updateCount();
+ void undo();
+ void changeUndoScriptName();
+ void pluginHelpChanged();
+ void getCoordinates();
+ void changeNumbers();
+ void updateDots();
+ void updatePreview();
+ void showTokenHelp();
+ void toggleName();
+ void changed();
+ void loadFilePlugins();
+ void reloadFilePluginData();
+ void manageProfiles();
+ QString easyOptions( KComboBox* combo, KMyHistoryCombo* custom );
+ void slotEasy1();
+ void slotEasy2();
+ void slotEasy3();
+ void slotEasy4();
+
+ /** Update the preview only if the passed
+ * plugin is enabled for use.
+ */
+ void updatePluginPreview( Plugin* p );
+
+ private:
+ static int numRealTimePreview;
+
+ /** Change the GUI mode according to the current setting of m_wizard
+ */
+ void changeGUIMode();
+
+ /** Returns COPY if optionCopy is checked, RENAME if optionRename is checked
+ * ...
+ */
+ int currentRenameMode();
+
+ void loadConfig();
+ void fillStructures( BatchRenamer* b, bool preview );
+ bool setupBatchRenamer( BatchRenamer* b, bool preview );
+ void splitFilename( QFileInfo* fi, QString* base, QString* extension );
+
+ void setupActions();
+ void setupPage1();
+ void setupPage2();
+ void setupPage3();
+ void setupPage4();
+ void setupTab1();
+ void setupFileTab1();
+ void setupFileTab2();
+ void setupPages();
+ void updateHist();
+ void parseCommandline();
+ void addTitle( QWidget* p, QVBoxLayout* layout, QString title );
+
+ QValueList<manualchanges> changes;
+ void refreshColumnMode();
+ void parseWizardMode();
+ void getHelpDialogString( QLineEdit* edit );
+
+ protected:
+ QWidget* parent;
+ KMenuBar* menuBar;
+ KPopupMenu* mnuSort;
+ KAction* loadPlugins;
+
+ QPushButton* finishButton;
+
+ PluginLoader* plugin;
+
+ QWidgetStack* fileTab;
+
+ QWidget* page_1;
+ QWidget* page_2;
+ KJanusWidget* page_3;
+ QWidget* page_4;
+
+ bool m_wizard;
+ bool m_loadplugins;
+ bool m_switching;
+ bool m_autosize;
+ int m_hist;
+ int m_index;
+ int m_step;
+ bool m_reset;
+
+ bool m_hasCommandlineProfile;
+
+ KPushButton* buttonUp;
+ KPushButton* buttonDown;
+ KPushButton* buttonUp2;
+ KPushButton* buttonDown2;
+ KPushButton* buttonAdd;
+ KPushButton* buttonRemove;
+ KPushButton* buttonRemoveAll;
+ KPushButton* buttonReplace;
+ KPushButton* buttonEasyReplace;
+ KPushButton* buttonHelp;
+ KPushButton* buttonMove;
+ KPushButton* buttonCoord;
+ KPushButton* buttonNumber;
+
+ KPushButton* buttonEasy1;
+ KPushButton* buttonEasy2;
+ KPushButton* buttonEasy3;
+ KPushButton* buttonEasy4;
+ KComboBox* comboSort;
+
+ QLabel* description;
+ QLabel* description2;
+ QLabel* description3;
+ QLabel* description4;
+
+ QLabel* labelTemplate;
+ QLabel* labelHelp;
+ QLabel* labelCount;
+ QLabel* labelPoint;
+
+ KMyListBox* fileList;
+ KMyListView* preview;
+ QButtonGroup* groupOptions;
+
+ QRadioButton* optionCopy;
+ QRadioButton* optionMove;
+ QRadioButton* optionRename;
+ QRadioButton* optionLink;
+
+ QGroupBox* groupExtension;
+ QVGroupBox* groupUndo;
+
+ KMyHistoryCombo* dirname;
+ KURLRequester* urlrequester;
+ KURLRequester* undorequester;
+ KMyHistoryCombo* filename;
+ KMyHistoryCombo* extemplate;
+
+ QCheckBox* checkName;
+ QCheckBox* checkExtension;
+ QCheckBox* checkOverwrite;
+ QCheckBox* checkPreview;
+ QCheckBox* checkUndoScript;
+
+ KComboBox* comboExtension;
+
+ MyHelpCombo* comboHelp;
+ HelpDialog* helpDialog;
+ HelpDialogData* helpDialogData;
+
+ BatchRenamer* b;
+ QValueList<int> skip;
+ QValueList<replacestrings> rep;
+
+ // ==========
+ // Easy mode:
+ // ==========
+
+ KComboBox* comboKRenamePrefix;
+ KComboBox* comboKRenameSuffix;
+ KComboBox* comboKRenameFilename;
+ KComboBox* comboKRenameExtension;
+
+ KMyHistoryCombo* comboPrefix;
+ KMyHistoryCombo* comboSuffix;
+ KMyHistoryCombo* comboCustom;
+ KMyHistoryCombo* comboCustomExtension;
+
+ KIntNumInput* spinStart;
+ KIntNumInput* spinNull;
+
+ // ===========
+ // Layout:
+ // ===========
+
+ QHBoxLayout* pageLayout;
+ QVBoxLayout* pageLayout_2;
+ QVBoxLayout* pageLayout_3;
+ QVBoxLayout* pageLayout_4;
+
+ QHBoxLayout* tabLayout_0;
+ QHBoxLayout* tabLayout_1;
+ QHBoxLayout* tabLayout_2;
+ QVBoxLayout* tabLayout_3;
+ QVBoxLayout* groupAdvancedExtensionLayout;
+ QVBoxLayout* groupOptionsLayout;
+ QHBoxLayout* groupDirLayout;
+ QVBoxLayout* groupNumberLayout;
+ QHBoxLayout* groupExtensionLayout;
+
+ // page1
+ QHBoxLayout* Layout2;
+ QVBoxLayout* Layout3;
+ QHBoxLayout* Layout4;
+ QVBoxLayout* Layout5;
+
+ // page4
+ QVBoxLayout* Layout10;
+ QHBoxLayout* Layout15;
+ QVBoxLayout* Layout16;
+ QHBoxLayout* Layout22;
+ QVBoxLayout* Layout23;
+
+ // tab
+ QHBoxLayout* Layout100;
+ QHBoxLayout* Layout101;
+};
+
+
+int KRenameImpl::counterStart() const
+{
+ return m_index;
+}
+
+bool KRenameImpl::hasCommandlineProfile() const
+{
+ return m_hasCommandlineProfile;
+}
+
+#endif
diff --git a/krename/krenameservicemenu.desktop b/krename/krenameservicemenu.desktop
new file mode 100644
index 0000000..608f1a4
--- /dev/null
+++ b/krename/krenameservicemenu.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Encoding=UTF-8
+ServiceTypes=all/allfiles
+Actions=Rename
+
+ExcludeServiceTypes=kdedevice/*
+
+[Desktop Action Rename]
+Name=Rename with KRename
+Name[de]=Mit KRename umbenennen
+Name[es]=Renombrar con KRename
+Name[fr]=Renommer avec KRename
+Name[pt_BR]=Renomear com KRename
+Exec=krename %F
+Icon=krename
+
diff --git a/krename/lo16-app-krename.png b/krename/lo16-app-krename.png
new file mode 100644
index 0000000..841ee79
--- /dev/null
+++ b/krename/lo16-app-krename.png
Binary files differ
diff --git a/krename/lo32-app-krename.png b/krename/lo32-app-krename.png
new file mode 100644
index 0000000..a2d4071
--- /dev/null
+++ b/krename/lo32-app-krename.png
Binary files differ
diff --git a/krename/logo.png b/krename/logo.png
new file mode 100644
index 0000000..b80036d
--- /dev/null
+++ b/krename/logo.png
Binary files differ
diff --git a/krename/main.cpp b/krename/main.cpp
new file mode 100644
index 0000000..f8df37a
--- /dev/null
+++ b/krename/main.cpp
@@ -0,0 +1,148 @@
+/***************************************************************************
+ main.cpp - description
+ -------------------
+ begin : Die Mai 15 15:34:19 CEST 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 your2192 option) any later version. *
+ * *
+ ***************************************************************************/
+
+// Qt includes
+#include <qrect.h>
+#include <qwidget.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kaboutapplication.h>
+#include <kcmdlineargs.h>
+#include <kconfig.h>
+#include <kimageio.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+
+// Own includes
+#include "wizard.h"
+#include "tabs.h"
+#include "krenameimpl.h"
+#include "firststartdlg.h"
+
+#ifdef HAVE_CONFIG_H
+ #include <config.h>
+#endif
+
+// OS includes
+#include <unistd.h>
+#include <sys/types.h>
+
+#ifndef VERSION
+ #define VERSION "unknown"
+#endif
+
+KAboutData aboutData( "krename", I18N_NOOP("KRename"), VERSION, I18N_NOOP(
+ "KRename is a batch file renamer which can rename a\n"
+ "list of files based on a set of expressions.\n\n"
+ "If you like KRename you may want to support it.\n"
+ "Testing, bug fixes and feature request are as welcome\n"
+ "as financial support (everybody needs money ;)\nSee help files for details.\n" ),
+ KAboutData::License_GPL, "KRename Build:" __DATE__ " " __TIME__
+ , "(c) 2001-2007, Dominik Seichter\n",
+ "http://www.krename.net", "domseichter@web.de" );
+
+
+static KCmdLineOptions options[] =
+{
+ { "+[file]", I18N_NOOP("file will be added to the list of files for renaming"), 0},
+ { "r +[dir]", I18N_NOOP("add directory recursively"), 0 },
+ { "template +", I18N_NOOP("set a template"), 0 },
+ { "extension +", I18N_NOOP("set a template for the file extension"), 0 },
+ { "use-plugin +", I18N_NOOP("enable a plugin for use"), 0 },
+ { "copy +[dir]", I18N_NOOP("copy files to directory"), 0 },
+ { "move +[dir]", I18N_NOOP("move files to directory"), 0 },
+ { "profile +[profile]", I18N_NOOP("load the profile named [profile] on startup"), 0 },
+ { "start", I18N_NOOP("start renaming immediately"), 0 },
+ { "previewitems <num>", I18N_NOOP("only show <num> preview items"), 0 },
+ KCmdLineLastOption
+};
+
+int main(int argc, char *argv[])
+{
+ aboutData.addAuthor("Dominik Seichter", 0, "domseichter@web.de",
+ "http://www.krename.net" );
+ aboutData.addAuthor("Stefan \"Stonki\" Onken",
+ I18N_NOOP("Website, testing, very good ideas and keeping me coding!"),
+ "support@stonki.de", "http://www.stonki.de" );
+
+ aboutData.addCredit("Trevor Semeniuk", I18N_NOOP("Thanks to him for creating RedHat 7.x packages and some other help."),
+ "semeniuk@ee.ualberta.ca", "http://www.semeniuk.net" );
+ aboutData.addCredit("Groult Richard", I18N_NOOP("Fixed a bug with startIndex and added the BatchRenamer class\n"
+ "to his excellent image viewer showimg."),
+ "rgroult@jalix.org", "http://ric.jalix.org/" );
+ aboutData.addCredit("Michael Elvers", I18N_NOOP("Fixed a bug that caused krename not closing open files."),
+ "m_elvers@yahoo.com", "http://come.to/melvers" );
+ aboutData.addCredit("Andreas Pour", I18N_NOOP("Thanks for his great job at apps.kde.com and help with contributing krename to apps.kde.com."),
+ "pour@mieterra.com", "http://apps.kde.com" );
+ aboutData.addCredit("Charles Samuels", I18N_NOOP("Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."),
+ "charles@kde.org", "http://noatun.kde.org/" );
+ aboutData.addCredit("Franz Schmid", I18N_NOOP("Gave me a good start into writing plugins with his application scribus."),
+ "Franz.Schmid@altmuehlnet.de", "http://web2.altmuehlnet.de/fschmid/index.html" );
+ aboutData.addCredit("Rolf Magnus", I18N_NOOP("Parts of the PNG support are copied from his KFile plugin for png support."),
+ "ramagnus@kde.org" );
+ aboutData.addCredit("Michael v.Ostheim", I18N_NOOP("Created the Gentoo Ebuild scripts for Krename."),
+ "MvOstheim@web.de", "http://www.vonostheim.de" );
+ aboutData.addCredit("Brandon Low", I18N_NOOP("Some GCC 3.1 fixes for Gentoo."),
+ "lostlogic@gentoo.org", "http://www.gentoo.org" );
+ aboutData.addCredit("Per �vind Karlsen", I18N_NOOP("Thanks for creating the Mandrake RPM"),
+ "peroyvind@delonic.no" );
+ aboutData.addCredit("Daniele Medri", I18N_NOOP("Italian translation"), "madrid@linuxmeeting.net" );
+ aboutData.addCredit("Stephan Johach", I18N_NOOP("Provided a gcc3.x namespace patch"), "lucardus@onlinehome.de" );
+ aboutData.addCredit("Micha� Zugaro", I18N_NOOP("Provided the new preview and move features") , "michael.zugaro@college-de-france.fr" );
+ aboutData.addCredit("Rene Gass", I18N_NOOP("Fixed problems with the spec file and contributed rpms for every SuSE version you can imagine and is also the new Gentoo maintainer for KRename"), "kde-package@gmx.de" );
+ aboutData.addCredit("Mark Volkert", I18N_NOOP("Provided SuSE RPMs and very good suggestions"), "mark.volkert@rakekniven.de" );
+ aboutData.addCredit("Jose Rodriguez", I18N_NOOP("Contributed a Spanish translation"), "chmpmi@eresmas.net" );
+ aboutData.addCredit("Steven P. Ulrick", I18N_NOOP("Provided a RedHat RPM and was big help in improving KRename"), "steve@afolkey2.net" );
+ aboutData.addCredit("UTUMI Hirosi", I18N_NOOP("Translated KRename to Japanese"), "utuhiro@mx12.freecom.ne.jp" );
+ aboutData.addCredit("Nicolas Benoit", I18N_NOOP("Translated KRename into French"), "nbenoit@tuxfamily.org" );
+ aboutData.addCredit("Krzysztof Pawlak", I18N_NOOP("Translated KRename into Polish"), "jmnemonic@gazeta.pl" );
+ aboutData.addCredit("Ilya Ivkov", I18N_NOOP("Translated KRename into Russian"), "ilya-ivkov@yandex.ru" );
+ aboutData.addCredit("Asim Husanovic", I18N_NOOP("Translated KRename into Bosnian"), "asim.h@megatel.ba" );
+
+ KCmdLineArgs::init( argc, argv, &aboutData );
+ KCmdLineArgs::addCmdLineOptions( options );
+
+ KApplication a;
+ a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
+
+ KImageIO::registerFormats();
+
+ QWidget* krename = KRenameImpl::launch( QRect( 0, 0, 0, 0 ), QStringList() );
+
+ /* Check if Krename
+ * was started from root!
+ */
+ unsigned int uid = geteuid();
+ if( uid == 0 )
+ KMessageBox::information( krename, i18n(
+ "<b>Krename was started from root!</b><br>"
+ "When started from root, Krename may damage your "
+ "system if you do not know exactly what you are "
+ "doing!"
+ ), i18n("Error"), "KrenameRootWarning" );
+
+/*
+ * Activate this warning message for unstable development releases.
+ */
+/* KMessageBox::sorry( krename, i18n(
+ "<b>Warning !</b> This is a development release which may cause damage to your files!"
+ "<br>Make backups before using KRename." ));
+*/
+ return a.exec();
+}
+
diff --git a/krename/mydirplugin.cpp b/krename/mydirplugin.cpp
new file mode 100644
index 0000000..202079f
--- /dev/null
+++ b/krename/mydirplugin.cpp
@@ -0,0 +1,169 @@
+/***************************************************************************
+ mydirplugin.cpp - description
+ -------------------
+ begin : Tue Jan 29 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// Own includes
+#include "mydirplugin.h"
+
+// KDE includes
+#include <kapplication.h>
+#include <kiconloader.h>
+#include <kfiledialog.h>
+#include <klocale.h>
+
+// QT includes
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qspinbox.h>
+
+const QString MyDirPlugin::getName() const
+{
+ return i18n("Dir Plugin");
+}
+
+const QString MyDirPlugin::getAccelName() const
+{
+ return i18n("&Dir Plugin");
+}
+
+const int MyDirPlugin::type() const
+{
+ return TYPE_FINAL_FILE;
+}
+
+bool MyDirPlugin::checkError()
+{
+ return true;
+}
+
+const QPixmap MyDirPlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "folder", KIcon::Small );
+}
+
+void MyDirPlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+ QSpacerItem* spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ QVBoxLayout* LayoutA = new QVBoxLayout( 0, 6, 6 );
+ QVBoxLayout* LayoutB = new QVBoxLayout( 0, 6, 6 );
+
+ m_widget = w;
+
+ QLabel* la = new QLabel( w );
+ la->setText( i18n("<qt>This plugin sorts files after renaming in subdirectories.</qt>") );
+ l->addWidget( la );
+
+ groupNumber = new QGroupBox( w );
+ groupNumber->setTitle( i18n( "&Options" ) );
+ groupNumber->setColumnLayout(0, Qt::Vertical );
+ groupNumber->layout()->setSpacing( 6 );
+ groupNumber->layout()->setMargin( 11 );
+ groupNumberLayout = new QHBoxLayout( groupNumber->layout() );
+ groupNumberLayout->setAlignment( Qt::AlignTop );
+
+ QLabel* la2 = new QLabel( groupNumber );
+ la2->setText( i18n( "Files per directory:" ) );
+
+ spinFiles = new QSpinBox( groupNumber );
+ spinFiles->setRange( 1, 60000 );
+ spinFiles->setValue( 10 );
+
+ QLabel* la3 = new QLabel( groupNumber );
+ la3->setText( i18n( "Start index:" ) );
+
+ spinStart = new QSpinBox( groupNumber );
+ spinFiles->setRange( 0, 60000 );
+
+ LayoutA->addWidget( la2 );
+ LayoutA->addWidget( la3 );
+ LayoutB->addWidget( spinFiles );
+ LayoutB->addWidget( spinStart );
+
+ groupNumberLayout->addLayout( LayoutA );
+ groupNumberLayout->addLayout( LayoutB );
+ groupNumberLayout->addItem( spacer );
+
+ groupOutput = new QGroupBox( w );
+ groupOutput->setTitle( i18n( "Output &Directory" ) );
+ groupOutput->setColumnLayout(0, Qt::Vertical );
+ groupOutput->layout()->setSpacing( 6 );
+ groupOutput->layout()->setMargin( 11 );
+ groupOutputLayout = new QHBoxLayout( groupOutput->layout() );
+ groupOutputLayout->setAlignment( Qt::AlignTop );
+
+ outputdir = new QLineEdit( groupOutput );
+ buttonDir = new QPushButton( groupOutput );
+ buttonDir->setText( "..." );
+
+ groupOutputLayout->addWidget( outputdir );
+ groupOutputLayout->addWidget( buttonDir );
+
+ l->addWidget( groupNumber );
+ l->addWidget( groupOutput );
+ l->addItem( spacer2 );
+
+ connect( buttonDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
+}
+
+void MyDirPlugin::fillStructure()
+{
+ fpd = spinFiles->value();
+ fpd--;
+ dir = outputdir->text();
+
+ filecounter = 0;
+ dircounter = spinStart->value();
+ curdir = dir + QString("/%1/").arg( dircounter );
+
+ d = new QDir( dir );
+ d->mkdir( curdir );
+}
+
+QString MyDirPlugin::processFile( BatchRenamer*, int, QString token, int )
+{
+ QString newname;
+ // token = filename
+ if( filecounter == fpd ) {
+ filecounter = 0;
+ dircounter++;
+ curdir = dir + QString("/%1/").arg( dircounter );
+ d->mkdir( curdir );
+ }
+
+ QFileInfo f( token );
+ newname = curdir + f.fileName();
+ d->rename( token, newname );
+ filecounter++;
+ return QString::null;
+}
+
+void MyDirPlugin::finished()
+{
+ filecounter = dircounter = 0;
+}
+
+void MyDirPlugin::chooseDir()
+{
+ QString s (KFileDialog::getExistingDirectory ( QString::null ));
+ if(!s.isEmpty())
+ outputdir->setText( s );
+}
+
diff --git a/krename/mydirplugin.h b/krename/mydirplugin.h
new file mode 100644
index 0000000..1c27dc7
--- /dev/null
+++ b/krename/mydirplugin.h
@@ -0,0 +1,72 @@
+/***************************************************************************
+ mydirplugin.h - description
+ -------------------
+ begin : Tue Jan 29 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef MYDIRPLUGIN_H
+#define MYDIRPLUGIN_H
+
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "plugin.h"
+#include "helpdialog.h"
+
+class QDir;
+class QHBoxLayout;
+class QGroupBox;
+class QLineEdit;
+class QPushButton;
+class QSpinBox;
+class QString;
+class QVBoxLayout;
+class QWidget;
+class MyDirPlugin : public Plugin {
+ Q_OBJECT
+ public:
+ const QString getName() const;
+ const QString getAccelName() const;
+ const int type() const;
+ bool checkError();
+ void drawInterface( QWidget* w, QVBoxLayout* l );
+ void fillStructure();
+ QString processFile( BatchRenamer*, int, QString token, int );
+ void finished();
+
+ const QPixmap getIcon() const;
+
+ private slots:
+ void chooseDir();
+
+ protected:
+ int fpd; // files per dir
+ int filecounter;
+ int dircounter;
+ QString dir;
+ QString curdir;
+ QDir* d;
+
+ QLineEdit* outputdir;
+ QPushButton* buttonDir;
+ QSpinBox* spinFiles;
+ QSpinBox* spinStart;
+
+ QGroupBox* groupOutput;
+ QHBoxLayout* groupOutputLayout;
+
+ QGroupBox* groupNumber;
+ QHBoxLayout* groupNumberLayout;
+};
+
+#endif
diff --git a/krename/myinputdialog.cpp b/krename/myinputdialog.cpp
new file mode 100644
index 0000000..10428d2
--- /dev/null
+++ b/krename/myinputdialog.cpp
@@ -0,0 +1,109 @@
+/***************************************************************************
+ myinputdialog.cpp - description
+ -------------------
+ begin : Mit Apr 01 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "myinputdialog.h"
+
+#include <klineedit.h>
+#include <kpushbutton.h>
+#include <klocale.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+
+MyInputDialog::MyInputDialog( QString filename, bool revertEnabled, QWidget* parent )
+ : QDialog( parent, 0, true, 0 )
+{
+ // I do not think this has to be translated
+ setCaption( "KRename" );
+
+ MyInputDialogLayout = new QVBoxLayout( this, 11, 6, "MyInputDialogLayout");
+ Layout = new QHBoxLayout( 0, 0, 6, "Layout");
+
+ TextLabel1 = new QLabel( this, "TextLabel1" );
+ TextLabel1->setText( i18n( "Please input a new filename:" ) );
+
+ text = new KLineEdit( this, "text" );
+ text->setText( filename );
+
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+
+ buttonKrename = new KPushButton( this, "buttonKrename" );
+ buttonKrename->setText( i18n( "&Revert Changes" ) );
+ buttonKrename->setEnabled( revertEnabled );
+
+ buttonFilename = new KPushButton( this, "buttonFilename" );
+ buttonFilename->setText( i18n("Use &Input Filename") );
+
+ buttonOk = new KPushButton( this, "buttonOk" );
+ buttonOk->setText( i18n( "&Ok" ) );
+ buttonOk->setDefault( true );
+
+ buttonCancel = new KPushButton( this, "buttonCancel" );
+ buttonCancel->setText( i18n( "&Cancel" ) );
+
+ text->setFocus();
+
+ Layout->addWidget( buttonKrename );
+ Layout->addWidget( buttonFilename );
+ Layout->addItem( spacer );
+ Layout->addWidget( buttonOk );
+ Layout->addWidget( buttonCancel );
+
+ MyInputDialogLayout->addWidget( TextLabel1 );
+ MyInputDialogLayout->addWidget( text );
+ MyInputDialogLayout->addLayout( Layout );
+
+ connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
+ connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) );
+ connect( buttonKrename, SIGNAL( clicked() ), this, SLOT( krename() ) );
+ connect( buttonFilename, SIGNAL( clicked() ), this, SLOT( slotFilename() ) );
+
+ QToolTip::add( buttonKrename, i18n("Use the filename that is generated by "
+ "KRename instead of your changes." ) );
+}
+
+MyInputDialog::~MyInputDialog()
+{ }
+
+ QString MyInputDialog::filename() const
+{
+ return text->text();
+}
+
+void MyInputDialog::accept()
+{
+ if( text->text().isEmpty() )
+ reject();
+ else
+ done( OK );
+}
+
+void MyInputDialog::reject()
+{
+ done( CANCEL );
+}
+
+void MyInputDialog::krename()
+{
+ done( USE_KRENAME );
+}
+
+void MyInputDialog::slotFilename()
+{
+ text->setText( m_oldfilename );
+}
+
diff --git a/krename/myinputdialog.h b/krename/myinputdialog.h
new file mode 100644
index 0000000..689cead
--- /dev/null
+++ b/krename/myinputdialog.h
@@ -0,0 +1,74 @@
+/***************************************************************************
+ myinputdialog.h - description
+ -------------------
+ begin : Mit Apr 01 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef MYINPUTDIALOG_H
+#define MYINPUTDIALOG_H
+
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class KLineEdit;
+class KPushButton;
+class QLabel;
+class QString;
+class MyInputDialog : public QDialog
+{
+ Q_OBJECT
+ public:
+ MyInputDialog( QString filename, bool revertEnabled = true, QWidget* parent = 0 );
+ ~MyInputDialog();
+
+ QString filename() const;
+ inline void setInputFilename( const QString s );
+
+ enum returnCodes {
+ OK,
+ CANCEL,
+ USE_KRENAME
+ };
+
+ private slots:
+ /** Use the file name generated by KRename....
+ */
+ void krename(); // ????? :-)
+ void slotFilename();
+ void accept();
+ void reject();
+
+ private:
+ QLabel* TextLabel1;
+ KLineEdit* text;
+ KPushButton* buttonKrename;
+ KPushButton* buttonFilename;
+ KPushButton* buttonOk;
+ KPushButton* buttonCancel;
+
+ QString m_oldfilename;
+
+ protected:
+ QVBoxLayout* MyInputDialogLayout;
+ QHBoxLayout* Layout;
+};
+
+void MyInputDialog::setInputFilename( const QString s )
+{
+ m_oldfilename = s;
+}
+
+#endif // MYINPUTDIALOG_H
diff --git a/krename/numberdialog.cpp b/krename/numberdialog.cpp
new file mode 100644
index 0000000..d7264c9
--- /dev/null
+++ b/krename/numberdialog.cpp
@@ -0,0 +1,171 @@
+/***************************************************************************
+ numberdialog.cpp - description
+ -------------------
+ begin : Don Apr 24 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "numberdialog.h"
+#include "batchrenamer.h"
+
+// Qt includes
+#include <qgroupbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kpushbutton.h>
+#include <qcheckbox.h>
+
+void KMyIntSpinBox::keyPressEvent( QKeyEvent* e )
+{
+ if( e->key() == Key_Return )
+ emit returnPressed();
+}
+
+NumberDialog::NumberDialog(QValueList<int> & n,QWidget *parent )
+ : KDialogBase( KDialogBase::Plain, "KRename",
+ KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, parent, 0, true, true )
+{
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ QVBoxLayout* layout = new QVBoxLayout( plainPage(), 6, 6 );
+
+ QGroupBox* group1 = new QGroupBox( plainPage() );
+ group1->setTitle( i18n("&Numbering") );
+ group1->setColumnLayout(0, Qt::Vertical );
+ group1->layout()->setSpacing( 6 );
+ group1->layout()->setMargin( 11 );
+ QVBoxLayout* group1Layout = new QVBoxLayout( group1->layout() );
+ group1Layout->setAlignment( Qt::AlignTop );
+
+ spinIndex = new KIntNumInput( group1 );
+ spinIndex->setMaxValue( SPINMAX );
+ spinIndex->setLabel( i18n( "Start &index:" ), AlignLeft | AlignVCenter );
+
+ spinStep = new KIntNumInput( spinIndex, 1, group1 );
+ spinStep->setRange( -SPINMAX, SPINMAX, 1, false );
+ spinStep->setValue( 1 );
+ spinStep->setLabel( i18n( "Step &by:" ), AlignLeft | AlignVCenter );
+
+ checkResetCounter = new QCheckBox( i18n("&Reset counter for every directory"), group1 );
+
+ QGroupBox* group2 = new QGroupBox( plainPage() );
+ group2->setTitle( i18n("S&kip Numbers") );
+ group2->setColumnLayout(0, Qt::Horizontal );
+ group2->layout()->setSpacing( 6 );
+ group2->layout()->setMargin( 11 );
+ QHBoxLayout* group2Layout = new QHBoxLayout( group2->layout() );
+ group2Layout->setAlignment( Qt::AlignTop );
+
+ listNumbers = new KListBox( group2 );
+
+ buttonAdd = new KPushButton( group2 );
+ buttonAdd->setText( i18n( "&Add Number" ) );
+
+ buttonRemove = new KPushButton( group2 );
+ buttonRemove->setText( i18n( "&Remove Number" ) );
+
+ spinNumber = new KMyIntSpinBox( group2 );
+ spinNumber->setMaxValue( SPINMAX );
+ spinNumber->setMinValue( -SPINMAX );
+ spinNumber->setValue( 0 );
+ spinNumber->setFocus();
+
+ QVBoxLayout* layout2 = new QVBoxLayout( 0, 6, 6 );
+ layout2->addWidget( buttonAdd );
+ layout2->addWidget( buttonRemove );
+ layout2->addWidget( spinNumber );
+ layout2->addItem( spacer );
+
+ group1Layout->addWidget( spinIndex );
+ group1Layout->addWidget( spinStep );
+ group1Layout->addWidget( checkResetCounter );
+
+ group2Layout->addWidget( listNumbers );
+ group2Layout->addLayout( layout2 );
+
+ layout->addWidget( group1 );
+ layout->addWidget( group2 );
+
+ QToolTip::add( spinIndex, i18n( "Number of the first file." ) );
+ QToolTip::add( spinStep, i18n( "The counter is increased/decreased by this value." ) );
+ QToolTip::add( listNumbers, i18n("Add all numbers that should be skipped by krename during the rename process.<br>"
+ "E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ...") );
+ QToolTip::add( checkResetCounter, i18n("<qt>The counter is set to the start index in every directory. "
+ "This setting applies to all used counters.</qt>" ) );
+
+ connect( buttonAdd, SIGNAL( clicked() ), this, SLOT( addNumber() ) );
+ connect( buttonRemove,SIGNAL( clicked() ), this, SLOT( removeNumber() ) );
+ connect( spinNumber, SIGNAL( returnPressed()), this, SLOT( addNumber() ) );
+
+ for( unsigned int i = 0; i < n.count(); i++ )
+ listNumbers->insertItem( QString("%1").arg(n[i]), -1 );
+
+ update();
+}
+
+NumberDialog::~NumberDialog()
+{
+}
+
+void NumberDialog::addNumber()
+{
+ QString tmp = QString("%1").arg(spinNumber->value());
+ for( unsigned int i = 0; i < listNumbers->count(); i++ )
+ if( listNumbers->text(i) == tmp )
+ return;
+ listNumbers->insertItem( tmp, -1 );
+ sort();
+}
+
+void NumberDialog::removeNumber()
+{
+ unsigned int i = 0;
+ do {
+ if(listNumbers->isSelected( i )) {
+ listNumbers->removeItem( i );
+ listNumbers->setSelected( i-1, true );
+ return;
+ } else
+ i++;
+ } while( i < listNumbers->count() );
+}
+
+QValueList<int> NumberDialog::getList()
+{
+ QValueList<int> skip;
+ for( unsigned int i = 0; i < listNumbers->count(); i++ )
+ skip.append( listNumbers->text(i).toInt() );
+
+ return skip;
+}
+
+void NumberDialog::sort()
+{
+ // Not very fast, but I hope it won't be used on ot big lists ;)
+ if( listNumbers->count() < 1 )
+ return;
+
+ for( unsigned int i = 0; i < listNumbers->count()-1; i++) {
+ if( listNumbers->text(i).toInt() > listNumbers->text(i+1).toInt() ) {
+ QString tmp = listNumbers->text(i);
+ listNumbers->removeItem(i);
+ listNumbers->insertItem( tmp, i+1 );
+ i = 0;
+ }
+ }
+}
diff --git a/krename/numberdialog.h b/krename/numberdialog.h
new file mode 100644
index 0000000..9de464c
--- /dev/null
+++ b/krename/numberdialog.h
@@ -0,0 +1,74 @@
+/***************************************************************************
+ numberdialog.h - description
+ -------------------
+ begin : Don Apr 24 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef NUMBERDIALOG_H
+#define NUMBERDIALOG_H
+
+#include <qwidget.h>
+#include <kdialogbase.h>
+#include <qvaluelist.h>
+
+// KDE includes
+#include <knuminput.h>
+
+class KMyIntSpinBox : public KIntSpinBox
+{
+ Q_OBJECT
+ public:
+ KMyIntSpinBox( QWidget* parent )
+ : KIntSpinBox( parent )
+ { };
+ ~KMyIntSpinBox() { };
+ private:
+ void keyPressEvent( QKeyEvent* e );
+ signals:
+ void returnPressed();
+};
+
+class QCheckBox;
+class KIntNumInput;
+class KListBox;
+class KPushButton;
+class NumberDialog : public KDialogBase {
+ Q_OBJECT
+ public:
+ NumberDialog(QValueList<int> & n,QWidget *parent=0);
+ ~NumberDialog();
+
+ // TODO: bad object oriented design!!!
+ // make them accessible by members
+ KIntNumInput* spinIndex;
+ KIntNumInput* spinStep;
+
+ QCheckBox* checkResetCounter;
+
+ QValueList<int> getList();
+
+ private slots:
+ void addNumber();
+ void removeNumber();
+
+ private:
+ void sort();
+
+ KListBox* listNumbers;
+ KPushButton* buttonAdd;
+ KPushButton* buttonRemove;
+ KMyIntSpinBox* spinNumber;
+};
+
+#endif
diff --git a/krename/permission.cpp b/krename/permission.cpp
new file mode 100644
index 0000000..918052e
--- /dev/null
+++ b/krename/permission.cpp
@@ -0,0 +1,329 @@
+/***************************************************************************
+ permission.cpp - description
+ -------------------
+ begin : Sun Jan 13 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "permission.h"
+
+// QT includes
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <kiconloader.h>
+#include <klocale.h>
+
+// OS includes
+#include <stdio.h>
+#include <pwd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <grp.h>
+#include <unistd.h>
+
+const QString MyPermPlugin::getName() const
+{
+ return i18n("Permissions");
+}
+
+const QString MyPermPlugin::getAccelName() const
+{
+ return i18n("&Permissions");
+}
+
+const int MyPermPlugin::type() const
+{
+ return TYPE_FINAL_FILE;
+}
+
+bool MyPermPlugin::checkError()
+{
+ return true;
+}
+
+void MyPermPlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ int i;
+ unsigned int uid; // Maybe this must be signed int ?
+ struct passwd *user;
+ struct group *ge;
+ QLabel *la, *cl[3];
+ QGridLayout *gl;
+
+ QString strOwner;
+
+ m_widget = w;
+
+ l->setResizeMode( QLayout::FreeResize );
+ w->setMinimumSize( QSize( 100, 100 ) );
+
+ Layout0 = new QVBoxLayout( 0, 0, 6 );
+
+ groupPermission = new QGroupBox ( i18n("Access permissions"), w );
+ groupPermission->setEnabled( FALSE );
+
+ gl = new QGridLayout (groupPermission, 6, 6, 15);
+ gl->addRowSpacing(0, 10);
+
+ checkPermissions = new QCheckBox( i18n("Change &Permissions"), w );
+
+ la = new QLabel(i18n("Class"), groupPermission);
+ gl->addWidget(la, 1, 0);
+
+ la = new QLabel( i18n("Read"), groupPermission );
+ gl->addWidget (la, 1, 1);
+
+ la = new QLabel( i18n("Write"), groupPermission );
+ gl->addWidget (la, 1, 2);
+
+ la = new QLabel( i18n("Exec"), groupPermission );
+ QSize size = la->sizeHint();
+ size.setWidth(size.width() + 15);
+ la->setFixedSize(size);
+ gl->addWidget (la, 1, 3);
+
+ la = new QLabel( i18n("Special"), groupPermission );
+ gl->addMultiCellWidget(la, 1, 1, 4, 5);
+
+ cl[0] = new QLabel( i18n("User"), groupPermission );
+ gl->addWidget (cl[0], 2, 0);
+
+ cl[1] = new QLabel( i18n("Group"), groupPermission );
+ gl->addWidget (cl[1], 3, 0);
+
+ cl[2] = new QLabel( i18n("Others"), groupPermission );
+ gl->addWidget (cl[2], 4, 0);
+
+ la = new QLabel(i18n("UID"), groupPermission);
+ gl->addWidget(la, 2, 5);
+
+ la = new QLabel(i18n("GID"), groupPermission);
+ gl->addWidget(la, 3, 5);
+
+ la = new QLabel(i18n("Sticky"), groupPermission);
+ gl->addWidget(la, 4, 5);
+
+ for (int row = 0; row < 3 ; ++row) {
+ for (int col = 0; col < 4; ++col) {
+ QCheckBox *cb = new QCheckBox(groupPermission);
+ permBox[row][col] = cb;
+ gl->addWidget (permBox[row][col], row+2, col+1);
+
+ permBox[row][0]->setChecked( TRUE );
+ }
+ }
+ permBox[0][1]->setChecked( TRUE );
+
+ gl->setColStretch(6, 10);
+
+ checkOwner = new QCheckBox( i18n("Change &Owner"), w );
+
+ groupOwner = new QGroupBox ( i18n("Ownership"), w );
+ groupOwner->setEnabled( FALSE );
+ groupOwner->setColumnLayout(0, Qt::Vertical );
+ groupOwner->layout()->setSpacing( 6 );
+ groupOwner->layout()->setMargin( 11 );
+ groupOwnerLayout = new QVBoxLayout( groupOwner->layout() );
+ groupOwnerLayout->setAlignment( Qt::AlignTop );
+
+ Layout2 = new QHBoxLayout( 0, 0, 6 );
+ Layout3 = new QHBoxLayout( 0, 0, 6 );
+ Layout4 = new QHBoxLayout( 0, 0, 6 );
+
+ la = new QLabel( i18n("User:"), groupOwner );
+ Layout2->addWidget( la );
+ la = new QLabel( i18n("Group:"), groupOwner );
+ Layout3->addWidget( la );
+
+ username = new KComboBox( groupOwner );
+ uid = geteuid();
+
+ setpwent();
+ for (i=0; ((user = getpwent()) != 0L) && (i < MAXENTRIES); i++) {
+ if( uid == 0 )
+ username->insertItem(QString::fromLatin1(user->pw_name));
+ else
+ if( user->pw_uid == uid )
+ username->insertItem(QString::fromLatin1(user->pw_name));
+ }
+ endpwent();
+
+ groupname = new KComboBox( groupOwner );
+ user = getpwuid(geteuid());
+ QString strUser = user->pw_name;
+
+ setgrent();
+ for (i=0; ((ge = getgrent()) != 0L) && (i < MAXENTRIES); i++) {
+ if( uid == 0 ) {
+ groupname->insertItem(QString::fromLatin1(ge->gr_name));
+ } else {
+ char ** members = ge->gr_mem;
+ char * member;
+
+ while ((member = *members) != 0L) {
+ if (strUser == member) {
+ groupname->insertItem(QString::fromLatin1(ge->gr_name));
+ break;
+ }
+
+ ++members;
+ }
+ }
+ }
+ endgrent();
+
+ /* add the users group */
+ ge = getgrgid (getegid());
+ if (ge) {
+ QString name = QString::fromLatin1(ge->gr_name);
+ if (name.isEmpty())
+ name.setNum(ge->gr_gid);
+
+ groupname->insertItem( name );
+ }
+
+ // make the users group visible
+ groupname->setCurrentItem( groupname->count() );
+
+ QSpacerItem* spacer8 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+ QSpacerItem* spacer9 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ Layout2->addWidget( username );
+ Layout2->addItem( spacer8 );
+ Layout3->addWidget( groupname );
+ Layout3->addItem( spacer9 );
+
+ groupOwnerLayout->addLayout( Layout2 );
+ groupOwnerLayout->addLayout( Layout3 );
+
+ QSpacerItem* spacer10 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ Layout4->addWidget( checkPermissions );
+ Layout4->addWidget( checkOwner );
+
+ l->addLayout( Layout4 );
+ l->addWidget( groupPermission );
+ l->addWidget( groupOwner );
+ l->addItem( spacer10 );
+
+ connect( checkOwner, SIGNAL(clicked()), this, SLOT(enableControls()) );
+ connect( checkPermissions, SIGNAL(clicked()), this, SLOT(enableControls()) );
+}
+
+void MyPermPlugin::fillStructure()
+{
+ perm.changeOwner = checkOwner->isChecked();
+ perm.changePermissions = checkPermissions->isChecked();
+ if( perm.changeOwner ) {
+ perm.group = groupname->currentText();
+ perm.owner = username->currentText();
+ }
+
+ if( perm.changePermissions )
+ perm.newPermission = getPermissions();
+
+}
+
+QString MyPermPlugin::processFile( BatchRenamer* b, int i, QString, int )
+{
+ QString filename = b->files()[i].dst.name;
+ if( perm.changePermissions )
+ if( chmod( (const char *)filename, (mode_t)perm.newPermission ) == -1 )
+ return QString( i18n("Can't chmod %1.") ).arg(filename);
+
+ if( perm.changeOwner )
+ if( chown( (const char*)filename, getUid( perm.owner), getGid( perm.group )))
+ return QString( i18n("Can't chown %1.") ).arg(filename);
+
+ return QString::null;
+}
+
+void MyPermPlugin::finished()
+{
+ // We don't care about this event!
+ return;
+}
+
+int MyPermPlugin::getPermissions()
+{
+ int fperm[3][4] = {
+ {S_IRUSR, S_IWUSR, S_IXUSR, S_ISUID},
+ {S_IRGRP, S_IWGRP, S_IXGRP, S_ISGID},
+ {S_IROTH, S_IWOTH, S_IXOTH, S_ISVTX}
+ };
+
+ int permissions = 0, mask = 0;
+
+ for (int row = 0;row < 3; ++row)
+ for (int col = 0; col < 4; ++col)
+ {
+ switch (permBox[row][col]->state())
+ {
+ case QCheckBox::On:
+ permissions |= fperm[row][col];
+ //fall through
+ case QCheckBox::Off:
+ mask |= fperm[row][col];
+ break;
+ default:
+ break;
+ }
+ }
+
+ return permissions;
+}
+
+int MyPermPlugin::getGid( QString group )
+{
+ int i, r;
+ struct group *ge;
+ setgrent();
+ for (i=0; ((ge = getgrent()) != 0L) && (i < MAXENTRIES); i++)
+ if( !strcmp( ge->gr_name, (const char *)group ) )
+ break;
+ r = ge->gr_gid;
+ endgrent();
+ return r;
+}
+
+int MyPermPlugin::getUid( QString owner )
+{
+ int i, r;
+ struct passwd *user;
+ setpwent();
+ for (i=0; ((user = getpwent()) != 0L) && (i < MAXENTRIES); i++)
+ if( !strcmp(user->pw_name, (const char *)owner) )
+ break;
+ r = user->pw_uid;
+ endpwent();
+ return r;
+}
+
+void MyPermPlugin::enableControls()
+{
+ groupOwner->setEnabled( checkOwner->isChecked() );
+ groupPermission->setEnabled( checkPermissions->isChecked() );
+}
+
+const QPixmap MyPermPlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "clanbomber", KIcon::Small );
+}
+
+
diff --git a/krename/permission.h b/krename/permission.h
new file mode 100644
index 0000000..5bbf66b
--- /dev/null
+++ b/krename/permission.h
@@ -0,0 +1,90 @@
+/***************************************************************************
+ permission.h - description
+ -------------------
+ begin : Sun Jan 13 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef PERMISSION_H
+#define PERMISSION_H
+
+/*
+ * This two includes are required, because you have to use
+ * krenames internal structures and enums.
+ */
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "plugin.h"
+#include "helpdialog.h"
+
+#include <stdio.h>
+
+class KComboBox;
+class QCheckBox;
+class QGroupBox;
+class QVBoxLayout;
+class QHBoxLayout;
+class QString;
+class QWidget;
+
+
+// Plugin class starts here
+class MyPermPlugin: public Plugin {
+ Q_OBJECT
+ public:
+ const QString getName() const;
+ const QString getAccelName() const;
+ const int type() const;
+
+ bool checkError();
+ void drawInterface( QWidget* w, QVBoxLayout* l );
+ void fillStructure();
+ QString processFile( BatchRenamer* b, int, QString token, int );
+ void finished();
+ const QPixmap getIcon() const;
+
+ private:
+ int getPermissions();
+ int getGid( QString group );
+ int getUid( QString owner );
+
+ struct pervals {
+ bool changePermissions;
+ bool changeOwner;
+
+ QString owner; // name of owner
+ QString group; // name of group
+
+ int newPermission; // Permissions
+ }perm;
+
+ private slots:
+ void enableControls();
+
+ protected:
+ QGroupBox* groupPermission;
+ QGroupBox* groupOwner;
+ QCheckBox* checkPermissions;
+ QCheckBox* checkOwner;
+ QCheckBox* permBox[3][4];
+ KComboBox* username;
+ KComboBox* groupname;
+
+ QVBoxLayout* groupOwnerLayout;
+ QVBoxLayout* Layout0;
+ QHBoxLayout* Layout2;
+ QHBoxLayout* Layout3;
+ QHBoxLayout* Layout4;
+};
+
+#endif
diff --git a/krename/pictureplugin.cpp b/krename/pictureplugin.cpp
new file mode 100644
index 0000000..d0a0bc3
--- /dev/null
+++ b/krename/pictureplugin.cpp
@@ -0,0 +1,98 @@
+/***************************************************************************
+ pictureplugin.cpp - description
+ -------------------
+ begin : Son Apr 14 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "pictureplugin.h"
+
+// QT includes
+#include <qimage.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <klocale.h>
+
+PicturePlugin::PicturePlugin()
+ : FilePlugin( 0 )
+{
+ keys.append( "resolution" );
+ keys.append( "xres" );
+ keys.append( "yres" );
+ keys.append( "bitdepth" );
+ setupKeys();
+
+ m_icon = "image";
+}
+
+const QString PicturePlugin::getName() const
+{
+ return i18n("Picture Plugin");
+}
+
+const QString PicturePlugin::getAccelName() const
+{
+ return i18n("P&icture Plugin");
+}
+
+const QString PicturePlugin::getPattern() const
+{
+ return "pic";
+}
+
+QString PicturePlugin::processFile( BatchRenamer* b, int i, QString token, int )
+{
+ QString resolution;
+ QString xres;
+ QString yres;
+ QString bitdepth;
+
+ QString filename = BatchRenamer::buildFilename( &b->files()[i].src );
+
+ token = token.lower();
+
+ /*
+ * Check if we have something cached for this file
+ */
+ if( cache.contains( filename + "::" + token ) )
+ return cache[filename + "::" + token ];
+
+ QImage img( filename );
+ if( img.isNull() )
+ return QString::null;
+
+ resolution = QString( "%1x%2" ).arg(img.width()).arg(img.height());
+ xres = QString::number( img.width() );
+ yres = QString::number( img.height() );
+ bitdepth = QString::number( img.depth() );
+
+ if( cache.count() >= CACHE_MAX )
+ cache.remove( cache.begin() );
+
+ QString ret = QString::null;
+
+ if( token == getPattern() + "resolution" )
+ ret = resolution;
+ else if( token == getPattern() + "xres" )
+ ret = xres;
+ else if( token == getPattern() + "yres" )
+ ret = yres;
+ else if( token == getPattern() + "bitdepth" )
+ ret = bitdepth;
+
+ cache.insert( filename + "::" + token, ret );
+ return ret;
+}
+
+
diff --git a/krename/pictureplugin.h b/krename/pictureplugin.h
new file mode 100644
index 0000000..1fcc28f
--- /dev/null
+++ b/krename/pictureplugin.h
@@ -0,0 +1,40 @@
+/***************************************************************************
+ pictureplugin.h - description
+ -------------------
+ begin : Son Apr 14 2002
+ copyright : (C) 2002 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef PICTUREPLUGIN_H
+#define PICTUREPLUGIN_H
+
+#include "batchrenamer.h"
+#include "pluginloader.h"
+#include "fileplugin.h"
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QString;
+class QWidget;
+class PicturePlugin : public FilePlugin {
+ Q_OBJECT
+ public:
+ PicturePlugin();
+
+ const QString getName() const;
+ const QString getAccelName() const;
+ const QString getPattern() const;
+ QString processFile( BatchRenamer* b, int i, QString token, int );
+};
+
+#endif
diff --git a/krename/plugin.cpp b/krename/plugin.cpp
new file mode 100644
index 0000000..92460d9
--- /dev/null
+++ b/krename/plugin.cpp
@@ -0,0 +1,62 @@
+/***************************************************************************
+ plugin.cpp - description
+ -------------------
+ begin : Sun Dec 30 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "plugin.h"
+#include "helpdialog.h"
+
+#include <qpixmap.h>
+
+Plugin::Plugin()
+{
+ m_widget = NULL;
+}
+
+Plugin::~Plugin()
+{
+ delete m_widget;
+}
+
+void Plugin::addHelp( HelpDialogData* ) { }
+void Plugin::removeHelp( HelpDialogData* data )
+{
+ data->remove( getName() );
+}
+
+bool Plugin::alwaysUsed() const
+{
+ return false;
+}
+
+const QStringList Plugin::getKeys() const
+{
+ return QStringList();
+}
+
+const QString Plugin::getPattern() const
+{
+ return QString::null;
+};
+
+const QPixmap Plugin::getIcon() const
+{
+ return QPixmap();
+}
+
+void Plugin::clearCache()
+{
+ // do nothing...
+}
diff --git a/krename/plugin.h b/krename/plugin.h
new file mode 100644
index 0000000..0b987d3
--- /dev/null
+++ b/krename/plugin.h
@@ -0,0 +1,72 @@
+/***************************************************************************
+ plugin.h - description
+ -------------------
+ begin : Sun Dec 30 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef PLUGIN_H
+#define PLUGIN_H
+
+#include "batchrenamer.h"
+
+#include <qobject.h>
+
+class HelpDialogData;
+
+class QString;
+class QStringList;
+class QWidget;
+class QVBoxLayout;
+class Plugin : public QObject {
+ Q_OBJECT
+ public:
+ Plugin();
+ virtual ~Plugin();
+
+ virtual const QString getName() const = 0;
+ virtual const QString getAccelName() const = 0;
+ virtual const QString getPattern() const;
+ virtual const int type() const = 0;
+ virtual bool alwaysUsed() const;
+
+ virtual bool checkError() = 0;
+ virtual void drawInterface( QWidget* w, QVBoxLayout* l ) = 0;
+ virtual void fillStructure() { }
+ virtual QString processFile( BatchRenamer* b, int i, QString token, int mode ) = 0;
+ virtual void finished() { }
+
+ virtual void addHelp( HelpDialogData* data );
+ virtual void removeHelp( HelpDialogData* data );
+
+ virtual void clearCache();
+
+ virtual const QPixmap getIcon() const;
+ virtual const QStringList getKeys() const;
+
+ signals:
+ void previewChanged( Plugin* plugin );
+
+ protected slots:
+ // call this method when your plugin settings changed
+ // in a way, that KRename should update its preview
+ void updatePreview()
+ {
+ emit previewChanged( this );
+ }
+
+ protected:
+ QWidget* m_widget;
+};
+
+#endif
diff --git a/krename/pluginloader.cpp b/krename/pluginloader.cpp
new file mode 100644
index 0000000..4e5c300
--- /dev/null
+++ b/krename/pluginloader.cpp
@@ -0,0 +1,179 @@
+/***************************************************************************
+ pluginloader.cpp - description
+ -------------------
+ begin : Sun Dec 30 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+/*
+ * Parts of this code are copied from
+ * Franz Schmid's <Franz.Schmid@altmuehlnet.de>
+ * Scribus.
+ */
+
+// Own includes
+#include "pluginloader.h"
+#include "fileplugin.h"
+#include "datetime.h"
+#include "mydirplugin.h"
+#include "permission.h"
+#include "pictureplugin.h"
+#include "commandplugin.h"
+#include "dateplugin.h"
+#include "encodingplugin.h"
+#include "translitplugin.h"
+
+// QT includes
+#include <qregexp.h>
+#include <qstringlist.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kservice.h>
+
+/* use a prime number here */
+#define DICT_SIZE 43
+#define BRACKET_CACHE_COUNT 19
+
+PluginLoader::PluginLoader()
+{
+ libs.setAutoDelete( true );
+ m_loaded = false;
+ m_file = false;
+}
+
+PluginLoader::~PluginLoader()
+{ }
+
+PluginLoader* PluginLoader::instance()
+{
+ if( !m_plugin )
+ m_plugin = new PluginLoader();
+
+ return m_plugin;
+}
+
+PluginLoader* PluginLoader::m_plugin = NULL;
+
+void PluginLoader::loadPlugins( bool fileplugins )
+{
+ int i;
+
+ // make sure all plugins with display
+ // get deleted and the GUI is rebuild
+ if( m_loaded )
+ {
+ for( i=0;i<NUM_INTERNAL_PLUGINS;i++ )
+ {
+ for( unsigned int z=0;z<libs.count();z++ )
+ if( libs.at(z)->plugin == m_internal_plugins[i] )
+ {
+ libs.remove( z );
+ break;
+ }
+ }
+ }
+
+ m_loaded = true;
+ m_internal_plugins[0] = new CommandPlugin();
+ m_internal_plugins[1] = new MyPermPlugin();
+ m_internal_plugins[2] = new MyDatePlugin();
+ m_internal_plugins[3] = new MyDirPlugin();
+ m_internal_plugins[4] = new PicturePlugin();
+ m_internal_plugins[5] = new EncodingPlugin();
+ m_internal_plugins[6] = new DatePlugin();
+ m_internal_plugins[7] = new TranslitPlugin();
+
+ for( i=0;i<NUM_INTERNAL_PLUGINS;i++ )
+ addPlugin( m_internal_plugins[i] );
+
+ if( fileplugins && !m_file )
+ loadFilePlugins();
+
+ m_bracket_map.clear();
+ QPtrListIterator<PluginLoader::PluginLibrary> it( libs );
+ for( ; it.current(); ++it ) {
+ if( (*it)->plugin->type() == TYPE_BRACKET ) {
+ const QStringList list = (*it)->plugin->getKeys();
+ for( unsigned int i = 0; i < list.count(); i++ )
+ m_bracket_map.insert( list[i].lower(), (*it)->plugin );
+ }
+ }
+
+}
+
+void PluginLoader::clearCache()
+{
+ QPtrListIterator<PluginLoader::PluginLibrary> it( libs );
+ for( ; it.current(); ++it )
+ (*it)->plugin->clearCache();
+}
+
+Plugin* PluginLoader::findPlugin( const QString & token )
+{
+ // Optimize a little bit for speed and convert only once to lower()
+ QString lower = token.lower();
+
+ if( m_bracket_cache.contains( lower ) )
+ return m_bracket_cache[lower];
+
+ /* The new version is slower than the old one :-(
+ */
+ QMap<QString,Plugin*>::Iterator it;
+ for ( it = m_bracket_map.begin(); it != m_bracket_map.end(); ++it )
+ {
+ if( QRegExp( it.key() ).exactMatch( lower ) )
+ {
+ m_bracket_cache.insert( lower, it.data(), true );
+ if( m_bracket_cache.count() > BRACKET_CACHE_COUNT )
+ m_bracket_cache.remove( m_bracket_cache.begin() );
+
+ return it.data();
+ }
+ }
+
+ // add typos to the cache, too:
+ // So that we find immediately that this key is not supported.
+ m_bracket_cache.insert( lower, NULL, true );
+ if( m_bracket_cache.count() > BRACKET_CACHE_COUNT )
+ m_bracket_cache.remove( m_bracket_cache.begin() );
+
+ return NULL;
+}
+
+void PluginLoader::addPlugin( Plugin* plugin )
+{
+ PluginLibrary* listitem=new PluginLibrary;
+ listitem->plugin = plugin;
+ listitem->check = NULL;
+ listitem->usePlugin = plugin->alwaysUsed();
+ libs.append( listitem );
+}
+
+void PluginLoader::loadFilePlugins()
+{
+ KService::List list = KService::allServices();
+ for( unsigned int i = 0; i < list.count(); i++ ) {
+ KService* s = (KService*)list[i];
+ if( !s->terminal() && s->type() == "Service" && s->hasServiceType( "KFilePlugin" ) ) {
+ FilePlugin* kfileplugin = new FilePlugin( s );
+ if( kfileplugin->isValid() ) {
+ addPlugin( kfileplugin );
+ kapp->processEvents();
+ } else
+ delete kfileplugin;
+ }
+ }
+
+ m_file = true;
+}
diff --git a/krename/pluginloader.h b/krename/pluginloader.h
new file mode 100644
index 0000000..234a35c
--- /dev/null
+++ b/krename/pluginloader.h
@@ -0,0 +1,92 @@
+/***************************************************************************
+ pluginloader.h - description
+ -------------------
+ begin : Sun Dec 30 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef PLUGINLOADER_H
+#define PLUGINLOADER_H
+
+// Own includes
+#include "batchrenamer.h"
+#include "plugin.h"
+
+#include <qmap.h>
+#include <qptrlist.h>
+
+class QCheckBox;
+class QVBoxLayout;
+class QString;
+class QWidget;
+
+#define NUM_INTERNAL_PLUGINS 8
+
+enum pluginType {
+ TYPE_BRACKET = 2, // Plugin argument is in brackets like [artist] or [1-2]
+ TYPE_TOKEN = 4, // Plugin has its own reserved token like ,& or /
+ TYPE_FINAL_FILE = 8, // Plugin does something with the final file
+ // i.e. that is not changing its name but its permission or similar!
+ TYPE_FINAL_FILENAME = 16 // Plugin changes the final filename before renaming
+};
+
+class PluginLoader {
+ public:
+ // For RedHat :)
+ struct PluginLibrary {
+ Plugin *plugin;
+ bool usePlugin;
+
+ /* access this member only
+ * from within KRenameImpl
+ * when the GUI is already constructed!
+ */
+ QCheckBox* check;
+ };
+
+ static PluginLoader* instance();
+
+ void loadPlugins( bool fileplugins );
+ QPtrList<PluginLoader::PluginLibrary> libs;
+
+ Plugin* findPlugin( const QString & token );
+
+ inline bool filePluginsLoaded() const;
+
+ void clearCache();
+
+ private:
+ PluginLoader();
+ ~PluginLoader();
+
+ void addPlugin( Plugin* plugin );
+ void loadFilePlugins();
+
+ private:
+
+ Plugin* m_internal_plugins[NUM_INTERNAL_PLUGINS];
+ static PluginLoader* m_plugin;
+
+ QMap<QString,Plugin*> m_bracket_map;
+ QMap<QString,Plugin*> m_bracket_cache;
+
+ bool m_loaded;
+ bool m_file;
+};
+
+bool PluginLoader::filePluginsLoaded() const
+{
+ return m_file;
+}
+
+#endif
diff --git a/krename/profiledlg.cpp b/krename/profiledlg.cpp
new file mode 100644
index 0000000..621d51f
--- /dev/null
+++ b/krename/profiledlg.cpp
@@ -0,0 +1,602 @@
+/***************************************************************************
+ profiledlg.cpp - description
+ -------------------
+ begin : Sat Nov 20 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "profiledlg.h"
+#include "krenameimpl.h"
+#include "kmyhistorycombo.h"
+#include "pluginloader.h"
+#include "kmylistbox.h"
+
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <kconfig.h>
+#include <kiconloader.h>
+#include <kinputdialog.h>
+#include <klistbox.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kpushbutton.h>
+#include <kstandarddirs.h>
+#include <kurlrequester.h>
+
+#include <qcheckbox.h>
+#include <qdom.h>
+#include <qfile.h>
+#include <qlayout.h>
+#include <qpainter.h>
+#include <qradiobutton.h>
+#include <qtooltip.h>
+
+#ifdef HAVE_CONFIG_H
+ #include <config.h>
+#endif
+
+#ifndef VERSION
+ #define VERSION "unknown"
+#endif
+
+#define PROFILE_WIZARD_INDEX 0
+#define PROFILE_TABBED_INDEX 1
+
+#define PROFILE_WIZARD_NAME i18n("KRename: Wizard default profile")
+#define PROFILE_TABBED_NAME i18n("KRename: Tabbed default profile")
+
+class ProfileListBoxText : public QListBoxText {
+
+public:
+ ProfileListBoxText( const QString & text = QString::null )
+ : QListBoxText( text )
+ {
+ m_default = false;
+ }
+
+ inline bool isDefault() const {
+ return m_default;
+ }
+
+ inline void setDefault( const bool b ) {
+ m_default = b;
+ }
+
+protected:
+ void paint( QPainter* painter )
+ {
+ QFont f = painter->font();
+ f.setBold( m_default );
+ painter->setFont( f );
+
+ QListBoxText::paint( painter );
+ }
+
+private:
+ bool m_default;
+
+};
+
+ProfileManager::ProfileManager( KRenameImpl* krename )
+ : m_krename( krename )
+{
+
+}
+
+const QString ProfileManager::readProfilePath( const QString & name )
+{
+ QString path;
+ KConfig* conf = kapp->config();
+
+ conf->setGroup( "Profiles" );
+ path = conf->readEntry( name, QString::null );
+
+ return path;
+}
+
+const QString ProfileManager::getProfilePath( const QString & name )
+{
+ QStringList list;
+
+ if( name == PROFILE_WIZARD_NAME )
+ return locate( "data", "krename/krename_system_default_wizard.xml" );
+ else if( name == PROFILE_TABBED_NAME )
+ return locate( "data", "krename/krename_system_default_tabbed.xml" );
+
+ QString path = locateLocal( "data", QString( "krename/%1.xml" ).arg( name ) );
+
+ KConfig* conf = kapp->config();
+
+ conf->setGroup( "ProfilesHeader" );
+ list = conf->readListEntry( "list" );
+ if( !list.contains( name ) )
+ list.append( name );
+ conf->writeEntry( "list", list );
+
+ conf->setGroup( "Profiles" );
+ conf->writeEntry( name, path );
+ conf->sync();
+
+ return path;
+}
+
+void ProfileManager::writeXML( const QString & name )
+{
+ QString path = getProfilePath( name );
+ QFile file( path );
+
+ if( !file.open( IO_WriteOnly ) )
+ {
+ qDebug("Cannot write to: %s", path.latin1() );
+ return;
+ }
+
+ QDomDocument doc( "KRenameProfile" );
+ QDomElement root = doc.createElement( "krename" );
+ doc.appendChild( root );
+
+ QDomElement v = doc.createElement( "version" );
+ v.setAttribute( "version", VERSION );
+ root.appendChild( v );
+
+ // General settings of Krename
+ QDomElement settings = doc.createElement( "settings" );
+ settings.setAttribute( "wizard", m_krename->m_wizard );
+ settings.setAttribute( "fileplugins", m_krename->plugin->filePluginsLoaded() );
+ root.appendChild( settings );
+
+ // Filename settings
+ QDomElement filename = doc.createElement( "filename" );
+ filename.setAttribute( "filename", m_krename->filename->text() );
+ filename.setAttribute( "extension", m_krename->extemplate->text() );
+ filename.setAttribute( "extension_enabled", m_krename->checkExtension->isChecked() );
+ filename.setAttribute( "extension_start", m_krename->comboExtension->currentItem() );
+
+ QDomElement numbering = doc.createElement( "numbering" );
+ numbering.setAttribute( "start", m_krename->m_index );
+ numbering.setAttribute( "step", m_krename->m_step );
+ numbering.setAttribute( "skip", listToString( m_krename->skip ) );
+ numbering.setAttribute( "reset", m_krename->m_reset );
+
+ QDomElement replace = doc.createElement( "replace" );
+ for( unsigned int i=0;i<m_krename->rep.count();i++)
+ {
+ QDomElement r = doc.createElement( "item" );
+ r.setAttribute( "find", m_krename->rep[i].find );
+ r.setAttribute( "replace", m_krename->rep[i].replace );
+ r.setAttribute( "reg", m_krename->rep[i].reg );
+
+ replace.appendChild( r );
+ }
+
+ // destination settings
+ QDomElement dest = doc.createElement( "destination" );
+ dest.setAttribute( "mode", m_krename->currentRenameMode() );
+ dest.setAttribute( "overwrite", QString::number( m_krename->checkOverwrite->isChecked() ) );
+ dest.setAttribute( "directory", m_krename->dirname->text() );
+ dest.setAttribute( "undo", QString::number( m_krename->checkUndoScript->isChecked() ) );
+ dest.setAttribute( "undoscript", m_krename->undorequester->url() );
+
+ // file adding settings
+ QDomElement files = doc.createElement( "files" );
+ files.setAttribute( "sorting", QString::number( m_krename->comboSort->currentItem() ) );
+ files.setAttribute( "preview", QString::number( m_krename->checkPreview->isChecked() ) );
+ files.setAttribute( "names", QString::number( m_krename->checkName->isChecked() ) );
+
+ filename.appendChild( replace );
+ filename.appendChild( numbering );
+ root.appendChild( settings );
+ root.appendChild( filename );
+ root.appendChild( dest );
+ root.appendChild( files );
+
+ QCString xml = doc.toCString();
+ file.writeBlock( xml, xml.length() );
+ file.close();
+}
+
+bool ProfileManager::loadXML( const QString & path )
+{
+ QFile file( path );
+
+ if( !file.open( IO_ReadOnly ) )
+ {
+ qDebug("Cannot read from: %s", path.latin1() );
+ return false;
+ }
+
+ QDomDocument doc( "KRenameProfile" );
+ if ( !doc.setContent( &file ) )
+ {
+ file.close();
+ return false;
+ }
+
+ QDomNode n = doc.documentElement().firstChild();
+ while( !n.isNull() )
+ {
+ QDomElement e = n.toElement(); // try to convert the node to an element.
+ if( !e.isNull() )
+ {
+ if( e.tagName() == "settings" )
+ {
+ bool wiz, plug;
+ wiz = (bool)e.attribute( "wizard",
+ QString( "%1" ).arg( m_krename->m_wizard ) ).toInt();
+
+ m_krename->setWizardMode( wiz );
+// if( wiz != m_krename->m_wizard )
+ {
+ m_krename->m_wizard = wiz;
+ m_krename->changeGUIMode();
+ }
+
+ plug = (bool)e.attribute( "fileplugins",
+ QString( "%1" ).arg( m_krename->plugin->filePluginsLoaded() ) ).toInt();
+ if( plug && !m_krename->plugin->filePluginsLoaded() )
+ m_krename->plugin->loadPlugins( true );
+ }
+ else if( e.tagName() == "filename" )
+ {
+ m_krename->filename->setText( e.attribute("filename", m_krename->filename->text() ) );
+ m_krename->extemplate->setText( e.attribute("extension", m_krename->extemplate->text() ) );
+ m_krename->checkExtension->setChecked(
+ (bool)e.attribute("extension_enabled",
+ QString("%1").arg(m_krename->checkExtension->isChecked() ) ).toInt() );
+ m_krename->comboExtension->setCurrentItem(
+ e.attribute("extension_start",
+ QString::number( m_krename->comboExtension->currentItem() ) ).toInt() );
+
+ QDomNode n = e.firstChild();
+ while( !n.isNull() )
+ {
+ QDomElement e = n.toElement(); // try to convert the node to an element.
+ if( !e.isNull() )
+ {
+ if( e.tagName() == "numbering" )
+ {
+ m_krename->m_index = e.attribute( "start", QString::number( m_krename->m_index ) ).toInt();
+ m_krename->m_step = e.attribute( "step", QString::number( m_krename->m_step ) ).toInt();
+ m_krename->skip = stringToList( e.attribute("skip", listToString( m_krename->skip ) ) );
+ m_krename->m_reset = (bool)e.attribute( "reset", QString::number( (int)m_krename->m_reset ) ).toInt();
+ }
+ else if( e.tagName() == "replace" )
+ {
+ m_krename->rep.clear();
+ QDomNode n = e.firstChild();
+ while( !n.isNull() )
+ {
+ QDomElement e = n.toElement(); // try to convert the node to an element.
+ if( !e.isNull() && e.tagName() == "item" )
+ {
+ replacestrings r;
+ r.find = e.attribute( "find", QString::null );
+ r.replace = e.attribute( "replace", QString::null );
+ r.reg = (bool)e.attribute( "reg", "0" ).toInt();
+ m_krename->rep.append( r );
+ }
+ n = n.nextSibling();
+ }
+ }
+ }
+ n = n.nextSibling();
+ }
+ }
+ else if( e.tagName() == "destination" )
+ {
+ int mode = e.attribute( "mode", QString::number( m_krename->currentRenameMode() ) ).toInt();
+ m_krename->optionRename->setChecked( false );
+ m_krename->optionCopy->setChecked( false );
+ m_krename->optionMove->setChecked( false );
+ m_krename->optionLink->setChecked( false );
+
+ switch( mode )
+ {
+ default:
+ case RENAME:
+ m_krename->optionRename->setChecked( true ); break;
+ case COPY:
+ m_krename->optionCopy->setChecked( true ); break;
+ case MOVE:
+ m_krename->optionMove->setChecked( true ); break;
+ case LINK:
+ m_krename->optionLink->setChecked( true ); break;
+ }
+
+ m_krename->checkOverwrite->setChecked( e.attribute( "overwrite",
+ QString::number( m_krename->checkOverwrite->isChecked() ) ).toInt() );
+ m_krename->dirname->setText( e.attribute( "directory", m_krename->dirname->text() ) );
+ m_krename->checkUndoScript->setChecked( e.attribute( "undo",
+ QString::number( m_krename->checkUndoScript->isChecked() ) ).toInt() );
+ m_krename->undorequester->setURL( e.attribute( "undoscript", m_krename->undorequester->url() ) );
+ }
+ else if( e.tagName() == "files" )
+ {
+ m_krename->comboSort->setCurrentItem( e.attribute( "sorting",
+ QString::number( m_krename->comboSort->currentItem() ) ).toInt() );
+ m_krename->checkPreview->setChecked( e.attribute( "preview",
+ QString::number( m_krename->checkPreview->isChecked() ) ).toInt() );
+ m_krename->checkName->setChecked( e.attribute( "names",
+ QString::number( m_krename->checkName->isChecked() ) ).toInt() );
+ }
+ }
+ n = n.nextSibling();
+ }
+
+ if( m_krename->m_wizard )
+ m_krename->parseWizardMode();
+
+ file.close();
+ return true;
+}
+
+const QString ProfileManager::listToString( QValueList<int> & list )
+{
+ QString data;
+ for( unsigned int i = 0; i < list.count(); i++ )
+ data += QString( "%1;" ).arg( list[i] );
+
+ return data;
+}
+
+const QValueList<int> ProfileManager::stringToList( const QString & data )
+{
+ QValueList<int> list;
+ int c = data.contains( ";" );
+ if( c > 0 )
+ {
+ for( int i = 0;i<c;i++)
+ list.append( data.section( ';', i, i ).toInt() );
+ }
+
+ return list;
+}
+
+bool ProfileManager::hasDefaultProfile()
+{
+ KConfig* conf = kapp->config();
+ conf->setGroup( "ProfilesHeader" );
+
+ QString def = conf->readEntry( "defprofile", QString::null );
+
+ return (!def.isEmpty());
+}
+
+void ProfileManager::loadDefaultProfile( KRenameImpl* krename )
+{
+ KConfig* conf = kapp->config();
+ conf->setGroup( "ProfilesHeader" );
+
+ QString def = conf->readEntry( "defprofile", QString::null );
+
+ if( !def.isEmpty() )
+ ProfileManager::loadProfile( def, krename );
+}
+
+void ProfileManager::loadProfile( const QString & name, KRenameImpl* krename )
+{
+ ProfileManager manager( krename );
+ manager.loadXML( manager.getProfilePath( name ) );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+ProfileDlg::ProfileDlg(KRenameImpl* krename, QWidget *parent, const char *name)
+ : KDialogBase( KDialogBase::Plain, i18n("Profiles"),
+ KDialogBase::Close, KDialogBase::Close, parent, name, true, true ), ProfileManager( krename )
+{
+ int i;
+
+ QHBoxLayout* layout = new QHBoxLayout( plainPage(), 6, 6 );
+ QVBoxLayout* button = new QVBoxLayout( 0, 6, 6 );
+
+ profiles = new KListBox( plainPage() );
+ profiles->insertItem( new ProfileListBoxText( PROFILE_WIZARD_NAME ), PROFILE_WIZARD_INDEX );
+ profiles->insertItem( new ProfileListBoxText( PROFILE_TABBED_NAME ), PROFILE_TABBED_INDEX );
+
+ createProfile = new KPushButton( i18n("&Save As Profile..."), plainPage() );
+ loadProfile = new KPushButton( i18n("&Load Profile"), plainPage() );
+ deleteProfile = new KPushButton( i18n("&Delete Profile"), plainPage() );
+ checkDefault = new QCheckBox( i18n("&Use as default profile on startup"), plainPage() );
+
+ createProfile->setIconSet( SmallIconSet( "filesaveas") );
+ loadProfile->setIconSet( SmallIconSet( "fileopen" ) );
+ deleteProfile->setIconSet( SmallIconSet( "edittrash" ) );
+
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
+ button->addWidget( createProfile );
+ button->addWidget( loadProfile );
+ button->addWidget( deleteProfile );
+ button->addItem( spacer );
+ button->addWidget( checkDefault );
+
+ layout->addWidget( profiles );
+ layout->addLayout( button );
+ layout->setStretchFactor( profiles, 2 );
+
+ QToolTip::add( createProfile, i18n("<qt>Save KRename's current settings as a new profile. "
+ "The settings are saved and can be restored with Load Profile later.</qt>" ) );
+ QToolTip::add( loadProfile, i18n("<qt>Load all settings stored in this profile.</qt>") );
+
+ enableControls();
+
+ connect( createProfile, SIGNAL( clicked() ), this, SLOT( slotCreateProfile() ) );
+ connect( loadProfile, SIGNAL( clicked() ), this, SLOT( slotLoadProfile() ) );
+ connect( deleteProfile, SIGNAL( clicked() ), this, SLOT( slotDeleteProfile() ) );
+ connect( profiles, SIGNAL( selectionChanged () ), this, SLOT( enableControls() ) );
+ connect( checkDefault, SIGNAL( clicked() ), this, SLOT( slotSetDefault() ) );
+ connect( this, SIGNAL( hidden() ), this, SLOT( slotHidden() ) );
+
+ KConfig* conf = kapp->config();
+ conf->setGroup( "ProfilesHeader" );
+ ProfileListBoxText* item;
+
+ QStringList list = conf->readListEntry( "list" );
+ QString def = conf->readEntry( "defprofile", QString::null );
+ for( i=0;i<(int)list.count();i++ )
+ profiles->insertItem( new ProfileListBoxText( list[i] ) );
+
+ for( i=0;i<(int)profiles->count();i++ )
+ {
+ item = static_cast<ProfileListBoxText*>(profiles->item(i));
+ if( item->text() == def )
+ {
+ item->setDefault( true);
+ break;
+ }
+ }
+
+ profiles->repaintContents();
+}
+
+
+ProfileDlg::~ProfileDlg()
+{
+}
+
+
+void ProfileDlg::enableControls()
+{
+ ProfileListBoxText* item;
+
+ loadProfile->setEnabled( profiles->selectedItem() );
+ // Do not allow to delete the two default profiles
+ deleteProfile->setEnabled( profiles->selectedItem() &&
+ profiles->currentItem() != PROFILE_TABBED_INDEX && profiles->currentItem() != PROFILE_WIZARD_INDEX );
+ checkDefault->setEnabled( profiles->selectedItem() );
+
+ item = static_cast<ProfileListBoxText*>(profiles->selectedItem());
+ checkDefault->setChecked( item && item->isDefault() );
+}
+
+void ProfileDlg::slotSetDefault()
+{
+ int i;
+ ProfileListBoxText* item;
+
+ for( i=0;i<(int)profiles->count();i++ )
+ {
+ item = static_cast<ProfileListBoxText*>(profiles->item( i ));
+ item->setDefault( false );
+ }
+
+ item = static_cast<ProfileListBoxText*>(profiles->selectedItem());
+ if( item )
+ item->setDefault( checkDefault->isChecked() );
+
+ profiles->repaintContents();
+}
+
+void ProfileDlg::slotLoadProfile()
+{
+ QString profile = profiles->currentText();
+ QString msg = QString( i18n("Do you really want to load the profile and overwrite the current settings: %1") ).arg( profile );
+
+ QString path = getProfilePath( profile );
+
+ if( path.isEmpty() )
+ {
+ KMessageBox::error( this, i18n("The profile \"%1\" could not be found.").arg( profile ) );
+ return;
+ }
+
+ if( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
+ {
+ if( loadXML( path ) )
+ this->close();
+
+ enableControls();
+
+ m_krename->enableControls();
+ m_krename->updatePre();
+ }
+}
+
+void ProfileDlg::slotCreateProfile()
+{
+ bool ok = false;
+ const char* mask = "xXXXXXXXXXXXXXXXXXXX"; // allows for 20 characters
+ QString name = KInputDialog::getText( i18n("Profile Name"), i18n("Please enter a name for the new profile:"),
+ "KRename", &ok, this, 0, 0, mask );
+
+ if( !ok )
+ return;
+
+ if( profiles->findItem( name, Qt::ExactMatch ) )
+ {
+ KMessageBox::error( this, i18n("This profile does already exist. Please choose another name.") );
+ slotCreateProfile();
+ return;
+ }
+
+ profiles->insertItem( new ProfileListBoxText( name ) );
+ writeXML( name );
+
+ enableControls();
+}
+
+void ProfileDlg::slotDeleteProfile()
+{
+ if( profiles->currentItem() == PROFILE_WIZARD_INDEX || profiles->currentItem() == PROFILE_TABBED_INDEX )
+ {
+ KMessageBox::error( this, i18n("You cannot delete default profiles!") );
+ return;
+ }
+
+ QString profile = profiles->currentText();
+ QString msg = QString( i18n("Do you really want to delete the profile: %1") ).arg( profile );
+
+ if( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
+ {
+ QString path = readProfilePath( profile );
+ QFile::remove( path );
+
+ QListBoxItem* item = profiles->findItem( profile, Qt::ExactMatch );
+ if( item )
+ delete item;
+
+ KConfig* conf = kapp->config();
+
+ conf->setGroup( "ProfilesHeader" );
+ QStringList list = conf->readListEntry( "list" );
+ list.remove( profile );
+ conf->writeEntry( "list", list );
+ conf->sync();
+
+ enableControls();
+ }
+}
+
+void ProfileDlg::slotHidden()
+{
+ int i;
+ KConfig* conf = kapp->config();
+ QString def = QString::null;
+ ProfileListBoxText* item;
+
+ for( i=0;i<(int)profiles->count();i++ )
+ {
+ item = static_cast<ProfileListBoxText*>(profiles->item( i ));
+ if( item->isDefault() )
+ {
+ def = profiles->text( i );
+ break;
+ }
+ }
+
+ conf->setGroup( "ProfilesHeader" );
+ conf->writeEntry( "defprofile", def );
+ conf->sync();
+}
+
+#include "profiledlg.moc"
diff --git a/krename/profiledlg.h b/krename/profiledlg.h
new file mode 100644
index 0000000..a9a29c3
--- /dev/null
+++ b/krename/profiledlg.h
@@ -0,0 +1,79 @@
+/***************************************************************************
+ profiledlg.h - description
+ -------------------
+ begin : Sat Nov 20 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef PROFILEDLG_H
+#define PROFILEDLG_H
+
+#include <kdialogbase.h>
+
+class KListBox;
+class KPushButton;
+class KRenameImpl;
+class QCheckBox;
+
+class ProfileManager {
+ public:
+ ProfileManager( KRenameImpl* krename );
+
+ static void loadDefaultProfile( KRenameImpl* krename );
+ static void loadProfile( const QString & name, KRenameImpl* krename );
+ static bool hasDefaultProfile();
+
+ protected:
+ const QString getProfilePath( const QString & name );
+ const QString readProfilePath( const QString & name );
+
+ const QString listToString( QValueList<int> & list );
+ const QValueList<int> stringToList( const QString & );
+
+ void writeXML( const QString & name );
+ bool loadXML( const QString & path );
+
+ protected:
+ KRenameImpl* m_krename;
+};
+
+
+/**
+@author Dominik Seichter
+*/
+class ProfileDlg : public KDialogBase, public ProfileManager
+{
+ Q_OBJECT
+
+ public:
+ ProfileDlg(KRenameImpl* krename, QWidget *parent = 0, const char *name = 0);
+ ~ProfileDlg();
+
+ private slots:
+ void enableControls();
+ void slotLoadProfile();
+ void slotCreateProfile();
+ void slotDeleteProfile();
+ void slotSetDefault();
+ void slotHidden();
+
+ private:
+ KListBox* profiles;
+
+ QCheckBox* checkDefault;
+ KPushButton* createProfile;
+ KPushButton* loadProfile;
+ KPushButton* deleteProfile;
+};
+
+#endif
diff --git a/krename/replacedialog.cpp b/krename/replacedialog.cpp
new file mode 100644
index 0000000..342d4d1
--- /dev/null
+++ b/krename/replacedialog.cpp
@@ -0,0 +1,257 @@
+/***************************************************************************
+ replacedialog.cpp - description
+ -------------------
+ begin : Sat Aug 18 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// Own includes
+#include "replacedialog.h"
+
+// QT includes
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qlayout.h>
+#include <qregexp.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <klistview.h>
+#include <kmessagebox.h>
+#include <kparts/componentfactory.h>
+#include <kpushbutton.h>
+#include <kregexpeditorinterface.h>
+
+ReplaceDialog::ReplaceDialog( QValueList<replacestrings> & r, QWidget* parent )
+ : KDialogBase( KDialogBase::Plain, i18n( "Find and Replace" ),
+ KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, parent, 0, true, true )
+{
+ ReplaceDialogLayout = new QGridLayout( plainPage(), 11, 6);
+
+ list = new KListView( plainPage() );
+ list->addColumn( i18n("Find") );
+ list->addColumn( i18n("Replace With") );
+ list->addColumn( i18n("Regular Expression") );
+ list->addColumn( "regexp" ); // no i18n, because not user visible
+// list->setColumnWidthMode( 0, QListView::Manual );
+// list->setColumnWidthMode( 1, QListView::Manual );
+// list->setColumnWidthMode( 2, QListView::Manual );
+ list->setColumnWidthMode( 3, QListView::Manual );
+ list->setColumnWidth( 3, 0 );
+ list->setSorting( -1 );
+ list->setAllColumnsShowFocus( true );
+
+ TextLabel1 = new QLabel( plainPage() );
+ TextLabel1->setText( i18n( "Find:" ) );
+ TextLabel2 = new QLabel( plainPage() );
+ TextLabel2->setText( i18n( "Replace with:" ) );
+
+ text1 = new QLineEdit( plainPage() );
+ text2 = new QLineEdit( plainPage() );
+
+ checkReg = new QCheckBox( i18n("&Regular expression"), plainPage() );
+ buttonRegEdit = new KPushButton( plainPage() );
+ buttonRegEdit->setText( i18n( "&Edit..." ) );
+ buttonRegEdit->setEnabled( false );
+
+ buttonAdd = new KPushButton( plainPage() );
+ buttonAdd->setText( i18n( "&Add" ) );
+
+ buttonEdit = new KPushButton( plainPage() );
+ buttonEdit->setText( i18n("&Edit") );
+
+ buttonRemove = new KPushButton( plainPage() );
+ buttonRemove->setText( i18n( "&Remove" ) );
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+
+ ReplaceDialogLayout->addWidget( TextLabel1, 0, 0 );
+ ReplaceDialogLayout->addWidget( text1, 0, 1 );
+
+ ReplaceDialogLayout->addWidget( TextLabel2, 0, 3 );
+ ReplaceDialogLayout->addWidget( text2, 0, 4 );
+
+ ReplaceDialogLayout->addWidget( checkReg, 1, 0 );
+ ReplaceDialogLayout->addWidget( buttonRegEdit, 1, 1 );
+
+ ReplaceDialogLayout->addWidget( buttonAdd, 0, 6 );
+ ReplaceDialogLayout->addWidget( buttonEdit, 1, 6 );
+ ReplaceDialogLayout->addWidget( buttonRemove, 2, 6 );
+
+ ReplaceDialogLayout->addItem( spacer, 0, 5 );
+ ReplaceDialogLayout->addItem( spacer, 0, 2 );
+ ReplaceDialogLayout->addMultiCellWidget( list, 3, 3, 0, 4 );
+
+ text1->setFocus();
+
+ connect( buttonAdd, SIGNAL( clicked() ), this, SLOT( add() ) );
+ connect( buttonRemove, SIGNAL( clicked() ), this, SLOT( remove() ) );
+ connect( list, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( enableControls() ) );
+ connect( list, SIGNAL( doubleClicked( QListViewItem* ) ), this, SLOT( slotEdit() ) );
+ connect( text2, SIGNAL( returnPressed() ), this, SLOT( add() ) );
+ connect( text1, SIGNAL( returnPressed() ), this, SLOT( moveFocus() ) );
+ connect( buttonRegEdit, SIGNAL( clicked() ), this, SLOT( invokeRegEdit() ) );
+ connect( checkReg, SIGNAL( clicked() ), this, SLOT( enableControls() ) );
+ connect( buttonEdit, SIGNAL( clicked() ), this, SLOT( slotEdit() ) );
+
+ for( unsigned int i = 0; i < r.count(); i++ ) {
+ replacestrings rs = r[i];
+
+ BatchRenamer::unEscape( rs.find );
+
+ KListViewItem* item = new KListViewItem( list );
+ item->setText( 0, encode( rs.find ) );
+ item->setText( 1, encode( rs.replace ) );
+ item->setText( 2, rs.reg ? i18n("yes") : i18n("no") );
+ item->setText( 3, QString::number( rs.reg ) );
+ list->insertItem( item );
+ }
+
+ enableControls();
+}
+
+ReplaceDialog::~ReplaceDialog()
+{ }
+
+void ReplaceDialog::add()
+{
+ if( text1->text().isEmpty() ) {
+ KMessageBox::sorry( this, i18n( "Add a text that should be replaced." ) );
+ return;
+ }
+
+ QListViewItem* it = list->firstChild();
+ while( it ) {
+ if( it->text( 0 ) == text1->text() ) {
+ KMessageBox::sorry( this, i18n( "You can't replace the same text twice." ) );
+ return;
+ }
+ it = it->nextSibling();
+ }
+
+ KListViewItem* item = new KListViewItem( list, i18n("Regular expression") );
+ item->setText( 0, encode( text1->text() ) );
+ item->setText( 1, encode( text2->text() ) );
+ item->setText( 2, checkReg->isChecked() ? i18n("yes") : i18n("no") );
+ item->setText( 3, QString::number( checkReg->isChecked() ) );
+ list->insertItem( item );
+
+ reset();
+
+ enableControls();
+}
+
+void ReplaceDialog::remove()
+{
+ if( list->selectedItem() ) {
+ QListViewItem* item = list->selectedItem();
+ list->takeItem( item );
+ delete item;
+ }
+
+ enableControls();
+}
+
+QValueList<replacestrings> ReplaceDialog::getList()
+{
+ QValueList<replacestrings> r;
+ QListViewItem* item = list->firstChild();
+ while( item ) {
+ replacestrings n;
+ n.find = decode( item->text( 0 ) );
+ n.replace = decode( item->text( 1 ) );
+ n.reg = item->text( 3 ).toInt();
+
+ BatchRenamer::doEscape( n.find );
+
+ r.append( n );
+
+ item = item->nextSibling();
+ }
+ return r;
+}
+
+void ReplaceDialog::moveFocus()
+{
+ text2->setFocus();
+}
+
+void ReplaceDialog::invokeRegEdit()
+{
+ QDialog* regExpDialog = KParts::ComponentFactory::createInstanceFromQuery<QDialog>( "KRegExpEditor/KRegExpEditor", QString::null, this );
+
+ KRegExpEditorInterface *iface = static_cast<KRegExpEditorInterface *>( regExpDialog->qt_cast( "KRegExpEditorInterface" ) );
+ if ( !iface )
+ return;
+
+ iface->setRegExp( text1->text() );
+ bool ok = regExpDialog->exec();
+ if ( ok )
+ text1->setText( iface->regExp() );
+}
+
+QString ReplaceDialog::encode( QString s )
+{
+ s.append("\"");
+ s.prepend("\"");
+ return s;
+}
+
+QString ReplaceDialog::decode( QString s )
+{
+ if( s[0] == '"' )
+ s.remove( 0, 1 );
+
+ if( s[s.length()-1] == '"' )
+ s.remove( s.length()-1, 1 );
+ return s;
+}
+
+void ReplaceDialog::resizeEvent( QResizeEvent* e )
+{
+ QDialog::resizeEvent( e );
+// list->setColumnWidth( 0, TextLabel1->width() + text1->width() );
+// list->setColumnWidth( 1, TextLabel2->width() + text2->width() );
+}
+
+void ReplaceDialog::reset()
+{
+ text1->clear();
+ text2->clear();
+ checkReg->setChecked( false );
+ text1->setFocus();
+}
+
+void ReplaceDialog::enableControls()
+{
+ buttonRemove->setEnabled( list->selectedItem() );
+ buttonRegEdit->setEnabled( checkReg->isChecked() && !KTrader::self()->query("KRegExpEditor/KRegExpEditor").isEmpty() );
+ buttonEdit->setEnabled( list->selectedItem() );
+}
+
+void ReplaceDialog::slotEdit()
+{
+ text1->setText( decode( list->selectedItem()->text( 0 ) ) );
+ text2->setText( decode( list->selectedItem()->text( 1 ) ) );
+ checkReg->setChecked( list->selectedItem()->text( 3 ).toInt() );
+
+ QListViewItem* item = list->selectedItem();
+ list->takeItem( item );
+ delete item;
+
+ text1->setFocus();
+
+ enableControls();
+}
diff --git a/krename/replacedialog.h b/krename/replacedialog.h
new file mode 100644
index 0000000..0598fcc
--- /dev/null
+++ b/krename/replacedialog.h
@@ -0,0 +1,78 @@
+/***************************************************************************
+ replacedialog.h - description
+ -------------------
+ begin : Sat Aug 18 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef REPLACEDIALOG_H
+#define REPLACEDIALOG_H
+
+// QT includes
+#include <kdialogbase.h>
+#include <qvaluelist.h>
+
+// Own includes
+#include "batchrenamer.h"
+
+class QCheckBox;
+class QGridLayout;
+class QGridLayout;
+class QLabel;
+class QLineEdit;
+class KPushButton;
+class QListViewItem;
+class KListView;
+class ReplaceDialog : public KDialogBase
+{
+ Q_OBJECT
+
+ public:
+ ReplaceDialog( QValueList<replacestrings> & r, QWidget* parent = 0 );
+ ~ReplaceDialog();
+
+ QValueList<replacestrings> getList();
+
+ private slots:
+ void add();
+ void moveFocus();
+ void remove();
+ void invokeRegEdit();
+ void enableControls();
+ void slotEdit();
+
+ private:
+ void reset();
+
+ QLabel* TextLabel1;
+ QLineEdit* text2;
+ QLabel* TextLabel2;
+ QLineEdit* text1;
+ KListView* list;
+ QCheckBox* checkReg;
+
+ KPushButton* buttonAdd;
+ KPushButton* buttonRemove;
+ KPushButton* buttonEdit;
+ KPushButton* buttonRegEdit;
+
+ QString encode( QString s );
+ QString decode( QString s );
+
+ protected:
+ void resizeEvent( QResizeEvent* e );
+
+ QGridLayout* ReplaceDialogLayout;
+};
+
+#endif // REPLACEDIALOG_H
diff --git a/krename/semantic.cache b/krename/semantic.cache
new file mode 100644
index 0000000..453579e
--- /dev/null
+++ b/krename/semantic.cache
@@ -0,0 +1,15 @@
+;; Object krename/
+;; SEMANTICDB Tags save file
+(semanticdb-project-database-file "krename/"
+ :tables (list
+ (semanticdb-table "kmylistbox.cpp"
+ :major-mode 'c++-mode
+ :tags '(("qcursor.h" include (:system-flag t) nil [1041 1061]) ("qdir.h" include (:system-flag t) nil [1062 1079]) ("qdragobject.h" include (:system-flag t) nil [1080 1104]) ("qpainter.h" include (:system-flag t) nil [1105 1126]) ("qpalette.h" include (:system-flag t) nil [1127 1148]) ("qregexp.h" include (:system-flag t) nil [1149 1169]) ("kapplication.h" include (:system-flag t) nil [1187 1212]) ("kdirlister.h" include (:system-flag t) nil [1213 1236]) ("kiconloader.h" include (:system-flag t) nil [1237 1261]) ("klocale.h" include (:system-flag t) nil [1262 1282]) ("kio/previewjob.h" include (:system-flag t) nil [1283 1310]) ("kio/netaccess.h" include (:system-flag t) nil [1311 1337]) ("qptrlist.h" include (:system-flag t) nil [1338 1359]) ("kurldrag.h" include (:system-flag t) nil [1360 1381]) ("kurllabel.h" include (:system-flag t) nil [1382 1404]) ("kpixmap.h" include (:system-flag t) nil [1405 1425]) ("kpixmapeffect.h" include (:system-flag t) nil [1426 1452]) ("kmylistbox.h" include nil nil [1471 1494]) ("krecursivelister.h" include nil nil [1495 1524]) ("threadedlister.h" include nil nil [1525 1552]) ("KMyListBox" function (:constructor-flag t :parent "KMyListBox" :arguments (("parent" variable (:pointer 1 :type ("QWidget" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [1599 1615]) ("name" variable (:pointer 1 :constant-flag t :type "char") (reparse-symbol arg-sub-list) [1616 1633]) ("fl" variable (:type ("WFlags" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [1634 1644])) :type ("KMyListBox" type "class")) nil [1576 2387]) ("KMyListBox" function (:destructor-flag t :parent "KMyListBox" :type "void") nil [2389 2418]) ("url" function (:parent "KMyListBox" :arguments (("index" variable (:type "int") (reparse-symbol arg-sub-list) [2442 2453])) :type ("KURL" type (:type "class") nil nil)) nil [2420 2528]) ("dir" function (:parent "KMyListBox" :arguments (("index" variable (:type "int") (reparse-symbol arg-sub-list) [2552 2563])) :type ("bool" type (:type "class") nil nil)) nil [2530 2638]) ("setPreviewSize" function (:parent "KMyListBox" :arguments (("size" variable (:type "int") (reparse-symbol arg-sub-list) [2673 2683])) :type "void") nil [2640 2711]) ("removeItem" function (:parent "KMyListBox" :arguments (("index" variable (:type "int") (reparse-symbol arg-sub-list) [2742 2753])) :type "void") nil [2713 2792]) ("addFile" function (:parent "KMyListBox" :arguments (("filename" variable (:constant-flag t :type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [2820 2842]) ("isfile" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [2843 2856])) :type "void") nil [2794 3135]) ("addDirName" function (:parent "KMyListBox" :arguments (("dirname" variable (:constant-flag t :type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3166 3188])) :type "void") nil [3137 3322]) ("isFile" function (:parent "KMyListBox" :arguments (("f" variable (:constant-flag t :type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3349 3364]) ("autoadd" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3365 3379])) :type ("bool" type (:type "class") nil nil)) nil [3324 3662]) ("addDir" function (:parent "KMyListBox" :arguments (("dirname" variable (:constant-flag t :type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3689 3710]) ("filter" variable (:constant-flag t :type ("QString" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3711 3734]) ("hidden" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3735 3747]) ("recursively" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3748 3765]) ("dirnames" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [3766 3781])) :type "void") nil [3664 4122]) ("addDirName" function (:parent "KMyListBox" :arguments (("dirname" variable (:constant-flag t :type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [4153 4174]) ("filter" variable (:constant-flag t :type ("QString" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [4175 4198]) ("hidden" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [4199 4211]) ("recursive" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [4212 4228])) :type "void") nil [4124 4974]) ("dropEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QDropEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [5003 5017])) :type "void") nil [4976 5441]) ("dragEnterEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QDragEnterEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [5475 5494])) :type "void") nil [5443 5572]) ("viewportMousePressEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QMouseEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [5616 5632])) :type "void") nil [5574 5934]) ("viewportMouseMoveEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QMouseEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [5977 5993])) :type "void") nil [5936 6611]) ("viewportMouseReleaseEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QMouseEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [6657 6673])) :type "void") nil [6613 6749]) ("keyPressEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QKeyEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [6783 6797])) :type "void") nil [6751 7951]) ("keyReleaseEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QKeyEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [7987 8001])) :type "void") nil [7953 8135]) ("openFile" function (:parent "KMyListBox" :arguments (("item" variable (:pointer 1 :type ("QListBoxItem" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [8164 8184])) :type "void") nil [8137 8424]) ("moveMode" function (:parent "KMyListBox" :type "void") nil [8426 8569]) ("select" function (:parent "KMyListBox" :arguments (("item" variable (:pointer 1 :type ("QListBoxItem" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [8596 8616])) :type "void") nil [8571 9666]) ("preview" function (:parent "KMyListBox" :arguments (("list" variable (:type ("KURL::List" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [9694 9711])) :type "void") nil [9668 10203]) ("previewDone" function (:parent "KMyListBox" :arguments (("item" variable (:pointer 1 :constant-flag t :type ("KFileItem" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [10235 10257]) ("pixmap" variable (:constant-flag t :type ("QPixmap" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [10258 10281])) :type "void") nil [10205 10615]) ("previewFailed" function (:parent "KMyListBox" :arguments (("item" variable (:pointer 1 :constant-flag t :type ("KFileItem" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [10649 10672])) :type "void") nil [10617 10998]) ("previewFinished" function (:parent "KMyListBox" :type "void") nil [11000 11132]) ("setPreview" function (:parent "KMyListBox" :arguments (("prv" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [11163 11173])) :type "void") nil [11134 11506]) ("setName" function (:parent "KMyListBox" :arguments (("name" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [11534 11545])) :type "void") nil [11508 11743]) ("move" function (:parent "KMyListBox" :arguments (("i" variable (:type "int") (reparse-symbol arg-sub-list) [11768 11775])) :type "void") nil [11745 12288]) ("moveUp" function (:parent "KMyListBox" :type "void") nil [12290 12642]) ("moveUp" function (:parent "KMyListBox" :arguments (("i" variable (:type "int") (reparse-symbol arg-sub-list) [12669 12676])) :type "void") nil [12644 12868]) ("moveDown" function (:parent "KMyListBox" :type "void") nil [12870 13237]) ("moveDown" function (:parent "KMyListBox" :arguments (("i" variable (:type "int") (reparse-symbol arg-sub-list) [13266 13273])) :type "void") nil [13239 13465]) ("isInList" function (:parent "KMyListBox" :arguments (("text" variable (:type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [13494 13505])) :type ("bool" type (:type "class") nil nil)) nil [13467 13766]) ("customEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QCustomEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [13798 13815])) :type "void") nil [13768 13927]) ("listerDone" function (:parent "KMyListBox" :arguments (("lister" variable (:pointer 1 :type ("ThreadedLister" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [13958 13982])) :type "void") nil [13929 14306]) ("runningAddListeners" function (:parent "KMyListBox" :type "unsigned int") nil [14308 14480]) ("sortAscending" function (:parent "KMyListBox" :type "void") nil [14482 14566]) ("sortDescending" function (:parent "KMyListBox" :type "void") nil [14568 14654]) ("sortRandom" function (:parent "KMyListBox" :type "void") nil [14656 14734]) ("sortUnsorted" function (:parent "KMyListBox" :type "void") nil [14736 14818]) ("sortNummeric" function (:parent "KMyListBox" :type "void") nil [14820 14902]) ("sortList" function (:parent "KMyListBox" :type "void") nil [14904 16654]) ("setSorting" function (:parent "KMyListBox" :arguments (("s" variable (:type "int") (reparse-symbol arg-sub-list) [16685 16692])) :type "void") nil [16656 17125]) ("compareNummeric" function (:parent "KMyListBox" :arguments (("s1" variable (:constant-flag t :type ("QString" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [17160 17179]) ("s2" variable (:constant-flag t :type ("QString" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [17180 17200])) :type "int") nil [17127 18078]) ("findNumInString" function (:parent "KMyListBox" :constant-flag t :arguments (("pos" variable (:type "unsigned int") (reparse-symbol arg-sub-list) [18123 18140]) ("s" variable (:constant-flag t :type ("QString" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [18141 18160])) :type ("QString" type (:type "class") nil nil)) nil [18080 18506]) ("resizeEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QResizeEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [18538 18555])) :type "void") nil [18508 18612]) ("clear" function (:parent "KMyListBox" :type "void") nil [18614 18686]) ("positionLabel" function (:parent "KMyListBox" :type "void") nil [18688 19060]) ("paintEvent" function (:parent "KMyListBox" :arguments (("e" variable (:pointer 1 :type ("QPaintEvent" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [19091 19107])) :type "void") nil [19062 19234]) ("KMyListBoxItem" function (:constructor-flag t :parent "KMyListBoxItem" :arguments (("item" variable (:pointer 1 :constant-flag t :type ("KMyListBoxItem" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [19268 19296])) :type ("KMyListBoxItem" type "class")) nil [19236 19424]) ("KMyListBoxItem" function (:constructor-flag t :parent "KMyListBoxItem" :arguments (("u" variable (:constant-flag t :type ("KURL" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [19458 19473]) ("b" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [19474 19482])) :type ("KMyListBoxItem" type "class")) nil [19426 19564]) ("setPixmap" function (:parent "KMyListBoxItem" :arguments (("pix" variable (:constant-flag t :type ("QPixmap" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [19598 19619])) :type "void") nil [19566 19940]) ("setName" function (:parent "KMyListBoxItem" :arguments (("b" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [19972 19980])) :type "void") nil [19942 20016]) ("setPreview" function (:parent "KMyListBoxItem" :arguments (("b" variable (:type ("bool" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [20051 20059])) :type "void") nil [20018 20098]) ("paint" function (:parent "KMyListBoxItem" :arguments (("painter" variable (:pointer 1 :type ("QPainter" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [20128 20147])) :type "void") nil [20100 21325]) ("height" function (:parent "KMyListBoxItem" :arguments (("lb" variable (:pointer 1 :constant-flag t :type ("QListBox" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [21355 21375])) :type "int") nil [21327 21849]) ("width" function (:parent "KMyListBoxItem" :arguments (("" variable (:pointer 1 :constant-flag t :type ("QListBox" type (:type "class") nil nil)) (reparse-symbol arg-sub-list) [21878 21895])) :type "int") nil [21851 22376]) ("text" function (:parent "KMyListBoxItem" :type ("QString" type (:type "class") nil nil)) nil [22378 22521]) ("KMyListBoxItem::m_preview" variable (:default-value "false;" :type ("bool" type (:type "class") nil nil)) nil [22523 22562]) ("KMyListBoxItem::m_name" variable (:default-value "false;" :type ("bool" type (:type "class") nil nil)) nil [22563 22599]))
+ :file "kmylistbox.cpp"
+ :pointmax 22601
+ )
+ )
+ :file "semantic.cache"
+ :semantic-tag-version "2.0pre3"
+ :semanticdb-version "2.0pre3"
+ )
diff --git a/krename/tabs.cpp b/krename/tabs.cpp
new file mode 100644
index 0000000..b6ed00e
--- /dev/null
+++ b/krename/tabs.cpp
@@ -0,0 +1,120 @@
+/***************************************************************************
+ tabs.cpp - description
+ -------------------
+ begin : Die Mai 20 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "tabs.h"
+#include "krenameimpl.h"
+#include "kmyhistorycombo.h"
+
+// Qt includes
+#include <qlayout.h>
+#include <qsizepolicy.h>
+#include <qtabwidget.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kmenubar.h>
+#include <kmessagebox.h>
+#include <kpushbutton.h>
+#include <kstartupinfo.h>
+
+tabs::tabs(KRenameImpl* impl, QRect r, QWidget *parent, const char *name )
+ : QDialog(parent,name)
+{
+ setIcon( BarIcon( "krename" ) );
+
+ QVBoxLayout* layout = new QVBoxLayout( this, 6, 6 );
+ QHBoxLayout* buttons = new QHBoxLayout( 0, 6, 6 );
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding );
+
+ tab = new QTabWidget( this );
+ finishButton = new KPushButton( i18n("&Finish"), this );
+ finishButton->setIconSet( SmallIconSet( "finish" ) );
+ finishButton->setDefault( true );
+ cancelButton = new KPushButton( i18n("&Cancel"), this );
+ cancelButton->setIconSet( SmallIconSet( "button_cancel" ) );
+
+ buttons->addItem( spacer );
+ buttons->addWidget( finishButton );
+ buttons->addWidget( cancelButton );
+
+ layout->addWidget( tab );
+ layout->addLayout( buttons );
+ layout->setStretchFactor( tab, 2 );
+
+ menuBar = new KMenuBar( this );
+ layout->setMenuBar( menuBar );
+
+ connect( cancelButton, SIGNAL( clicked() ), this, SLOT( close() ) );
+
+ krename = impl ? impl : new KRenameImpl( this, menuBar, finishButton );
+
+ connect( krename, SIGNAL( pageDone( QWidget*, const QString & ) ), this, SLOT( slotAddPage( QWidget*, const QString & ) ) );
+ connect( krename, SIGNAL( showPage( int ) ), this, SLOT( slotShowPage( int ) ) );
+ connect( krename, SIGNAL( enableFinish( bool ) ), this, SLOT( slotEnableFinish( bool ) ) );
+ connect( tab, SIGNAL( currentChanged( QWidget* ) ), this, SLOT( slotTabChanged() ) );
+
+ if( impl )
+ {
+ krename->changeParent( this, menuBar, finishButton, r );
+ krename->setWizardMode( false );
+ } else
+ krename->setup( false );
+
+ // Tell KStartupInfo that KRename has been loaded completly
+ KStartupInfoId id;
+ id.initId( kapp->startupId() );
+ KStartupInfo::sendFinish( id );
+}
+
+tabs::~tabs()
+{
+}
+
+void tabs::slotAddPage( QWidget* page, const QString & title )
+{
+ tab->addTab( page, title );
+}
+
+void tabs::slotShowPage( int page )
+{
+ tab->setCurrentPage( page - 1 );
+}
+
+void tabs::slotEnableFinish( bool b )
+{
+ finishButton->setEnabled( b );
+}
+
+void tabs::slotTabChanged()
+{
+ if( tab->currentPageIndex() == tab->count() - 1 )
+ {
+ krename->filename->setFocus();
+ krename->filename->lineEdit()->selectAll();
+ }
+}
+
+void tabs::keyPressEvent( QKeyEvent *e )
+{
+ // ESC should not close KRename
+ if( e->key() == Qt::Key_Escape )
+ e->accept();
+ else
+ e->ignore();
+}
diff --git a/krename/tabs.h b/krename/tabs.h
new file mode 100644
index 0000000..9e52f5c
--- /dev/null
+++ b/krename/tabs.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ tabs.h - description
+ -------------------
+ begin : Die Mai 20 2003
+ copyright : (C) 2003 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef TABS_H
+#define TABS_H
+
+#include <qwidget.h>
+#include <qdialog.h>
+
+class KMenuBar;
+class KRenameImpl;
+class KPushButton;
+class QCloseEvent;
+class QRect;
+class QString;
+class QTabWidget;
+class tabs : public QDialog {
+ Q_OBJECT
+ public:
+ tabs(KRenameImpl* impl, QRect r, QWidget *parent=0, const char *name=0);
+ ~tabs();
+
+ inline KRenameImpl* getKRename() { return krename; }
+
+ private slots:
+ void slotAddPage( QWidget* page, const QString & title );
+ void slotShowPage( int page );
+ void slotEnableFinish( bool b );
+ void slotTabChanged();
+
+ protected:
+ virtual void keyPressEvent( QKeyEvent *e );
+
+ protected:
+ KRenameImpl* krename;
+ KPushButton* finishButton;
+ KPushButton* cancelButton;
+
+ KMenuBar* menuBar;
+ QTabWidget* tab;
+};
+
+#endif
diff --git a/krename/threadedlister.cpp b/krename/threadedlister.cpp
new file mode 100644
index 0000000..9af929a
--- /dev/null
+++ b/krename/threadedlister.cpp
@@ -0,0 +1,162 @@
+/***************************************************************************
+
+ threadedlister.cpp - description
+ -------------------
+ begin : Tue Feb 01 2005
+ copyright : (C) 2005 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "threadedlister.h"
+
+#include "kmylistbox.h"
+#include "krecursivelister.h"
+
+#include <kapplication.h>
+#include <qmutex.h>
+
+ThreadedLister::ThreadedLister( QMutex* mutex, unsigned int* counter, KMyListBox* list )
+ : QObject(), QThread(), m_mutex( mutex ), m_counter( counter ), m_list( list )
+{
+ m_mutex->lock();
+ ++(*m_counter);
+ m_mutex->unlock();
+
+ m_reclister = NULL;
+ m_lister = NULL;
+ m_internal = NULL;
+
+ m_hidden = false;
+ m_recursive = false;
+ m_dirnames = false;
+ m_dironly = false;
+}
+
+
+ThreadedLister::~ThreadedLister()
+{
+ if( m_reclister )
+ delete m_reclister;
+
+ if( m_lister )
+ delete m_lister;
+
+ if( m_internal )
+ delete m_internal;
+}
+
+void ThreadedLister::run()
+{
+ m_internal = new QMutex();
+ m_internal->lock();
+
+ if( m_recursive )
+ {
+ m_reclister = new KRecursiveLister();
+
+ m_reclister->setShowingDotFiles( m_hidden );
+ m_reclister->setNameFilter( m_filter );
+ m_reclister->setDirOnlyMode( m_dironly );
+
+ connect( m_reclister, SIGNAL( completed() ), this, SLOT( reclisterFinished() ) );
+
+ m_reclister->openURL( m_dirname );
+ } else {
+ m_lister = new KDirLister();
+
+ m_lister->setAutoUpdate( false );
+ m_lister->setShowingDotFiles( m_hidden );
+ m_lister->setNameFilter( m_filter );
+
+ connect( m_lister, SIGNAL( completed() ), this, SLOT( listerFinished() ) );
+
+ m_lister->openURL( m_dirname, false, false );
+ }
+
+ // try to lock the mutex.
+ // This will block run as long as *listerFinished()
+ // does not unlock the mutex.
+ m_internal->lock();
+ m_internal->unlock();
+
+ KApplication::postEvent( m_list, new QCustomEvent( (QEvent::Type)ThreadedLister::TYPE(), (void*)this ) );
+}
+
+
+void ThreadedLister::reclisterFinished()
+{
+ KFileItemList l = m_reclister->items();
+ FileList list = l;
+
+ if( m_dirnames )
+ {
+ FileList dirs = m_reclister->dirs();
+ KFileItem* item;
+ for( item = dirs.first(); item; item = dirs.next() )
+ list.append( item );
+ }
+
+ list.sort();
+
+ m_mutex->lock();
+ m_list->setUpdatesEnabled( false );
+
+ if( m_dirnames )
+ {
+ QString name = m_dirname.fileName();
+ if( !m_hidden && name.right( 1 ) != QString::fromLatin1(".") )
+ m_list->addDirName( m_dirname );
+ }
+
+ KFileItem* item;
+ for( item = list.first(); item; item = list.next() )
+ if( item->isFile() )
+ m_list->addFile( item->url(), true );
+ else if( item->isDir() )
+ m_list->addDirName( item->url() );
+
+ m_mutex->unlock();
+ m_list->setUpdatesEnabled( true );
+
+ m_internal->unlock();
+}
+
+void ThreadedLister::listerFinished()
+{
+ if( m_lister->isFinished() ) {
+ FileList list = m_lister->items( KDirLister::FilteredItems );
+ list.sort();
+
+ m_mutex->lock();
+ m_list->setUpdatesEnabled( false );
+
+ if( m_dirnames )
+ {
+ QString name = m_dirname.fileName();
+ if( !m_hidden && name.right( 1 ) != QString::fromLatin1(".") )
+ m_list->addDirName( m_dirname );
+ }
+
+ KFileItem* item;
+ for( item = list.first(); item; item = list.next() )
+ if( item->isFile() )
+ m_list->addFile( item->url(), true );
+
+ --(*m_counter);
+ m_mutex->unlock();
+ m_list->setUpdatesEnabled( true );
+
+ m_internal->unlock();
+ }
+}
+
+#include "threadedlister.moc"
diff --git a/krename/threadedlister.h b/krename/threadedlister.h
new file mode 100644
index 0000000..8398e0d
--- /dev/null
+++ b/krename/threadedlister.h
@@ -0,0 +1,158 @@
+/***************************************************************************
+
+ threadedlister.h - description
+ -------------------
+ begin : Tue Feb 01 2005
+ copyright : (C) 2005 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef THREADEDLISTER_H
+#define THREADEDLISTER_H
+
+#include <qobject.h>
+#include <qthread.h>
+
+#include <kfileitem.h>
+
+class KDirLister;
+class KRecursiveLister;
+class KMyListBox;
+class QMutex;
+
+class FileList : public QPtrList<KFileItem> {
+ public:
+ FileList() : QPtrList<KFileItem>() {}
+ FileList( KFileItemList list )
+ : QPtrList<KFileItem>() {
+ KFileItem* it;
+ for( it = list.first(); it; it = list.next() )
+ this->append( it );
+ }
+
+ protected:
+ int compareItems( QPtrCollection::Item item1, QPtrCollection::Item item2 ) {
+ return static_cast<KFileItem*>(item1)->url().url().compare( static_cast<KFileItem*>(item2)->url().url() );
+ }
+
+};
+
+
+class ThreadedLister : public QObject, public QThread
+{
+ Q_OBJECT
+ public:
+ ThreadedLister( QMutex* mutex, unsigned int* counter, KMyListBox* list );
+ ~ThreadedLister();
+
+ static int TYPE() { return 51984; }
+
+ inline FileList* items();
+
+ inline const KURL & dirname();
+ inline bool dirnames();
+ inline const QString & filter();
+ inline bool hidden();
+
+ inline void setDirname( const KURL & dirname );
+ inline void setDirnames( bool names );
+ inline void setFilter( const QString & filter );
+ inline void setHidden( bool h );
+ inline void setRecursive( bool r );
+ inline void setRecursiveDirOnlyMode( bool m );
+
+ signals:
+ void listerDone( ThreadedLister* );
+
+ protected:
+ void run();
+
+ private slots:
+ void reclisterFinished();
+ void listerFinished();
+
+ private:
+ QMutex* m_mutex;
+ QMutex* m_internal;
+ unsigned int* m_counter;
+
+ FileList m_files;
+
+ KURL m_dirname;
+ QString m_filter;
+ bool m_hidden;
+ bool m_recursive;
+ bool m_dirnames;
+ bool m_dironly;
+
+ KDirLister* m_lister;
+ KRecursiveLister* m_reclister;
+
+ KMyListBox* m_list;
+};
+
+void ThreadedLister::setDirname( const KURL & dirname )
+{
+ m_dirname = dirname;
+}
+
+void ThreadedLister::setDirnames( bool names )
+{
+ m_dirnames = names;
+}
+
+void ThreadedLister::setFilter( const QString & filter )
+{
+ m_filter = filter;
+}
+
+void ThreadedLister::setHidden( bool h )
+{
+ m_hidden = h;
+}
+
+void ThreadedLister::setRecursive( bool r )
+{
+ m_recursive = r;
+}
+
+void ThreadedLister::setRecursiveDirOnlyMode( bool m )
+{
+ m_dironly = m;
+}
+
+FileList* ThreadedLister::items()
+{
+ return &m_files;
+}
+
+const KURL & ThreadedLister::dirname()
+{
+ return m_dirname;
+}
+
+bool ThreadedLister::dirnames()
+{
+ return m_dirnames;
+}
+
+const QString & ThreadedLister::filter()
+{
+ return m_filter;
+}
+
+bool ThreadedLister::hidden()
+{
+ return m_hidden;
+}
+
+#endif
diff --git a/krename/translitplugin.cpp b/krename/translitplugin.cpp
new file mode 100644
index 0000000..65031e0
--- /dev/null
+++ b/krename/translitplugin.cpp
@@ -0,0 +1,106 @@
+//
+// C++ Implementation: translitplugin
+//
+// Description:
+//
+//
+// Author: Dominik Seichter <domseichter@web.de>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "translitplugin.h"
+#include "translitplugin.moc"
+
+const QString TranslitPlugin::m_strUtf8[] = {"а","б","в","г","д","е","ё","ж","з","и",
+ "й","к","л","м","н","о","п","Ñ€","Ñ","Ñ‚","у","Ñ„","Ñ…","ц","ч","ш","щ","ÑŠ","Ñ‹","ÑŒ",
+ "Ñ","ÑŽ","Ñ",
+ "Ð","Б","Ð’","Г","Д","Е","Ð","Ж","З","И","Й","К","Л","Ðœ","Ð","О","П",
+ "Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я",
+ "á","ä","Ä","Ä","é","Ä›","í","ľ","ĺ","ň","ó","ô","Å™","Å•","Å¡","Å¥","ú","ů","ý","ž",
+ "Ã","Ä","ÄŒ","ÄŽ","É","Äš","Ã","Ľ","Ĺ","Ň","Ó","Ô","Ř","Å”","Å ","Ť","Ú","Å®","Ã","Ž",QString::null};
+
+const QString TranslitPlugin::m_strEngl[]= {"a","b","v","g","d","e","yo","zh","z","i",
+ "j","k","l","m","n","o","p","r","s","t","u","f","h","c","ch","sh","sh","","y","",
+ "e","yu","ya",
+ "A","B","V","G","D","E","Yo","Zh","Z","I","J","K","L","M","N","O","P",
+ "R","S","T","U","F","H","C","Ch","Sh","Sh","","Y","","E","Yu","Ya",
+ "a","a","c","d","e","e","i","l","l","n","o","o","r","r","s","t","u","u","y","z",
+ "A","A","C","D","E","E","I","L","L","N","O","O","R","R","S","T","U","U","Y","Z",QString::null};
+
+const QString TranslitPlugin::getName() const
+{
+ return i18n("Transliteration Plugin");
+}
+
+const QString TranslitPlugin::getAccelName() const
+{
+ return i18n("&Transliteration Plugin");
+}
+
+const QPixmap TranslitPlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "fonts", KIcon::Small );
+}
+
+const int TranslitPlugin::type() const
+{
+ return TYPE_FINAL_FILENAME;
+}
+
+void TranslitPlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ QLabel* label = new QLabel(
+ i18n("<qt>This plugin transliterates names written with non-english characters.</qt>"), w );
+ l->addWidget( label );
+
+ label = new QLabel( "<qt><b>WARNING! THIS PLUGIN IS EXPERIMENTAL AND MIGHT CAUSE LOSS OF DATA!</b></qt>", w );
+ l->addWidget( label );
+}
+
+void TranslitPlugin::finished()
+{
+}
+
+void TranslitPlugin::fillStructure()
+{
+}
+
+bool TranslitPlugin::checkError()
+{
+ return true;
+}
+
+QString TranslitPlugin::processFile( BatchRenamer*, int, QString token, int )
+{
+ QString output = translit( token );
+
+ return output; // no error
+}
+
+QString TranslitPlugin::translit(const QString & unicoded)
+{
+ int i;
+ QString transed = "";
+
+ for (i=0; i<(int)unicoded.length(); i++) {
+ QString charIn = unicoded.mid(i, 1);
+ if (m_mapFromUTF8[charIn.utf8()]) {
+ QString charTrans = m_mapFromUTF8[charIn.utf8()];
+ transed.append(charTrans);
+ } else {
+ transed.append(charIn);
+ }
+ }
+ return transed;
+}
+
+TranslitPlugin::TranslitPlugin() {
+ // Initialize transliteration map
+ int i;
+ for (i=0; m_strUtf8[i]!=QString::null; i++) {
+ QString src = m_strUtf8[i];
+ QString dst = m_strEngl[i];
+ m_mapFromUTF8[src] = dst;
+ }
+}
diff --git a/krename/translitplugin.h b/krename/translitplugin.h
new file mode 100644
index 0000000..c385b36
--- /dev/null
+++ b/krename/translitplugin.h
@@ -0,0 +1,59 @@
+//
+// C++ Interface: translitplugin
+//
+// Description:
+//
+//
+// Author: Dominik Seichter <domseichter@web.de>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef TRANSLITPLUGIN_H
+#define TRANSLITPLUGIN_H
+
+#include "plugin.h"
+#include "pluginloader.h"
+#include "batchrenamer.h"
+
+// QT includes
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtextcodec.h>
+#include <qvgroupbox.h>
+#include <qcheckbox.h>
+
+// KDE includes
+#include <kapplication.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kcombobox.h>
+// #include <kdebug.h>
+
+/**
+@author Dominik Seichter
+*/
+class TranslitPlugin : public Plugin {
+ Q_OBJECT
+ public:
+ const QString getName() const;
+ const QString getAccelName() const;
+ const int type() const;
+ const QPixmap getIcon() const;
+ void drawInterface( QWidget* w, QVBoxLayout* l );
+ void finished();
+ bool checkError();
+ void fillStructure();
+ QString processFile( BatchRenamer*, int, QString token, int );
+ TranslitPlugin();
+ protected:
+ QString translit(const QString &);
+
+ typedef QMap<QString, QString> TranslitMap;
+ TranslitMap m_mapFromUTF8;
+
+ static const QString m_strUtf8[];
+ static const QString m_strEngl[];
+};
+
+#endif
diff --git a/krename/undodialog.cpp b/krename/undodialog.cpp
new file mode 100644
index 0000000..1dcd8b9
--- /dev/null
+++ b/krename/undodialog.cpp
@@ -0,0 +1,136 @@
+ /***************************************************************************
+ undodialog.cpp - description
+ -------------------
+ begin : Mon Mai 27 20:08:19 CEST 2002
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "undodialog.h"
+
+// Qt includes
+#include <qlabel.h>
+#include <qlayout.h>
+
+// KDE includes
+#include <kfiledialog.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kprocess.h>
+#include <ktextbrowser.h>
+#include <kurlrequester.h>
+
+UndoDialog::UndoDialog( QWidget* parent )
+ : KDialogBase( KDialogBase::Plain, i18n("Undo Renaming"),
+ KDialogBase::User1 | KDialogBase::Close, KDialogBase::User1, parent, 0, false, true )
+{
+ UndoDialogLayout = new QVBoxLayout( plainPage(), 11, 6, "UndoDialogLayout");
+
+ TextLabel1 = new QLabel( plainPage(), "TextLabel1" );
+ TextLabel1->setText( i18n( "Undo script:" ) );
+ UndoDialogLayout->addWidget( TextLabel1 );
+
+ scriptname = new KURLRequester( plainPage(), "KURLRequester1" );
+ scriptname->setMode( KFile::File | KFile::LocalOnly );
+ scriptname->fileDialog()->setOperationMode( KFileDialog::Opening );
+
+ scriptname->setFilter( i18n("*.krename|KRename undo scripts (*.krename)\n"
+ "*|All Files (*)") );
+ UndoDialogLayout->addWidget( scriptname );
+
+ TextLabel2 = new QLabel( plainPage(), "TextLabel2" );
+ TextLabel2->setText( i18n( "<qt>Undo Scripts are normal shell scripts which can also be executed manually from the command line.</qt>" ) );
+ UndoDialogLayout->addWidget( TextLabel2 );
+
+ browser = new KTextBrowser( plainPage());
+ browser->setWordWrap( QTextEdit::NoWrap );
+ browser->setTextFormat( Qt::RichText );
+
+ UndoDialogLayout->addWidget( browser );
+
+ setButtonText( KDialogBase::User1, i18n( "&Start" ) );
+
+ connect( this, SIGNAL( user1Clicked() ), this, SLOT( start() ) );
+ connect( scriptname, SIGNAL( textChanged( const QString & ) ), this, SLOT( enableControls() ) );
+
+ enableControls();
+}
+
+UndoDialog::~UndoDialog()
+{ }
+
+void UndoDialog::start()
+{
+ if( scriptname->url().right( 8 ) != ".krename" ) // EXTENSION
+ if( KMessageBox::warningContinueCancel( this, i18n("This script does not seem "
+ "to be a Krename undo script. Execution of this "
+ "script can be dangerous. Continue ?") )
+ == KMessageBox::Cancel )
+ return;
+
+ KProcess *proc = new KProcess;
+ *proc << scriptname->url() << "--krename";
+
+ enableButton( KDialogBase::User1, false );
+
+ if( !proc->start( KProcess::NotifyOnExit, KProcess::AllOutput ) ) {
+ KMessageBox::sorry( this, i18n("Unable to start the given undo script!") );
+ enableButton( KDialogBase::User1, true );
+ delete proc;
+ return;
+ }
+ proc->resume();
+ connect( proc, SIGNAL( receivedStdout( KProcess*, char*, int) ), this, SLOT( receive( KProcess*, char*, int ) ) );
+ connect( proc, SIGNAL( receivedStderr( KProcess*, char*, int) ), this, SLOT( receiveErr( KProcess*, char*, int ) ) );
+ connect( proc, SIGNAL( processExited( KProcess* ) ), this, SLOT( finished( KProcess* ) ) );
+}
+
+void UndoDialog::receive( KProcess*, char* buffer, int len )
+{
+ QString text;
+ for( int i = 0; i < len; i++ )
+ text.append( buffer[i] );
+
+ browser->setText( browser->text() + text + "<br>");
+}
+
+void UndoDialog::receiveErr( KProcess*, char* buffer, int len )
+{
+ QString text = "<b>";
+ for( int i = 0; i < len; i++ )
+ text.append( buffer[i] );
+
+ browser->setText( browser->text() + text + "</b><br>");
+}
+
+void UndoDialog::finished( KProcess* p )
+{
+ delete p;
+ KMessageBox::information( this, i18n("Finished successfully") );
+ enableControls();
+}
+
+void UndoDialog::enableControls()
+{
+ QFileInfo fi( scriptname->url() );
+ bool b = !scriptname->url().isEmpty() && fi.exists() && fi.isExecutable();
+ enableButton( KDialogBase::User1, b );
+}
+
+void UndoDialog::setUndoScript( const QString & filename )
+{
+ scriptname->setURL( filename );
+}
+
+
+
+
diff --git a/krename/undodialog.h b/krename/undodialog.h
new file mode 100644
index 0000000..e6ad0c8
--- /dev/null
+++ b/krename/undodialog.h
@@ -0,0 +1,59 @@
+/**************************************************************************
+ undodialog.h - description
+ -------------------
+ begin : Mon Mai 27 20:08:19 CEST 2002
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef UNDODIALOG_H
+#define UNDODIALOG_H
+
+#include <kdialogbase.h>
+
+class KPushButton;
+class KProcess;
+class KTextBrowser;
+class KURLRequester;
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QLabel;
+class UndoDialog : public KDialogBase
+{
+ Q_OBJECT
+ public:
+ UndoDialog( QWidget* parent = 0 );
+ ~UndoDialog();
+
+ void setUndoScript( const QString & filename );
+
+ public slots:
+ void start();
+
+ private slots:
+ void receive( KProcess*, char* buffer, int len );
+ void receiveErr( KProcess*, char* buffer, int len );
+ void finished( KProcess* p );
+ void enableControls();
+
+ private:
+ QLabel* TextLabel1;
+ KURLRequester* scriptname;
+ QLabel* TextLabel2;
+ KTextBrowser* browser;
+
+ protected:
+ QVBoxLayout* UndoDialogLayout;
+};
+
+#endif // UNDODIALOG_H
diff --git a/krename/wizard.cpp b/krename/wizard.cpp
new file mode 100644
index 0000000..31720c9
--- /dev/null
+++ b/krename/wizard.cpp
@@ -0,0 +1,106 @@
+/***************************************************************************
+ wizard.cpp - description
+ -------------------
+ begin : Die Mai 15 15:34:19 CEST 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+// Own includes
+#include "wizard.h"
+#include "krenameimpl.h"
+
+// KDE includes
+#include <kapplication.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kmenubar.h>
+#include <kmessagebox.h>
+#include <kstartupinfo.h>
+
+// Qt includes
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qsizepolicy.h>
+#include <qvbox.h>
+
+wizard::wizard( KRenameImpl* impl, QRect r, QWidget* parent, const char* name )
+ : KWizard( parent, name )
+{
+ setIcon( BarIcon( "krename" ) );
+ menuBar = new KMenuBar(this);
+
+ krename = impl ? impl : new KRenameImpl( this, menuBar, this->finishButton() );
+
+ connect( krename, SIGNAL( pageDone( QWidget*, const QString & ) ), this, SLOT( slotAddPage( QWidget*, const QString & ) ) );
+ connect( krename, SIGNAL( showPage( int ) ), this, SLOT( slotShowPage( int ) ) );
+ connect( krename, SIGNAL( enableFinish( bool ) ), this, SLOT( slotEnableFinish( bool ) ) );
+
+ if( impl )
+ {
+ krename->changeParent( this, menuBar, this->finishButton(), r );
+ krename->setWizardMode( true );
+ } else
+ krename->setup( true );
+
+ // Tell KStartupInfo that KRename has been loaded completly
+ KStartupInfoId id;
+ id.initId( kapp->startupId() );
+ KStartupInfo::sendFinish( id );
+
+ // Disable ESC key
+ cancelButton()->setAccel( QKeySequence() );
+}
+
+wizard::~wizard()
+{
+}
+
+void wizard::slotAddPage( QWidget* page, const QString & title )
+{
+ // exclude page 3 from wizard
+ if( krename->title( 2 ) == title )
+ {
+ page->hide();
+ return;
+ }
+
+ QString t = title + i18n(" - Step %1 of %2").arg( pageCount()+1 ).arg( 3 );
+
+ QVBox* layout = new QVBox( this );
+
+ new QLabel( QString( t ).remove( title.find( "&" ), 1 ), layout );
+
+ QFrame* hbar1 = new QFrame( layout, "<hr>", 0 );
+ hbar1->setFrameStyle( QFrame::Sunken + QFrame::HLine );
+
+ page->reparent( layout, QPoint( 0, 0 ) );
+ addPage( layout, t );
+ setHelpEnabled( layout, false );
+}
+
+void wizard::slotShowPage( int page )
+{
+ showPage( this->page( page - 1 ) );
+}
+
+void wizard::slotEnableFinish( bool b )
+{
+ setFinishEnabled( page( pageCount() - 1), b );
+}
+
+void wizard::accept()
+{
+/** do nothing */
+}
+
diff --git a/krename/wizard.h b/krename/wizard.h
new file mode 100644
index 0000000..a415be0
--- /dev/null
+++ b/krename/wizard.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ wizard.h - description
+ -------------------
+ begin : Die Mai 15 15:34:19 CEST 2001
+ copyright : (C) 2001 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#ifndef WIZARD_H
+#define WIZARD_H
+
+// KDE includes
+#include <kwizard.h>
+class QCloseEvent;
+class KRenameImpl;
+class KMenuBar;
+class QCloseEvent;
+class QHBoxLayout;
+class QRect;
+class QString;
+class QVBoxLayout;
+class QWidget;
+class wizard : public KWizard
+{
+ Q_OBJECT
+
+ public:
+ wizard( KRenameImpl* impl, QRect r, QWidget* parent = 0, const char* name = 0 );
+ ~wizard();
+
+ inline KRenameImpl* getKRename() { return krename; }
+
+ private slots:
+ void slotAddPage( QWidget* page, const QString & title );
+ void slotShowPage( int page );
+ void slotEnableFinish( bool b );
+
+ protected:
+ void accept();
+
+ KMenuBar* menuBar;
+ KRenameImpl* krename;
+};
+
+#endif // WIZARD_H
diff --git a/po/Makefile.am b/po/Makefile.am
new file mode 100644
index 0000000..a226c2c
--- /dev/null
+++ b/po/Makefile.am
@@ -0,0 +1,8 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+
+
+EXTRA_DIST = krename.pot
+
+####### kdevelop will overwrite this part!!! (end)############
+POFILES = AUTO
+
diff --git a/po/bs.po b/po/bs.po
new file mode 100644
index 0000000..d9ffd55
--- /dev/null
+++ b/po/bs.po
@@ -0,0 +1,1474 @@
+# translation of bs.po to Bosnian
+# translation of krename.po to Bosnian
+# Asim Husanovic <asim.h@megatel.ba>, 2004.
+# Asim Husanović <asim.h@megatel.ba>, 2004.
+msgid ""
+msgstr ""
+"Project-Id-Version: bs\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2004-07-30 23:15+0200\n"
+"Last-Translator: Asim Husanovic <asim.h@megatel.ba>\n"
+"Language-Team: Bosnian <lokal@lugbih.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.2\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Imena datoteka procesuirana su za %1 sekundi."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Ne mogu kreirati skriptu za vraćanje:"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Datoteke će biti kopirane u: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Datoteke će biti premještene u: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "SimboliÄni link će biti kreiran u: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Ulazne datoteke će biti preimenovane."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Vrati, nije moguće za udaljenu datoteku: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "Preimenovanje %1 datoteka uspjelo."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 greške!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Prolazno vrijeme: %1 sekundi"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename je završio proces preimenovanja."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Pritisni zatvori za kraj!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Ne mogu postaviti izvršni dio na scriptu za vraćanje."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Dodatak za naredbe"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "Dodatak za &naredbe"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Niste naznaÄili naredbu izvrÅ¡enja."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Dodatak za naredbe</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Komanda će biti izvršena na svakoj datoteci poslije preimenovanja. "
+"Dodajte %1 u komandnu liniju argumente za dobijanje imena preimenovane "
+"datoteke.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Naredba:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Izvršenje bez zaustavljanja (nije povratljivo)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Dodaj"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " izlaz sa greškom: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Nađi i zamijeni"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Pronađi"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Zamijeni sa"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Regularni izrazi"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Pronađi:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Zamijeni sa:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Regularni izrazi"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Izmijeni..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "da"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "ne"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Dodaj tekst za zamjenu."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Ne možete zamijeniti isti tekst dvaput."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Regularni izraz"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Ovaj dodatak sortira imena datoteka poslije preimenovanja u "
+"poddirektorijima.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Progres"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Poruke"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Ponovo pokreni KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Ponovi proces preimenov&anja za procesuirane datoteke..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "&Ponovi preimenovanje za ne procesuirane datoteke..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "&Ponovi preimenovanje svih datoteka..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "P&reimenuj više..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Otvori odredište..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Greška: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Upozorenje: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Korisnik je pritisnuo odustani!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Odustajanje..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Vrati:"
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Operacija preimenovanja će biti vraćena u potpunosti."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Izgled i teme"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Koristite &Äarobnjak GUI stil (poÄetnici)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Koristi kar&tiÄni GUI (napredni korisnici)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Konfigurišite izgled i teme KRename GUI-a:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "&UÄitaj datoteke dodataka pri startu"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Automatski p&romijeni veliÄinu kolona u pregledu"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&VeliÄina umanjene slike:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Broj Älanova privremene historije:"
+
+#: confdialog.cpp:97
+#, fuzzy
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Onemogući ovu opciju produživanja vremena pokretanja KRenamea, zato što "
+"KFilePlugins nisu uÄitani"
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Datoteka %1 već postoji!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr ""
+"Ne mogu kreirati simboliÄne linkove na razliÄitim raÄunarima za datoteku %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Asim Husanović"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "asim.h@megatel.ba"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numerisanje"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "PoÄn&i od:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Korak &po:"
+
+#: numberdialog.cpp:64
+#, fuzzy
+msgid "&Reset counter for every directory"
+msgstr "ubaci ime direktorija"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "Pres&koÄi brojeve"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "Dod&aj broj"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Izbriši broj"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "&Broj Älanova privremene historije:"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "BrojaÄ je povećao/smanjio ovu vrijednost."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Dodaj sve brojeve koji će biti preskoÄeni od strane KRename za vrijeme "
+"procesa preimenovanja. <br>Npr.: Ako je 2 preskoÄena datoteka onda će "
+"numerisanje biti: datoteka0, datoteka1, datoteka3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRenam je program za višestruk preimenovanje koji može\n"
+"preimenovati listu datoteka baziranoj na postavljenim izrazima.\n"
+"\n"
+"If vam se sviđa KRename možete pružiti podršsku.\n"
+"Testiranje, odstranjivanje grešaka i prijedlozi za budućnost su\n"
+"dobrodošli kao i finansijska podrška (novac je uvijek potreban ;) )\n"
+"Pogledajte datoteke pomoći za detalje.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "datoteka će biti dodana u listu datoteka za preimenovanje"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "dodaj direktorij s sadržajem"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "postavi Å¡ablon"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "postavi Å¡ablon za ekstenziju datoteke"
+
+#: main.cpp:66
+#, fuzzy
+msgid "enable a plugin for use"
+msgstr "ukljuÄi dodatak za koriÅ¡tenje"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "kopiraj datoteke u direktorij"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "premjesti datoteke u direktorij"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr ""
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "odmah pokreni preimenovanje"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "create no realtime preview"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Website, testiranje, vrlo dobre ideje i Äuvanje mog koda!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Hvala mu ua kreiranje RedHat 7.x paketa i datoteke za isti."
+
+#: main.cpp:85
+#, fuzzy
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Otklonio grešku sa startIndex i dodao klasu BatchRenamer\n"
+"u njegovom odliÄnom pregledniku slika."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Otklonio grešku kada KRename neće da zatvori otvorene datoteke."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Hvala mu za veliki posao na apps.kde.com i pomoći sa objavljivanjem i "
+"saradnjom na apps.kde.com"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Hvala za Noatun. ID3/Ogg Kartice koda su bazirane na njegovom Noatun modulu. "
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Dao mi je dobar poÄetak u pisanje dodataka sa njegovim scribus programom."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Dijeovi PNG podrške su kopirani iz njegovog KFile dodatka za png podršku."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Kreirao Gentoo Ebuild sripte za KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Otklonio neke greške u GCC 3.1 za Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Hvala za kreiranje RPM-a za Mandrake"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Prevod na Italijanski"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Obezbijedio gcc3.x dodatak za prostorno ime."
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Obezbijedio novi pregled i prenos za ubuduće."
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Obezbijedio SuSE RPM-ove i vrlo dobre primjedbe."
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Obezbijedio prevod na Spanski."
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Obezbijedio RedHat RPM i dao veliku pomoc u poboljšanju KRenamea"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Prevod KRename na Japanski"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Prevod KRename na Francuski"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Prevod KRename na Poljski"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Prevod KRename na Ruski"
+
+#: main.cpp:115
+#, fuzzy
+msgid "Translated KRename into Bosnian"
+msgstr "Prevod KRename na Ruski"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename će se pokrenuti iu roota!</b><br>Kada se pokrene iz roota, "
+"KRename može oÅ¡teti vaÅ¡ sistem ako vi ne znate taÄno Å¡ta želite!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Dodatak za slike"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "Dodatak za sl&ike"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Dodatak za konvertovanje kodiranja"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Dodatak za konv&ertovanje kodiranja"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Ovaj dodatak pretvara imena datoteka iz razliÄitih kodiranja. Na "
+"primjer, vi možete pretvoriti ime datoteke iz K0I8-R u UTF-8 kodiranje.<qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Kodiranje ulaznih datoteka:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Korisiti lokalno kodiranje: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Kodiranje izlaznih datoteka:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Znak"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Opis"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "&Datoteke"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Odrediš&te"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "Doda&ci"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "I&me datoteke"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&kstra"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr ""
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Vrati stare akcije preimenovanja..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&UÄitaj datoteke KDE dodataka"
+
+#: krenameimpl.cpp:312
+#, fuzzy
+msgid "&Reload Plugin Data"
+msgstr "Dodatak za &naredbe"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "Dod&aj..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "&Izbriši"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "I&zbriši sve"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sortiraj: Nesortirano"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sortiraj: Uzlazno"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sortiraj: Silazno"
+
+#: krenameimpl.cpp:360
+#, fuzzy
+msgid "Sort: Random"
+msgstr "Sortiraj: Nesortirano"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr ""
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Pregled"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Prikaži ime"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Dodaj jednu ili više datoteka ili direktorija"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "IzbriÅ¡i oznaÄene datoteke"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Izbriši sve datoteke"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Omogući/Onemogući pregled slika."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Prikaži brojeve datoteka u listi."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Pomjeri oznaÄene Älanove gore"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Pomjeri oznaÄene Älanove dolje"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Omogući/Onemogući prikaz imena datoteke."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "Premjeti oznaÄene Älanove (oznaÄi novu lokaciju miÅ¡em)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pcije"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "P&reimenuj ulazne datoteke"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Kopira&j datoteke u odredišni direktorij"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Pre&mjesti datoteke u odredišni direktorij"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Kreiraj simboliÄni &link u odrediÅ¡ni direktorij"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "Pr&epiši postojeće datoteke"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Vrati preimenovanje"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "&Kreiraj skriptu zavraćanje"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename skripte za vraćanje (*.krename)\n"
+"*|Sve datoteke (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Kopiraj sve datoteke u odredišni direktorij i preimenuj ih."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Premjesti sve datoteke u odredišni direktorij i preimenuj ih."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Originalno"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Preimenovano"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Dodaj Å¡ablon.<br>Na primjer: <i>slika###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Dodaj šablon za ekstenziju datoteke.<br>Ona se ponaša prema šablonu imena "
+"datoteke."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "OznaÄvanje ovoga je isto kao postavljanje ektenzije na $"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Dvostruki klik na stavku za izmjenu."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Dijalog pomoći sa svim oznakama podrške za KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Pronađi i zamijeni karaktere ili dijelove niza karaktera izvornog imena "
+"datoteke u odredišnom imenu datoteke.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Možete korisitit \".gz\" i \".tar.gz\" kao ektenziju datoteke backup "
+"datoteke. "
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Å ablon:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Funkcije..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&Korisit ekstenzije za ulazne datoteke"
+
+#: krenameimpl.cpp:569
+#, fuzzy
+msgid "Find &and Replace..."
+msgstr "&Pronađi i zamijeni..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numerisanje..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Unesite putanju imena datoteke..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "staro ime datoteke"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "staro ime pretvori u mala slova"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "staro ime pretvori u velika slova"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "prvo slovo svake rijeÄi je veliko slovo"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "prvo slovo imena datoteke je veliko slovo"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "broj (pokušaj kao ##, ###, ... za kontrolu nulama)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "BrojaÄ koji poÄinje s vrijednošću 0 i ima korak 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "kreiraj poddirektorij"
+
+#: krenameimpl.cpp:586
+#, fuzzy
+msgid "strip whitespaces leading and trailing"
+msgstr "uski razmak"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "karakter x u y stare datoteke"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y karakter stare datoteke poÄinje s x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "ubaci ime direktorija"
+
+#: krenameimpl.cpp:590
+#, fuzzy
+msgid "insert name of parent directory"
+msgstr "ubaci ime direktorija"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "unesi dužinu ulaznog imena datoteke"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Izgrađeno u funkcijama:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Ubaci '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Ubaci '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Ubaci '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Ubaci '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Ubaci '/'"
+
+#: krenameimpl.cpp:600
+#, fuzzy
+msgid "Insert '\\\\'"
+msgstr "Ubaci '\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Ubaci '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Ubaci ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Specijalni karakteri:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Ekstenzija datoteke poÄinje sa:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Ime datoteke"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefiks:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Sufiks:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Pretvori u mala slova"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Pretvori u velika slova"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Capitalize"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Ime:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Korisit originalno ime"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Proizvoljno ime"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Ekstenzija:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Koristi originalnu ekstenziju"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Proizvoljna ekstenzija"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Broj"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Broj cifara:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Pronađi i zamijeni..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Broj"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Datum"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Koristi ovaj dodatak"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "PoÄni pretvaranje od %1 datoteke."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "NaznaÄi Å¡ablon koji se koristi za preimenovanje datoteka."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Molim, daj mi odredišni direktorij!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Molim, daj mi ime vraćajuće skripte!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Datoteka: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+#, fuzzy
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Direktorij %1 ne postoji. KRename ga ne može kreirati za vas."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Prva taÄka"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Zadnja taÄka"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Kraj"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr ""
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr ""
+
+#: profiledlg.cpp:395
+#, fuzzy
+msgid "Profiles"
+msgstr "Progres"
+
+#: profiledlg.cpp:407
+#, fuzzy
+msgid "&Save As Profile..."
+msgstr "&Unesite putanju imena datoteke..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr ""
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr ""
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr ""
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr ""
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr ""
+
+#: profiledlg.cpp:529
+#, fuzzy
+msgid "Profile Name"
+msgstr "staro ime datoteke"
+
+#: profiledlg.cpp:529
+#, fuzzy
+msgid "Please enter a name for the new profile:"
+msgstr "Molim, daj mi ime vraćajuće skripte!"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr ""
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr ""
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr ""
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Vrati preimenovanje"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Vrati skriptu:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Skripta za vraćanje su normalne komande koje takođe mogu biti izvršene "
+"ruÄno iz komandne linije.<qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Ova skripta izgleda da nije KRenameova skripta za vraćanje. Njeno izvršenje "
+"može biti opasno. Nastavljate?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Nemoguće pokrenuti dobijenu skriptu za vraćanje!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Uspješno završeno"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Dodaj ime&na direktorija sa imenima datoteka"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Dodaj podirektorije s sad&ržajem"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Dodaj &skrivene direktorije"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Dodaj samo imena direktorija"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Ako nije oznaÄeno, KRename će ignorisati direktorije koji poÄinju sa taÄkom "
+"za vrijeme vraćanja dodanog."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Prava"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Prava"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Prisup pravima"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Promijeni &prava"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Klasa"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "ÄŒitanje"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Pisanje"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Izvršavanje"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Specijalno"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Korisnik"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Grupa"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Ostali"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Sticky"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Promijeni &Vlasnika"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Vlasnik"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Korisnik:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Grupa:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Ne mogu chmod %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Ne mogu chown %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Molim ubacite nove datoteke:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "&Vrati promjene"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Koristi &ulazne datoteke"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Uredu"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Korištenje imena datoteke je generisano KRenameom umjeto vaših promjena."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Dodatak za direktorije"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Dodatak za direktorije"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Ovaj dodatak sortira imena datoteka poslije preimenovanja u "
+"poddirektorijima.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Datoteka po direktoriju:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "PoÄni od:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Izlazni &Direktorij"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Korak %1 od %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Molim, dodaj neke datoteke..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Sistemske funkcije"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Sistemske funkcije"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr ""
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr ""
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr ""
+
+#: dateplugin.cpp:137
+#, fuzzy
+msgid "Insert the current month as number"
+msgstr "unesi dužinu ulaznog imena datoteke"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr ""
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr ""
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr ""
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr ""
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr ""
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr ""
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr ""
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr ""
+
+#: dateplugin.cpp:146
+#, fuzzy
+msgid "Insert the formatted file creation date"
+msgstr "postavi Å¡ablon za ekstenziju datoteke"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr ""
+
+#: dateplugin.cpp:148
+#, fuzzy
+msgid "Insert the formatted modification date"
+msgstr "postavi Å¡ablon za ekstenziju datoteke"
+
+#: dateplugin.cpp:149
+#, fuzzy
+msgid "Insert the date of the last file access"
+msgstr "unesi dužinu ulaznog imena datoteke"
+
+#: dateplugin.cpp:150
+#, fuzzy
+msgid "Insert the formatted date of the last file access"
+msgstr "unesi dužinu ulaznog imena datoteke"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Promijeni ime datoteke ruÄno"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Suprotno oznaÄavanje"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Molim, oznaÄite tekst koji želite ubaciti:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Pregled:"
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Datum i vrijeme:"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Datum i &vrijeme"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Promijeni pristup d&atumu i vremenu"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Promijeni datum i vrije&me posljdnje izmjene"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Vrijeme:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "h"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "&Uzmi trenutni datum i vrijeme"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Ne mogu promijeniti datum datoteke %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Podržani znakovi:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "Broj prve datoteke.<b>Datoteke su uvijek numerisane istim putem kao Å¡to "
+#~ "su prikazane u krajnjoj listi."
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
+
+#~ msgid "insert name of directories top level directory"
+#~ msgstr "unesite imena poÄetnih direktorija"
+
+#~ msgid "&Save Settings"
+#~ msgstr "&SaÄuvaj postavke"
+
+#~ msgid "Insert ''"
+#~ msgstr "Ubaci ''"
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..619ce3a
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,1451 @@
+# translation of de.po to
+# German translation of Krename.
+#
+# Dominik Seichter <domseichter@web.de>, 2001,2003, 2004, 2005, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2006-06-18 11:35+0200\n"
+"Last-Translator: Dominik Seichter <domseichter@web.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Dateinamen in %1 Sekunden verarbeitet."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Kann Undo-Skript nicht erstellen :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Dateien werden nach %1 kopiert"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Dateien werden nach %1 verschoben"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Symbolische Verknüpfungen werden in %1 erstellt."
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Eingangsdateien werden umbenannt."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Rückgängig machen geht nur bei lokalen Dateien: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 Dateien erfolgreich umbenannt."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 Fehler sind aufgetreten!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Benötigte Zeit: %1 Sekunden"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename hat das Umbenennen beendet."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Klicken Sie auf Schließen um KRename zu beenden!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Kann das Undo-Skript nicht ausführbar machen."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Befehls-Plugin"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Befehls-Plugin"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Sie haben keinen Befehl zum Ausführen angegeben."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Befehls-Plugin</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Dieses Plugin führt einen Shell-Befehl für jede Datei aus, nachdem sie "
+"umbenannt wurde. Fügen Sie %1 zum Befehl hinzu um den Dateinamen der Datei "
+"zu erhalten.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Befehl:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Befehl ausführen ohne zu warten (nicht empfohlen)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Hinzufügen"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " mit Fehler beendet: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Suchen und Ersetzen"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Suche"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Ersetzen Durch"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Regulärer Ausdruck"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Suche:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Ersetzen durch:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Regulärer Ausdruck"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Bearbeiten ..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "ja"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "nein"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Geben Sie einen Text ein, der ersetzt werden soll."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Sie können den selben Text nicht zweimal ersetzen."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Regulärer Ausdruck"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Transliteration Plugin"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "&Transliteration Plugin"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Dieses Plugin ersetzt nicht englische Buchstaben in Dateinamen.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Fortschritt"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Meldungen"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "KRename neu starten ..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "&Verarbeitete Dateien noch einmal umbenennen ..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "&Nicht verarbeitete Dateien noch einmal umbenennen ..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "&Alle Dateien noch einmal umbenennen ..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Andere Dateien umbenennen ..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Ziel Verzeichnis Öffnen ..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Fehler: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Achtung: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Abbruch durch Benutzer"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Abbrechen ..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Rückgängig: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Das Umbenennen wurde rückgängig gemacht."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Erscheinungsbild & Design"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "&Assistenten-Benutzeroberfläche verwenden (Anfänger)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "&Tabbed Benutzeroberfläche benutzen (Fortgeschrittene Benutzer)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr ""
+"Erscheinungsbild und Design der KRename-Benutzeroberfläche einstellen:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "KDE-Datei-Plugins beim Programmstart &laden"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Automatische &Spaltengröße in der Vorschau"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&Größe der Vorschau:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Anzahl der Text-Ergänzungseinträge für das Muster:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"KRename startet ohne diese Option schneller, da keine Plugins geladen werden."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Die Ausgabedatei %1 existiert bereits."
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr ""
+"Kann keine symbolischen Verknüpfungen auf verschiedenen Computern für %1 "
+"erstellen."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Dominik Seichter"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "domseichter@web.de"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Nummerierung"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "Start &Index:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Sch&rittweite:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "&Zähler bei jedem neuen Verzeichnis zurücksetzten"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "&Zahlen überspringen"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "Zahl &hinzufügen"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "Zahl &entfernen"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "Die erste Datei beim umbenennen bekommt diese Nummer."
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Zahlen werden um diesen Wert erhöht/erniedrigt."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Fügen Sie alle Zahlen hinzu, die KRename während des Umbenennens "
+"überspringen soll.<br>Z.B.: Wenn 2 übersprungen wird, werden die Dateien "
+"folgendermaßen umbenannt: file0, file1, file3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Der Zähler wird in jedem neuen Verzeichnis der eingangs Dateien auf den "
+"Start Wert zurück gesetzt. Diese Einstellung betrifft alle verwendeten "
+"Zähler.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename ist ein Batch-Umbenenner, der eine Liste von Dateien anhand\n"
+"eines vorgegebenen Musters umbenennt.\n"
+"Wenn Ihnen KRename gefällt, sollten Sie überlegen KRename zu unterstützen.\n"
+"Die Hilfe enthält mehr Details.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "Die Datei wird an die Liste der umzubenennenden Dateien angehängt."
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "Verzeichnis rekursiv hinzufügen"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "als Muster verwenden"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "als Muster für die Dateierweiterung verwenden"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "ein Plugin benutzen"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "Dateien in Verzeichnis kopieren"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "Dateien in Verzeichnis verschieben"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "das Profile [profile] beim Start laden"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "sofort umbenennen"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "Keine Echtzeit-Vorschau erstellen"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Hat die Webseite erstellt, KRename getestet und mich mit guten Ideen "
+"versorgt."
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Danke für das Erstellen der RedHat 7.x Rpm's und anderer Hilfe."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Hat einen Fehler mit dem startIndex behoben und hat die BatchRenamer Klasse\n"
+"zu seinem tollen Bildbetrachter showimg hinzugefügt."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr ""
+"Hat einen Fehler behoben, weswegen KRename offene Dateien nicht geschlossen "
+"hat."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Danke für seine großartige Arbeit an der Seite apps.kde.com und Hilfe mit "
+"KRename."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Danke für noatun und der ID3/Ogg-Tag-Editor basiert auf Teilen von noatun."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Dank seiner Anwendung Scribus hab ich leichter verstanden wie man Plugin "
+"schreibt."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "Teile der PNG-Unterstützung wurden von seinem KFile-Plugin kopiert."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Erstellt die Gentoo Ebuild Skripts für KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Hat einige Fehler mit GCC 3.1 in Gentoo behoben"
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Erstellt das Mandrake RPM"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Italienische Ãœbersetzung"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "behob ein Problem mit gcc3.x und namespaces"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Hat die neue Vorschau und das neue Verschieben geschrieben"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Hat Probleme im Spec File behoben und erstellt rpms für jede erdenkliche "
+"SuSE-Version und ist auch der neue Gentoo-Maintainer von KRename."
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Erstellte SuSE-RPMs und hatte zahlreiche gute Vorschläge"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Hat die spanische Ãœbersetzung beigesteuert"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Hat ein RedHat-RPM erstellt und sehr geholfen KRename zu verbessern"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Hat KRename ins Japanische übersetzt"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Hat KRename ins Französische übersetzt"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Hat KRename ins Polnische übersetzt"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Hat KRename ins Russische übersetzt"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Hat KRename ins Bosnische übersetzt"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Root hat KRename gestartet!</b><br>Sie können mit KRename ihr System "
+"beschädigen, wenn Sie es als root starten und nicht genau wissen was Sie tun!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Bilder-Plugin"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "&Bilder-Plugin"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Text-Encodig-Plugin"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Text-&Encoding-Plugin"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Dieses Plugin kann Dateinamen zwischen verschiedenen Textkodierungen "
+"konvertieren. Zum Beispiel kann man Dateinamen von KOI8-R nach UTF-8 "
+"konvertieren.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Kodierung der Eingangsdateien:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Lokale Kodierung benutzen: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Kodierung der Ausgangsdateien:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Befehl"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Beschreibung"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "Date&ien"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "&Ziel"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugins"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Datei&name"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtras"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profile ..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "A&lte Aktion rückgängig Machen ..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "KDE Datei Plugins &laden"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "&Plugins neu laden"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Hinzufügen ..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "&Entfernen"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "&Alle Dateien entfernen"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sortierung: Unsortiert"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sortierung: Aufsteigend"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sortierung: Absteigend"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Sortierung: Zufällig"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Sortiere: Nach Zahlen"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Vorschau"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Namen Anzeigen"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Eine oder mehrere Dateien oder Verzeichnisse hinzufügen"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Ausgewählte Dateien entfernen"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Alle Dateien entfernen"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Bild Vorschau an/ab schalten."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Zeige die Anzahl der Dateien in der Liste an."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Ausgewählte Dateien nach oben schieben."
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Ausgewählte Dateien nach unten schieben."
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Anzeigen von Dateinamen an/ab-schalten."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr ""
+"Ausgewählte Dateien verschieben (wählen Sie den neuen Platz mit der Maus)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&ptionen"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "Dateien einfach &umbenennen"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Dateien umbenannt ins Zielverzeichnis &kopieren"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Dateien umbenannt ins Zielverzeichnis &verschieben"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "&Symbolische Verknüpfungen im Zielverzeichniss erstellen"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "Existierende &Dateien überschreiben"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Umbenennen rückgängig machen."
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Undo S&kript erstellen"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename Undo Skripte (*.krename)\n"
+"*|Alle Dateien (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Alle Dateien werden in das Zielverzeichnis kopiert und umbenannt."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Alle Dateien werden in das Zielverzeichnis verschoben und umbenannt."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Ursprünglich"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Umbenannt"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Fügen Sie ein Muster ein.<br>Beispiel: <i>picture###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Ein Muster für die Dateiendung.<br>Dieses Feld verhält sich wie das "
+"Dateinamenmuster."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Diese CheckBox bewirkt das selbe, wie die Dateinamenserweiterung $ zu nennen."
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Klicken Sie doppelt auf einen Dateinamen um ihn zu ändern."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Hilfe Fenster mit allen von KRename unterstützten Befehlen."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Suche und ersetze Zeichen oder Zeichenketten aus dem Eingangsdateinamen "
+"im Ausgangsdateinamen.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Man kann entweder \".gz\" oder \".tar.gz\" als Dateiendung der Datei "
+"backup.tar.gz abhängig von dieser Einstellung verwenden.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Muster:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Funktionen ..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "Ursprüngliche Dateiendung &benutzen."
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Suchen und &Ersetzen ..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Nummerierung ..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Teil eines Dateinamens einfügen ..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "Alter Dateiname"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "Alter Dateiname in Kleinbuchstaben"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "Alter Dateiname in Großbuchstaben"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "Erster Buchstabe jedes Worts groß"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "Erster Buchstabe des Dateinamens groß"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "Zahlen (probieren Sie auch ##, ##, ... für führende Nullen)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "Zähler mit benutzerspezifischen Startwert 0 und der Schrittweite 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "Unterverzeichnis erstellen"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "Leerzeichen am Anfang und Ende entfernen"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "Zeichen x bis y des Dateinamens"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y Zeichen ab dem x-ten Zeichen des Dateinamens"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "Verzeichnis Name einfügen"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "Verzeichnisnamen des übergeordneten Verzeichnis einfügen"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "die Länge des Eingabedateinamens einfügen"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Eingebaute Funktionen:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Fügen '$' ein"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Füge '%' ein"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Füge '&' ein"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Füge '*' ein"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Füge '/' ein"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Füge ' \\\\' ein"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Füge '[' ein"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Füge ']' ein"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Sonderzeichen:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Dateiendung beginnt ab:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "Datei&name"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Präfix:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Suffix:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Alter Dateiname in Kleinbuchstaben "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Alter Dateiname in Großbuchstaben"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Kapitalisieren"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Name:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "ursprünglichen Dateinamen verwenden"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Benutzerspezifischer Name"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Endung:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "ursprünglichen Dateiendung verwenden"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Benutzerspezifische Dateiendung"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Nummerierung"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Anzahl der Stellen:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "Suchen und &Ersetzen ..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Zahl"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Datum"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Einen KRename Befehl zum Verwenden von Dateiinformationen einfügen.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "Plugin &benutzen"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Benenne %1 Dateien um."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Bitte geben Sie ein Muster an."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Bitte wählen Sie ein Zielverzeichnis !"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Bitte geben Sie einen Namen für das Undo-Skript an!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Dateien: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Das Verzeichnis %1 existiert nicht. KRename wird es für Sie erstellen."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Erster Punkt"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Letzter Punkt"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Abschließen"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Assistenten Standard Profil"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Tabbed Standard Profil"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profile"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Speichere als Profil ..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "Profil &Laden ..."
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Profil Löschen"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "Als &Standard Profil beim Start verwenden"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Erstellt ein neues Benutzerprofil aus den aktuellen Einstellungen von "
+"KRename. Die Einstellungen können später mit Profil Laden wieder hergestellt "
+"werden.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Lädt alle Einstellungen aus diesem Profil.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Wollen Sie das Profil wirklich laden und die aktuellen Einstellungen "
+"überschreiben: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Das Profil \"%1\" wurde nicht gefunden."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Profil Name"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Bitte geben Sie einen Namen für das Profil ein:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Dieses Profil existiert bereits. Bitte wählen Sie einen anderen Namen."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Sie können keine Standard-Profile löschen."
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Wollen Sie das Profil wirklich löschen: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Umbenennen rückgängig machen."
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Undo-Skript:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Undo-Skripte sind normale Shell-Skripte die auch per Hand von der "
+"Kommandozeile aus ausgeführt werden können.</qt>"
+
+# FIXME: remove space at end of msgid
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Dieses Skript scheint kein KRename Undo-Skript zu sein. Es kann gefährlich "
+"sein dieses Skript auszuführen. Fortsetzen?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Kann das gewählte Undo-Skript nicht starten!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Erfolgreich abgeschlossen"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "&Verzeichnisnamen mit Inhalt zur Liste hinzufügen"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Unterverzeichnisse &rekursiv hinzufügen"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Vers&teckte Verzeichnisse hinzufügen"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Nur Verzeichnisnamen hinzufügen"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Läuft rekursiv durch den Verzeichnisbaum und fügt den Inhalt aller "
+"Verzeichnisse und ihrer Unterverzeichnisse zu KRename hinzu."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"KRename ignoriert versteckte Verzeichnisse beim rekursiven hinzufügen, wenn "
+"diese Option nicht aktiviert ist."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Nur die Verzeichnisnamen zu KRename hinzufügen, aber nicht den Inhalt der "
+"Verzeichnisse."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Diese Option veranlasst KRename dazu, auch den Namen des Basisverzeichnisses "
+"der Liste der umzubenennenden Dateien hinzuzufügen."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Berechtigungen"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Berechtigungen"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Zugriffsberechtigungen"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "&Berechtigungen ändern"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Klasse"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Lesen"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Schreiben"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Ausführen"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Spezialattribut"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Benutzer"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Gruppe"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Sonstige"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Haftend (Sticky)"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "&Eigentümer ändern"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Eigentümer"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Benutzer:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Gruppe:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Berechtigungen von %1 können nicht geändert werden."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Kann Eigentümer von %1 nicht ändern."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Bitte geben Sie einen neuen Dateinamen ein:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "Änderungen &rückgängig machen"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "&Eingangsdateinamen verwenden"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Ok"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "Den von KRename erzeugten Dateinamen verwenden."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Verzeichnis-Plugin"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Verzeichnis-Plugin"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Dieses Plugin sortiert die Dateien nach dem Umbenennen in "
+"Unterverzeichnisse ein.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Dateien pro Verzeichnis:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Start-Index:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Ausgabe&verzeichnis"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Schritt %1 von %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Bitte fügen Sie Dateien hinzu ..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&System-Funktionen"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "System-Funktionen"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Das aktuelle Datum einfügen"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Das aktuelle Datum im Format yyyy-MM-dd einfügen"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Das aktuelle Jahr einfügen"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Den aktuellen Monat als Zahl einfügen"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Den aktuellen Tag als Zahl einfügen"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Die aktuelle Zeit einfügen"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Die aktuelle Stunde als Zahl einfügen"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Die aktuelle Minute als Zahl einfügen"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Die aktuelle Sekunde als Zahl einfügen"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Ihren Benutzernamen einfügen"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Den Namen Ihrer Gruppe einfügen"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Das Erstellungsdatum der Datei einfügen"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Das formatierte Erstellungsdatum der Datei einfügen"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Das Datum der letzten Änderung einer Datei einfügen"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Das Datum der letzten Änderung einer Datei formatiert einfügen"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Das Datum des letzten Zugriffs auf eine Datei einfügen"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Das Datum des letzten Zugriffs auf eine Datei formatiert einfügen"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "Dateiname &manuell ändern"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Auswahl umkehren"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Bitte wählen Sie einen Text zum Einfügen aus:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Vorschau: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Datum & Zeit"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Datum && &Zeit"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "&Zugriffs Datum && Zeit verändern"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "&Modifikations-Datum und -Zeit verändern"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Zeit:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "h"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "&Aktuelles Datum && Zeit"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Kann Datum der Datei %1 nicht ändern."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Unterstützte Funktionen:"
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..4a803cf
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,1462 @@
+# translation of es.po to
+# translation of es.po to
+# translation of es.po to
+# translation of es.po to
+# translation of es.po to Español
+# translation of es.po to español
+# translation of es.po to
+# Spanish translation of Krename.
+# Jose Rodriguez ''El Bárbaro'' <O_Barbaro@iespana.es>, 2003.
+# Jose Rodriguez Castro <chmpmi@eresmas.net>, 2003,2004, 2005, 2006.
+# José Rodriguez Castro <jrcpmi@eresmas.com>, 2004.
+# Dominik Seichter <domseichter@web.de>, 2004, 2005.
+# Jose Rodriguez Castro <jarcastro@ya.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2006-03-02 14:28+0100\n"
+"Last-Translator: Jose Rodriguez <chmpmi@eresmas.net>\n"
+"Language-Team: <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Ficheros procesados después de %1 segundos."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "No puedo crear el script deshacer :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Los ficheros serán copiados a: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Los ficheros serán movidos a: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Los enlaces simbólicos serán creados en: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Los ficheros seleccionados serán renombrados."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "No se puede deshacer para el fichero remoto: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "Renombrados %1 ficheros con éxito."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 errores encontrados!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Tiempo transcurrido: %1 segundos"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename terminò el proceso de renombrado."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Pulse cerrar para salir!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "No puedo ejecutar una parte del script deshacer."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Comando"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Comando"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "No ha especificado un comando a ejecutar."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Plugin de comando</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Ejecuta un comando de shell sobre cada fichero después de renombrarlo. "
+"Añada %1 al argumento del comando para obtener el nombre del fichero "
+"renombrado.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Comando:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Ejecutar sin bloqueo (no recomendado)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Añadir"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " finalizado con error: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Encontrar y reemplazar"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Encontrar"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Reemplazar por"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Expresión regular"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Encontrar:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Reemplazar por:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "Expresión &regular"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Editar..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "si"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "no"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Introduzca el texto a reemplazar."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "No puede reemplazar el mismo texto dos veces."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Expresión regular"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Transcripción"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "&Transcripción"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Este plugin transcribe nombres escritos con caracteres no ingleses.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "En proceso"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Mensajes"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Reinicie KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Renombrar de nuevo ficheros &procesados..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Renombrar de nuevo ficheros &no procesados..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Renombrar de nuevo &todos los ficheros..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "Renombrar &mas..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Abrir destino..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Error: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Cuidado: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "El usuario a cancelado !"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Cancelando..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Deshacer: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "La operación deshacer renombrado ha sido completada."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Aspecto"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Utilizar el &asistente gráfico (principiantes)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Utilizar entorno gráfico de &pestañas (expertos)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Configuración del entorno gráfico de KRename:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "&Cargar plugins en el inicio"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Auto &redimensionar columnas en la vista previa"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "Medidas de la &miniatura:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Número de registros del historial:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Desactivando esta opción reduce el tiempo de arranque de KRename al no "
+"cargar los KFilePlugins."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "El fichero %1 ya existe!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "No puedo crear enlaces symbólicos en otros hosts para el fichero %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "José Rodríguez"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "jarcastro@ya.com"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numeración"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "Número inicia&l:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "&Variación:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "&Reiniciar contador para todos los directorios"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "&Ignorar números"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Añadir número"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Quitar número"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "Número del primer fichero."
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr ""
+"Se sumará ó restará este valor para obtener el siguiente número."
+"<br>Introduzca un valor negativo para restar."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Añada todos los números que deben ser omitidos por KRename durante el "
+"proceso.<br> Ej.: Si omite el 2, el resultado del renombrado será: fichero0, "
+"fichero1, fichero3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>El contador se reajusta al inicio de todos directorios. Este ajuste "
+"afecta a todos los contadores en uso.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename es una herramienta para renombrar paquetes de ficheros, puede \n"
+"renombrar una lista de ficheros basándose en una serie de expresiones.\n"
+"Si le gusta KRename puede ayudarnos, pruebas, soluciones a fallos\n"
+"y sugerencias serán tan bien recibidas como las ayudas económicas \n"
+"(todo el mundo necesita dinero ;-).\n"
+"Vea los ficheros de ayuda para mas detalles.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "el fichero será añadido a la lista de ficheros a renombrar"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "añadir directorios recursivamente"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "defina una plantilla"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "defina una plantilla para la extensión de fichero"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "activa el uso de un plugin"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "copiar ficheros al directorio"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "mover ficheros al directorio"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "carga el perfil nombrado [profile] en el arranque"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "iniciar inmediatamente el renombrado"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "ocultar vista en tiempo real del renombrado ficheros"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Pagina web, pruebas, muy buenas ideas que me mantienen programando!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Gracias por crear los paquetes de RedHat 7.x y otras ayudas."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Arregló un fallo de startIndex y añadió la clase BatchRenamer\n"
+"a su excelente visor de imágenes."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr ""
+"Arregló un fallo que hacía que KRename no cerrara los ficheros abiertos."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Gracias por su excelente trabajo en apps.kde.com y por la contribución de \n"
+"KRename a apps.kde.com"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Gracias por noatun y el código ID3/Ogg Tag basado en sus módulos noatun"
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Me proporcionó un buen comienzo en la creación de plugins con su aplicación\n"
+"scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Partes del soporte PNG ha sido copiado de su plugin KFile para soporte de "
+"png."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Creador del script Gentoo Ebuild para KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Algunos arreglos de GCC 3.1 para Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Gracias por crear el RPM de Mandrake."
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Traducción al Italiano."
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Proporcionó un parche ''namespace'' de gcc3.x"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Aportó las nuevas características de vista previa y mover"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Arregló los problemas de ''Spec File'' y aportó los rpm's de todas \n"
+"las versiones de SuSE imaginables y es el nuevo responsable de KRename para "
+"Gentoo"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Proporcionó RPM's de SuSE y muy buenas sugerencias"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Aportó la traducción al Castellano"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+"Proporcionó un RPM de RedHat y fue de gran ayuda en la mejora de KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Traducción de KRename al Japonés"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Traducción de KRename al Francés"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Traducción de KRename al Polaco"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Traducción de KRename al Ruso"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Traducción de KRename al Bosnio"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Está ejecutando KRename desde root !</b><br>Puede dañar su sistema si no "
+"sabe exactamente lo que esta haciendo !"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Imágenes"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "&Imágenes"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Conversión de codificación"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "&Conversión de codificación"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Este plugin convierte la codificación de los nombres de ficheros. Por "
+"ejemplo, puede convertir un nombre de fichero codificado en KOI8-R a UTF-8.</"
+"qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Codificando ficheros entrada:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Usar codificación local: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Codificando ficheros de salida:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Expresión"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Descripción"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "F&icheros"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Des&tino"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugins"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "&Nombre"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtras"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Perfiles..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Deshacer renombrados antiguos..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&Cargar plugins de KDE"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "&Recargar plugin de dato"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Añadir..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "&Quitar"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "Quitar &todo"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Ordenar: Desordenado"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Ordenar: Ascendente"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Ordenar: Descendente"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Ordenar: Aleatorio"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Ordenar: Numérico"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Vista previa"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Mostrar nombre"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Añada uno ó más ficheros ó directorios"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Quite los ficheros seleccionados"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Quite todos los ficheros"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Muestra/Oculta la vista previa de imágenes."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Muestra el número de ficheros seleccionados."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Mover la selección hacia arriba."
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Mover la selección hacia abajo."
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Muestra/Oculta los nombres de fichero."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "Mover selección (seleccione la nueva posición con el ratón)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pciones"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "&Renombrar ficheros"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "&Copiar ficheros a un directorio"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "&Mover ficheros a un directorio"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Crear enlace &simbólico en el directorio de destino"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "&Sobreescribir ficheros existentes"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "Des&hacer renombrado"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Crear un script des&hacer"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename scripts deshacer (*.krename)\n"
+"*|Todos los ficheros (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Copia todos los ficheros a un directorio y los renombra."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Mueve todos los ficheros a un directorio y los renombra."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Origen"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Renombrado"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Introduzca una plantilla<br>Ejemplo:<i>imagen###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Introduzca la plantilla para la extensión de fichero.<br>Funciona como la "
+"plantilla de nombre."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Marcando esta casilla obtendrá el mismo resultado que si introduce $ en la "
+"plantilla de extensiones."
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Haga doble click sobre un fichero para modificarlo."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Diálogo de ayuda con todas las expresiones soportadas por KRename"
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Encuentra y reemplaza caracteres o fragmentos del nombre original en el "
+"nombre resultante.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Puede usar \".gz\" y \".tar.gz\" como extension del fichero de respaldo."
+"tar.gz depende esta seleción.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Plantilla:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Expresiones..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&Utilizar la misma extensión de fichero"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Encontrar y &reemplazar..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numeración..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Insertar parte del nombre..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "nombre original"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "nombre original en minúsculas"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "nombre original en mayúsculas"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "todas las iniciales en mayúsculas"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "primera letra en mayúscula"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "número (# - 1, ## - 01, ### - 001, ...)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "contador con valor estandar de inicio 0 e incremento 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "crear un subdirectorio"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "elimina los espacios del principio y del final"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "coger los dígitos de ''x'' a ''y''"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "coger ''y'' dígitos desde la posición ''x''"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "añade el nombre del directorio"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "añade el nombre del directorio padre"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "introduzca la longitud del nombre del archivo original"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Expresiones generales:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Insertar '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Insertar '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Insertar '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Insertar '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Insertar '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Insertar '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Insertar '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Insertar ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Caracteres especiales:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "La extensión del fichero empieza en el:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "Nom&bre de archivo"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefijo:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Sufijo:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Pasar a minúsculas "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Pasar a mayúsculas"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Capitalizar"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Nombre:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Usar nombre original"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Personalizar nombre"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Extensión:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Usar extensión original"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Personalizar extensión"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "Nú&mero"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "Número de &dígitos:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "Encontrar y &reemplazar..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Número"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Fecha"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Inserta un comando especial del KRename que añade información del "
+"fichero al nombre.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Usar este Plugin"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Iniciando la conversión de %1 ficheros."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Defina una plantilla para el renombrado de ficheros."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Por favor introduzca el directorio de destino!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Por favor introduzca el nombre del script deshacer!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Ficheros: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "El directorio %1 no existe. KRename lo creara para usted."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Primer punto"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Ultimo punto"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Terminar"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Perfil predeterminado de asistente"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Perfil predeterminado de pestañas"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Perfiles"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Guardar como perfil..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "Car&gar perfil"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Borrar perfil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Usar como perfil por defecto en el arranque"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Guarda los ajustes actuales de KRename como un nuevo perfil. Los ajustes "
+"pueden recuperase luego cargando ese perfil.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Carga todas las configuraciones almacenadas en este perfil.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Quiere realmente cargar el perfil y sobreescribir la configuración actual: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "No se puede encontrar el perfil \"%1\""
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Nombre del perfil"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Por favor introduzca el nombre del nuevo perfil:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Este perfil ya existe. Por favor, elija otro nombre."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "No puede borrar perfiles predeterminados!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Realmente quiere borrar el perfil: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Deshacer renombrado"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Script deshacer:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>El script deshacer es un script normal de Shell que también puede ser "
+"ejecutado manualmente desde la línea de comando.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Este script no parece ser un script deshacer de KRename. La ejecución del "
+"mismo puede ser peligrosa. Desea continuar ?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "No puedo ejecutar el script deshacer seleccionado !"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Finalizado con éxito"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Añadir el &directorio a la lista de ficheros a renombrar"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Añadir subdirectorios rec&ursivamente"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Añadir directorios &ocultos"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Añadir solo los nombres de directorio"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Recorre recursivamente el arbol del directorio y añade tambien el contenido "
+"de todos los subdirectorios a la lista de ficheros a renombrar."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Desactivado, KRename ignorará los directorios<br>que empiezan con un punto "
+"al seleccionar directorios recursivamente."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Solo añade nombre del directorio omitiendo los nombres de los ficheros que "
+"contiene."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Esta opción hace que KRename añada tambien a la lista el directorio que "
+"contiene los ficheros seleccionados."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Permisos"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "Pe&rmisos"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Permisos de acceso"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Cambiar &permisos"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Clase"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Leer"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Escribir"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Ejecutar"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Especial"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Usuario"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Grupo"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Otros"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Sticky"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Cambiar pr&opietario"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Propiedad"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Usuario:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Grupo:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "No puedo cambiar modo %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "No puedo cambiar propietario %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Por favor, introduzca un nuevo nombre:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "&Deshacer cambios"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Usar nombre del fichero &original"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Aceptar"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "Use el nombre generado por KRename en lugar de su propuesta."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Directorio"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Directorio"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Este plugin ordena los ficheros en subdirectorios después de "
+"renombrarlos.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Ficheros por directorio:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Número inicial:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Directorio de &destino"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Paso %1 de %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Por favor introduzca algún fichero..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Funciones de sistema"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Funciones de sistema"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Introduzca la fecha actual"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Introduzca la fecha actual usando el formato aaaa-MM-dd"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Introduzca el año actual"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Introduzca mes actual en números"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Introduzca el dia actual en números"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Introduzca la hora actual"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Introduzca la hora actual en números"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Introduzca el minuto actual en números"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Introduzca el segundo actual en números"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Introduzca su nombre de usuario"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Introduzca su grupo"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Introduzca la fecha de creación"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Introduzca el formato de fecha de creación"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Introduzca la fecha de modificación"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Introduzca el formato de fecha de modificación"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Introduzca la fecha del último acceso"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Introduzca el formato de fecha del último acceso"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Cambiar nombre manualmente"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Invertir selección"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Por favor, seleccione el texto a insertar:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Vista previa: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Fecha y Hora"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Fecha y &Hora"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Cambiar fecha y hora de &acceso"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Cambiar fecha y hora de &modificación"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Hora:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "hr"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "mn"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "sg"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Usar &fecha y hora actual"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "No puedo cambiar la fecha del fichero %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Expresiones reconocidas:"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..ad9746f
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,1483 @@
+# translation of fr.po to
+# translation of fr.po to
+# translation of fr.po to
+# translation of fr.po to Deutsch
+# translation of fr.po to French
+# french translation for krename
+# Nicolas BENOIT <nbenoit@tuxfamily.org>, 2003, 2004, 2005.
+# Dominik Seichter <domseichter@web.de>, 2004, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-04-07 15:59+0200\n"
+"Last-Translator: Nicolas BENOIT <nbenoit@tuxfamily.org>\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-Generator: KBabel 1.10\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Noms de fichiers traités après %1 secondes."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Impossible de créer le script d'annulation :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Les fichiers seront copiés vers: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Les fichiers seront déplacés vers: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Les liens symboliques seront créés dans : %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Les fichiers seront renommés."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "L'annulation est impossible pour les fichiers distants: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 fichiers ont été renommés avec succès."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 erreur(s) se sont produite(s)!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Temps ecoulé: %1 secondes"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename a terminé de renommer les fichiers."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Cliquer sur Fermer pour quitter!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Impossible de rendre le script d'annulation éxecutable."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Plugin de Commande"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Plugin de Commande"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Vous n'avez pas spécifié de commande à éxecuter."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Plugin de Commande</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Exécute une commande de shell pour chaque fichier après son changement "
+"de nom. Ajoutez %1 aux arguments de la ligne de commande afin d'obtenir "
+"l'ancien et le nouveau nom de fichier.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Commande:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Executer sans bloquer (non-recommandé)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Ajouter"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " a quitté avec l'erreur: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Trouver et Remplacer"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Trouver"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Remplacer Par"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Expression Régulière"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Trouver:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Remplacer par:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Expression régulière"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Editer..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "oui"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "non"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Ajoutez un texte qui devrait être remplacé."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Vous ne pouvez pas remplacer le même texte deux fois."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Expression régulière"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Ce plugin place les fichiers dans des sous-répertoires après les avoir "
+"renommé.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Progrès"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Messages"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Redémarre KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Renommer les fichiers traités à &nouveau..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Renommer les fichiers non-traités à &nouveau..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Renommer tous les fichiers à &nouveau..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Renommer d'autres fichiers..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Ouvrir une Destination..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Erreur: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Avertissement: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "L'utilisateur a annulé!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "En train de stopper l'opération en cours..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Annuler: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "L'annulation des changements de nom est terminée."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Apparence"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Utiliser l' &assistant (conseillé pour les nouveaux utilisateurs)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Utiliser l'interface &classique (utilisateurs avancés)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Configurer l'apparence de l'interface de KRename:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "&Charger les plugins de fichier au démarrage"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "&Redimensionner automatiquement les colonnes dans l'aperçu"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&Taille de l'aperçu:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Nombre de modèles dans l'historique:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"La désactivation de cette option améliore le temps de chargement de KRename, "
+"car aucun plugin de fichier KDE n'est chargé."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Le fichier %1 existe déjà!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr ""
+"Impossible de créer les liens symboliques sur différents hôtes pour le "
+"fichier: %1"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "BENOIT Nicolas"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "nbenoit@tuxfamily.org"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numérotation"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "&Index de départ:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Incrémenter &de:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "&Mettre à zero les compteurs pour tous les répertoires"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "&Sauter les nombres"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Ajouter le nombre"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Enlever le nombre"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "&Nombre de modèles dans l'historique:"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Le compteur est incrémenté/décrémenté par cette valeur."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Ajouter tous les nombres que KRename doit sauter pendant qu'il renomme les "
+"fichiers.<br>C.à.d: Si 2 est sauté les fichiers seront numérotés: file0, "
+"file1, file3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Le compteur prend pour valeur l'index de départ dans tous les "
+"répertoires. Ce paramètre s'applique à tous les compteurs utilisés."
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"Krename est un renommeur de fichiers en groupe, qui\n"
+"peut renommer une liste de fichiers en se basant sur\n"
+"un ensemble d'expressions.\n"
+"\n"
+"Si vous aimez KRename, vous êtes libre d'y contribuer.\n"
+"Tests, corrections de bugs et suggestions sont les bienvenus\n"
+"tout comme une aide financière (tout le monde a besoin\n"
+"d'argent ;)\n"
+"Reportez-vous aux fichiers d'aide pour des détails.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "le fichier sera ajouter à la liste des fichiers à renommer"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "ajouter les répertoires récursivement"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "choisissez un modèle"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "choisissez un modèle pour l'extension de nom de fichier"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "activer un plugin pour l'utiliser"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "copier les fichiers dans le répertoire"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "déplacer les fichiers vers le répertoire"
+
+#: main.cpp:69
+#, fuzzy
+msgid "load the profile named [profile] on startup"
+msgstr "&Utiliser comme profil par défaut au démarrage"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "commence à renommer immédiatement"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "ne pas créer d'aperçu temps-réel."
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Le site web, des tests et de très bonnes idées."
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr ""
+"Merci à lui d'avoir créer les paquets RedHat 7.x et de m'avoir fourni une "
+"aide précieuse."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Il a fixé un bug avec startIndex et a ajouté la classe BatchRenamer\n"
+"à son excellant visualiseur d'images showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr ""
+"Il a fixé un bug qui empêchait KRename de refermer les fichiers ouverts."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Merci pour son excellant travail sur apps.kde.com et son aide pour ajouter "
+"KRename à apps.kde.com"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr "Merci à noatun, le code d'ID3/Ogg Tag est basé sur ses modules noatun."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Il m'a donné un point de départ pour l'écriture des plugins avec son "
+"programme scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Certaines parties du suport PNG sont issus de son plugin KFile pour les "
+"fichiers PNG."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Il a créé les scripts Gentoo Ebuild de KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Quelques corrections pour le GCC 3.1 de la Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Merci d'avoir créer le RPM Mandrake."
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Traduction Italienne."
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "M'a fourni un patch pour les namespace de gcc3.x"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Il m'a fourni les nouvelles possibilités d'aperçu et de déplacement"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"A résolu les problèmes avec le fichier de spécification, a contribué aux "
+"paquets SuSE pour toutes les versions imaginables et est aussi le nouveau "
+"mainteneur de KRename pour Gentoo"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Il a fourni des paquets SuSE et m'a donné quelques bonnes idées"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Il a contribué à la traduction espagnole"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Il a fourni un paquet RedHat et m'a beaucoup aidé à améliorer KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Traduction Japonaise"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Traduction Française"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Traduction Polonaise"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Traduction Russe"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Traduction Bosniaque"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename a été démarré en root!</b><br>Lorsque vous le démarrez en root, "
+"KRename peut endommager votre système si vous ne savez pas exactement ce que "
+"vous faites!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Plugin pour les Images"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "Plug&in pour les Images"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Plugin de conversion de code de caractères"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Plugin de Conv&ersion de Code de Caractères"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Ce plugin est capable de convertir des noms de fichier d'un code "
+"caractères à l'autre. Par exemple, vous pouvez passer vos noms de fichier de "
+"l'encodage KOI8-R à l'encodage UTF-8.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Code de caractères des fichiers entrants:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Utiliser le code de caractères local: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Code de caractères des fichiers sortants:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Token"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Description"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "F&ichiers"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Des&tination"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugins"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "&Noms de fichiers"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtras"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profils..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "Ann&uler les Opérations Précédentes..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&Charger les plugins de fichier KDE"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "&Recharger les options du plugin"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Ajouter..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "R&etirer"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "Enl&ever tous les Fichiers"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Tri: Non trié"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Trier: Ordre Ascendant"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Tri: Ordre Descendant"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Tri: Hasard"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Tri: Numérique"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "A&perçu"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "A&fficher le nom"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Ajouter un ou plusieurs fichiers ou des répertoires"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Retirer les fichiers sélectionnés"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Retirer tous les fichiers"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Activer/désactiver l'aperçu des images."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Nombre de fichiers dans la liste."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Déplacer les éléments sélectionnés vers le haut"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Déplacer les éléments sélectionnés vers le bas"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Activer/désactiver l'affichage du nom du fichier."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr ""
+"Déplacer les éléments sélectionnés (choisir le nouvel emplacement avec la "
+"souris)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&ptions"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "&Renommer les fichiers"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Cop&ier les fichiers dans le répertoire de destination"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "&Déplacer les fichiers vers le répertoire de destination"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Créer des &liens symboliques dans le répertoire de destination"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "&Effacer les fichiers existants"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Annuler les changements de noms"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Créer un script d'ann&ulation"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename scripts d'annulation (*.krename)\n"
+"*|Tous les fichiers (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr ""
+"Copie tous les fichiers dans le répertoire de destination et les renomme."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr ""
+"Déplace tous les fichiers dans le répertoire de destination et les renomme."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Originaux"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Renommés"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Ajouter un modèle.<br>Exemple: <i>image###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Ajouter un modèle pour l'extension de fichier.<br>Il se comporte comme le "
+"modèle de nom de fichier."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "Cocher cette case revient à choisir $ comme modèle d'extension"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Double cliquez sur un élément pour le modifier."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Dialogue d'aide avec tous les tokens supportés par KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Trouver et remplacer les caractères ou morceaux de chaînes de caractères "
+"du nom de fichier original dans le nouveau nom de fichier.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Vous pouvez utiliser \".gz\" et \".tar.gz\" comme extension de fichier "
+"de sauvegarde. tar.gz dépendant de ce paramètre.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Modèle:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Fonctions..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "Conserver l'extension d&u nom de fichier"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "&Trouver et Remplacer..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numérotation..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Insérer une Partie du Nom de Fichier..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "ancien nom de fichier"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "ancien nom de fichier converti en minuscules"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "ancien nom de fichier converti en majuscules"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "première lettre de chaque mot en majuscule"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "première lettre du nom de fichier en majuscule"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "nombre (essayez aussi ##, ###, ... pour ajuster le nombre de zéros)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "compteur avec valeur de départ de 0 et incrément de 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "créer un sous-répertoire"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "enlever les espaces"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "caractères de x à y de l'ancien nom de fichier"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y caractères de l'ancien nom de fichier en commençant à x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "insère le nom du répertoire"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "insère le nom du répertoire parent"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "insérer la longueur du nom de fichier original"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Fonctions de base:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Insérer '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Insérer '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Insérer '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Insérer '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Insérer '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Insérer '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Insérer '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Insérer ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Caractères Spéciaux:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Les extensions de fichiers commencent au:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "Nom de &fichier"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefixe:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Suffixe:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Convertir en minuscules"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Convertir en majuscules"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Mettre en lettres capitales"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Nombre:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Utiliser le nom de fichier original"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Nom personnalisé"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Extension:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Utiliser l'extension du nom de fichier original"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Extension personnalisée"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Nombre"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Nombre de chiffres:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Trouver et Remplacer..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Nombre"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Date"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Insérer une commande spéciale de KRename, qui ajoute des informations "
+"sur le fichier dans son nom.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Utiliser ce plugin"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Commence la conversion de %1 fichiers."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Veuillez spécifier le modèle à utiliser pour renommer les fichiers."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Veuillez donner un répertoire de destination !"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Veuillez donner le nom du script d'annulation!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Fichiers: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Le répertoire %1 n'existe pas. KRename va le créé pour vous."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Premier Point"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Dernier Point"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Terminer"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Profil par défaut du mode Assistant"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Profil par défault du mode Classique"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profils"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Sauver sous..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "&Charger un profil"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Supprimer un profil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Utiliser comme profil par défaut au démarrage"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Créé un nouveau profil à partir des options actuelles de KRename. Les "
+"options sont sauvegardées et pourront être restaurées en chargeant le profil "
+"correspondant.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Charge toutes les options enregistrées dans ce profil.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Souhaitez-vous vraiment charger le profil et écraser les options actuelles: %"
+"1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Le profil \"%1\" est introuvable."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Nom de Profil"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Veuillez donner le nom du nouveau profil:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Ce profil existe déjà. Veuillez choisir un autre nom."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Vous ne pouvez pas supprimer les profils par défaut!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Souhaitez-vous vraiment supprimer le profil: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Annuler les changements de noms"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Script d'annulation:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Les scripts d'annulation sont des scripts shell classiques qui peuvent "
+"aussi être exécutés en ligne de commande.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Ce script ne semble pas être un script d'annulation KRename, son éxécution "
+"pourrait être dangereuse, continuer?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Impossible de démarrer le script d'annulation fourni!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Terminé avec succès"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Ajouter les noms des répertoires &aux noms des fichiers"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Ajouter les sous-répertoires &récursivement"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Ajouter les répertoires &cachés"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "N'ajouter que les noms des répertoires"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Parcourir récursivement les répertoires et ajouter le contenu de tous les "
+"sous-répertoires dans la liste des fichiers à renommer."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Si non activé, KRename ignorera les répertoires commençant par un point "
+"pendant l'ajout récursif."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Ajouter seulement les noms des répertoires et non les noms des fichiers s'y "
+"trouvant."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Cette option force KRename à ajouter le nom du répertoire d'origine des "
+"fichiers sélectionnés dans sa liste."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Permissions"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Permissions"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Autorisations d'accès"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Changer les &Permissions"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Classe"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Lecture"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Ecriture"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Execution"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Spécial"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Utilisateur"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Groupe"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Autres"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Collant"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Changer le Pr&opriétaire"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Propriété"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Utilisateur:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Groupe:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Impossible de changer le mode pour %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Impossible de changer le propriétaire pour %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Saissez s'il vous plait un nouveau nom de fichier:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "Inve&rser les Changements"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Utiliser le nom de &fichier"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Ok"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Utiliser le nom de fichier généré par KRename à la place de celui que vous "
+"avez modifié."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Plugin de Répertoire"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "Plugin &de Répertoire"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Ce plugin place les fichiers dans des sous-répertoires après les avoir "
+"renommé.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Fichiers par répertoire:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Index de départ:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Répertoire &Destinataire"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Incrémenter %1 de %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Ajouter des fichiers s'il vous plait..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "Fonctions du &Système"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Fonctions du Système"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Insérer la date actuelle"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr ""
+"Insérer la date actuelle sous la forme suivante yyyy-MM-dd (année-mois-jour)"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Insérer l'année en cours"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Insérer le mois actuel sous la forme d'un nombre"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Insérer la date de ce jour"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Insérer l'heure actuelle"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Insérer le nombre d'heures actuel"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Insérer le nombre de minutes actuel"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Insérer le nombre de secondes actuel"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Insérer votre nom d'utilisateur"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Insérer le nom de votre groupe"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Insérer la date de création du fichier"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Insérer la date de création du fichier (sous forme formatée)"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Insérer la date de modification du fichier"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Insérer la date de modification du fichier (sous forme formatée)"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Insérer la date du dernier accès"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Insérer la date du dernier accès (sous forme formatée)"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Changer le nom du fichier manuellement"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Inverser la séléction"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Sélectionnez le texte que vous souhaitez insérer:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Aperçu: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Date et Horaire"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Date et &Horaire"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Changer la date et l'horaire du dernier &accès"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Changer la date et l'horaire de la dernière &modification"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Horaire:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "h"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "&Récupérer la date et l'horaire actuelle."
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Impossible de changer la date du fichier %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Tokens supportés:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "Numéro du premier fichier.<br>Les fichiers sont toujours renommés de la "
+#~ "même manière que dans la liste d'aperçu."
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
+
+#~ msgid "insert name of directories top level directory"
+#~ msgstr "insère le nom du répertoire de plus haut niveau"
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..2df601f
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,1447 @@
+# translation of hu.po to Hungarian
+# Hungarian translation of KRename
+# This file is distributed under the same license as the KRename package.
+# Marcel Hilzinger <hili@suselinux.hu>, 2003.
+# Peter Breuer <comp@suselinux.hu>, 2003.
+# Arpad Biro <biro_arpad@yahoo.com>, 2004, 2005, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2006-01-01 18:38+0100\n"
+"Last-Translator: Arpad Biro\n"
+"Language-Team: Hungarian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "A fájlnevek %1 másodperc alatt feldolgozva."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Nem hozható létre a visszavonási szkript:"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Fájlok másolása ide: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Fájlok áthelyezése ide: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Szimbolikus linkek létrehozása itt: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "A bemeneti fájlok átnevezésre kerülnek"
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Távoli fájlra nem lehetséges visszavonás: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 fájl átnevezve."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 hiba lépett fel."
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Eltelt idő: %1 másodperc"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "A KRename befejezte az átnevezést."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Kilépéshez kattintson a \"Bezárás\" gombra."
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Nem lehet beállítani a futtathatósági bitet a visszavonási szkriptre."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Parancsvégrehajtási modul"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Parancsvégrehajtási modul"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Nem adott meg végrehajtandó parancsot."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Parancsvégrehajtási modul</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Parancs végrehajtása minden fájlon az átnevezés után. Az új fájlnévre a %"
+"1 jellel lehet hivatkozni a parancssori paraméterekben.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Parancs:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "Futtatás bl&okkolás nélkül (nem javasolt)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "Fe&lvétel"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " kilépett a következő hibával: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Keresés és csere"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Keresés"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Lecserélés erre"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Reguláris kifejezés"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Keresés:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Lecserélés erre:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Reguláris kifejezés"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Szerkesztés..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "igen"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "nem"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Adja meg a cserélendő szöveget."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Ugyanaz a szöveg nem cserélhető kétszer."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Reguláris kifejezés"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Ãtírási modul"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "Ãtí&rási modul"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr "<qt>Ez a modul betű szerinti átírást végez a nem angol betűkre.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Folyamat"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Ãœzenetek"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "A KRename újraindítása..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "A &feldolgozott fájlok ismételt átnevezése..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "A fel &nem dolgozott fájlok ismételt átnevezése..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Az összes fájl i&smételt átnevezése..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&További átnevezések..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Cél megnyitása..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Hiba: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Figyelmeztetés: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Felhasználó általi megszakítás."
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Megszakítás..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Visszavonás: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Az átnevezés visszavonása megtörtént."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Kinézet"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "&Varázslók használata (kezdőknek)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "&Fülek használata (haladóknak)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "A KRename felületének kinézete:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "&Fájlmodulok betöltése induláskor"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Az oszlopok &automatikus átméretezése az előnézetben"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&Bélyegkép-méret:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "Mintaként használható elő&zmények száma:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Az opció kikapcsolása gyorsítja a KRename elindulását, mivel ebben az "
+"esetben nem töltődnek be a fájlmodulok"
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "\"%1\" nevű fájl már létezik."
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "\"%1\" fájlra nem hozható létre szimbolikus link eltérő gépeken."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Hilzinger Marcel, Breuer Péter"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "hili@suselinux.hu, comp@suselinux.hu"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Számozás"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "&Kezdőindex:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "&Lépésköz:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "Számláló &visszaállítása minden könyvtárnál"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "Számok ki&hagyása"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "Szám &felvétele"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "Szám &törlése"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "Az első fájl száma"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "A számláló értéke ezzel a számmal nő vagy csökken"
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Vegye fel azon számokat, amelyeket ki szeretne hagyni az átnevezés közben."
+"<br>Példa: a 2 kihagyása esetén a fájlok sorszámozása: fájl0, fájl1, "
+"fájl3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>A számláló minden könyvtárban felveszi a kezdőindex értékét. Ez a "
+"beállítás az összes felhasznált számlálóra vonatkozik.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"A KRename egy fájlátnevező, amellyel tömeges fájlátnevezés\n"
+"végezhető kifejezések alapján.\n"
+"\n"
+"Ha kedveli a KRename programot, támogathatja is azt.\n"
+"A tesztelést, hibajavításokat és fejlesztési kéréseket\n"
+"szívesen fogadjuk, akárcsak az anyagi támogatást (pénzre\n"
+"mindenkinek szüksége van).\n"
+"Részletek a dokumentációban.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "Fájl felvétele az átnevezendő fájlok listájába"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "Könyvtár rekurzív felvétele"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "Sablon beállítása"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "Sablon beállítása a fájlnév-kiterjesztéshez"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "Modul bekapcsolása"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "Fájlok másolása egy könyvtárba"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "Fájlok áthelyezése egy könyvtárba"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "A [profile] nevű profil betöltése indításkor"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "Az átnevezés azonnali megkezdése"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "Valós idejű előnézet mellőzése"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Weboldal, tesztelés, jó ötletek, a program fejlesztésének támogatása."
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Red Hat 7.x-csomagok készítése és egyéb segítség."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Egy startIndex-hiba javítása és a BatchRenamer osztály felvétele\n"
+"a Showimg képmegjelenítőbe."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Megnyitott fájlok le nem zárását okozó hiba javítása."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Köszönet az apps.kde.com-on végzett munkájáért és a KRename-nek az apps.kde."
+"com-ra való felvételének segítéséért."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Az ID3- illetve az Ogg-címkékkel kapcsolatos kód az ő Noatun-moduljaira épül."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr "Modulok készítéséhez jó kiindulást adott a Scribus program."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "A PNG-támogatás egyes részei az ő KFile-moduljából származnak."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Gentoo Ebuild-szkriptek létrehozása a KRename-hez."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "GCC 3.1-gyel kapcsolatos javítások Gentoo-hoz."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "A Mandrake-hez való RPM-csomag elkészítése."
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Olasz fordítás."
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "GCC 3.x alatti, névterekkel kapcsolatos javítás."
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Új előnézeti és áthelyezési lehetőségek."
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"A spec-fájllal kapcsolatos problémák javítása, SUSE-hoz való RPM-ek, a "
+"KRename Gentoo alatti karbantartása."
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "SUSE-hoz való RPM-ek és nagyon jó javaslatok."
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Spanyol fordítás."
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Red Hat-hez való RPM és komoly segítség a KRename fejlesztésében."
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Japán fordítás."
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Francia fordítás."
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Lengyel fordítás."
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Orosz fordítás."
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Bosnyák fordítás."
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>A KRename jelenleg rendszergazdai jogokkal fut.</b><br>Rendszergazdai "
+"jogokkal való használattal a felhasználó problémákat idézhet elő a "
+"rendszerben."
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Képmodul"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "&Képmodul"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Ãtkódolási modul"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Ãtkó&dolási modul"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Ezzel a modullal fájlnevek kódolását lehet módosítani. Például "
+"konvertálhatók vele a fájlnevek KOI8-R kódolásról UTF-8 kódolásra.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "A bemeneti fájlok kódolása:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "A &helyi kódolás használata: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "A kimeneti fájlok kódolása:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Token"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Leírás"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "&Fájlok"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "&Cél"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "Mo&dulok"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Fájl&név"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtrák"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profilok..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Korábbi átnevezés visszavonása..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&KDE-s fájlmodulok betöltése"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Modul-adatok f&rissítése"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "Fe&lvétel..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "El&távolítás"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "M&inden eltávolítása"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Rendezés: nincs"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Rendezés: növekvő"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Rendezés: csökkenő"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Rendezés: véletlenszerű"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Rendezés: numerikus"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Előnézet"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "Név meg&jelenítése"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Egy vagy több fájl vagy könyvtár felvétele"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Kijelölt fájlok eltávolítása"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Az összes fájl eltávolítása"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Képek előnézetének be-/kikapcsolása"
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "A listában levő fájlok számának megjelenítése"
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "A kijelölt elemek eggyel feljebb való helyezése"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "A kijelölt elemek eggyel lejjebb való helyezése"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "A fájlnév megjelenítésének be-/kikapcsolása"
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "A kijelölt elemek áthelyezése (az új hely az egérrel választható ki)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pciók"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "Bemenet&i fájlok átnevezése"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Fájlok más&olása a célkönyvtárba"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Fájlok át&helyezése a célkönyvtárba"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Szimbolikus &linkek létrehozása a célkönyvtárban"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "Me&glevő fájlok felülírása"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "Ã&tnevezés visszavonása"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Vissz&avonási szkript létrehozása"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename visszavonási szkriptek (*.krename)\n"
+"*|Összes fájl (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Az összes fájl másolása a célkönyvtárba, majd átnevezés"
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Az összes fájl áthelyezése a célkönyvtárba, majd átnevezés"
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Eredeti"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Ãtnevezve"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Sablon megadása.<br>Példa: <i>kép###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Fájlnév-kiterjesztési sablon megadása.<br>A fájlnévsablonhoz hasonlóan "
+"működik."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Az opció bejelölésének hatása ugyanaz, mint a\n"
+"kiterjesztési sablon $-ra állításának hatása"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Egy bejegyzés módosításához kattintson arra duplán"
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "A KRename által támogatott tokenek listája"
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>A forrás-fájlnév karaktereinek vagy egy részének cseréje a cél-"
+"fájlnévben</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Ezen beállítástól függően például egy \"backup.tar.gz\" nevű fájl "
+"esetében a \".gz\" vagy a \".tar.gz\" lesz fájlkiterjesztésnek tekintve</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "S&ablon:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "Funkc&iók..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "A bemeneti fájl kiter&jesztésének használata"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "K&eresés és csere..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "Szám&ozás..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "Fájlnév &részének beillesztése..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "korábbi fájlnév"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "a korábbi fájlnév kisbetűs formában"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "a korábbi fájlnév nagybetűs formában"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "minden szó első betűje nagybetűs formában"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "a fájlnév első betűje nagybetűs formában"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "szám (vezető nullák használata: ##, ###, ...)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "számláló beállítható kezdőértékkel (0) és növekménnyel (1)"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "alkönyvtár létrehozása"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "szóközök törlése a szöveg elejéről és végéről"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "a korábbi fájlnévnek az x-edik karaktertől az y-adikig terjedő része"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y darab karakter a korábbi fájlnévből az x-edik karaktertől kezdve"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "könyvtárnév beillesztése"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "szülőkönyvtár nevének beillesztése"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "a bemeneti fájlnév hosszának beillesztése"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Beépített funkciók:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "\"$\" beillesztése"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "\"%\" beillesztése"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "\"&\" beillesztése"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "\"*\" beillesztése"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "\"/\" beillesztése"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "\"\\\\\" beillesztése"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "\"[\" beillesztése"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "\"]\" beillesztése"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Speciális karakterek:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "A fájlkiterjesztés kezdőpozíciója:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "Fá&jlnév"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "E&lőtag:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Utótag:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Ãtalakítás kisbetűsre"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Ãtalakítás nagybetűsre"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Nagy kezdőbetűsre"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Név:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Az eredeti név használata"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Egyéni név"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "Fájlk&iterjesztés:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Az eredeti kiterjesztés használata"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Egyéni kiterjesztés"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "Szám&ozás"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "Számje&gyek száma:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "K&eresés és csere..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Szám"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Dátum"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Speciális KRename-parancs beillesztése - ezzel a módszerrel "
+"fájlinformáció illeszthető a fájlnévbe</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&A modul használata"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "%1 fájl konvertálása folyamatban."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Adja meg a sablont a fájlok átnevezéséhez."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Adjon meg célkönyvtárt."
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Adja meg a visszavonási szkript nevét."
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Fájlok: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "\"%1\" nevű könyvtár nem létezik. A KRename létrehozza azt."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Első pont"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Utolsó pont"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "Befeje&zés"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: varázslós alapprofil"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: füleket használó alapprofil"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profilok"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "M&entés profilként..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "Profil betö&ltése"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "Profil &törlése"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Alapértelmezett profilként való használat indításkor"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>A KRename aktuális beállításainak mentése új profilként. A beállítások "
+"elmentésre kerülnek - később visszaállíthatók a \"Profil betöltése\" "
+"funkcióval.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>A profilban tárolt beállítások betöltése</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Valóban szeretné betölteni a profilt (%1), felüldefiniálva ezzel az aktuális "
+"beállításokat?"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "\"%1\" profil nem található."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Profilnév"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Adjon meg egy nevet az új profil számára:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Már létezik ilyen nevű profil. Válasszon más nevet."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Alapértelmezett profilt nem lehet törölni."
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Valóban szeretné törölni a profilt (%1)?"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Ãtnevezés visszavonása"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Visszavonási szkript:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>A visszavonási szkriptek normál szkriptek, amelyek végrehajthatók "
+"manuálisan a parancssorból is.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Ez a szkript nem tűnik KRename által készített visszavonási szkriptnek. A "
+"szkript futtatása veszélyes lehet. Folytatja?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Nem lehet elindítani a megadott visszavonási szkriptet."
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "A művelet befejeződött"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "A &könyvtárnevek is legyenek felvéve"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Könyvtárak felvétele: azok &alkönyvtáraival együtt"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "&Rejtett könyvtárak felvétele"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Csak könyvtárnevek felvétele"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"A könyvtárfa legyen végignézve, és az összes alkönyvtár tartalma is legyen "
+"felvéve az átnevezendő fájlok listájába"
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Ha nincs bejelölve, akkor a KRename figyelmen kívül hagyja a ponttal kezdődő "
+"nevű könyvtárakat az alkönyvtárak felvételénél"
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Csak a könyvtárnevek felvétele - a könyvtárakban levő fájlok neveinek "
+"mellőzése"
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Az opció hatása: a KRename a kijelölt fájlok alapkönyvtárának nevét is "
+"felveszi a listába"
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Jogosultságok"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Jogosultságok"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Hozzáférési jogosultságok"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "&Jogosultságok módosítása"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Osztály"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Olvasás"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Ãrás"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Futtatás"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Speciális"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Felhasználó"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Csoport"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Egyéb"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "A UID beállítása"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "A GID beállítása"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Ragadós (sticky)"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Tulajd&onos módosítása"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Tulajdonos"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Felhasználó:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Csoport:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "\"%1\" jogosultságai nem módosíthatók."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "\"%1\" tulajdonosa nem módosítható."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Adjon meg egy új fájlnevet:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "&Változások visszaállítása"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "A &bemeneti fájlnév használata"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&OK"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"A KRename által létrehozott fájlnév használata a saját módosítások helyett."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Könyvtármodul"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "Kö&nyvtármodul"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Ez a modul az átnevezés után alkönyvtárakba rendezi a fájlokat.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Fájlok száma könyvtáranként:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Kezdőindex:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "K&imeneti könyvtár"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - %1. lépés (összesen: %2)"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Vegyen fel fájlokat..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Rendszerfunkciók"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Rendszerfunkciók"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Az aktuális dátum beillesztése"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Az aktuális dátum beillesztése éééé-HH-nn formátumban"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Az aktuális év beillesztése"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Az aktuális hónap beillesztése számként"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Az aktuális nap beillesztése számként"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Az aktuális idő beillesztése"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Az aktuális óra beillesztése számként"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Az aktuális perc beillesztése számként"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Az aktuális másodperc beillesztése számként"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Az Ön felhasználónevének beillesztése"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Az Ön csoportnevének beillesztése"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "A fájl létrehozási dátumának beillesztése"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "A fájl létrehozási dátumának beillesztése formázott módon"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "A fájl módosítási dátumának beillesztése"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "A fájl módosítási dátumának beillesztése formázott módon"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "A fájl legutóbbi elérésének dátumának beillesztése"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "A fájl legutóbbi elérésének dátumának beillesztése formázott módon"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Fájlnév manuális módosítása"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Kijelölés megfordítása"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Válassza ki a beillesztendő szöveget:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Előnézet: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Dátum és idő"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Dátum és &idő"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "&Hozzáférési dátum és idő módosítása"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Módosí&tási dátum és idő módosítása"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Idő:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr " óra"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr " perc"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr " mp"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Az aktuális dátum és idő &lekérdezése"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "A(z) \"%1\" fájl dátuma nem módosítható."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Támogatott tokenek:"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..cb3e500
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,1459 @@
+# translation of krename.po to Italian
+# Vincenzo Reale <smart2128@baslug.org>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: krename\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2006-03-02 13:24+0100\n"
+"Last-Translator: Vincenzo Reale <smart2128@baslug.org>\n"
+"Language-Team: Italian <kde-i18n-it@mail.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.1\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "File processati dopo %1 secondi."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Impossibile creare uno script di ripristino:"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "I file saranno copiati in: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "I file saranno spostati in: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "I collegamenti simbolici verranno creati in: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "I file di origine saranno rinominati."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Impossibile annullare per il file remoto: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 file rinominati con successo."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "riscontrati %2 errori!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Tempo trascorso: %1 secondi"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename ha completato la rinominazione."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Premi \"Chiudi\" per uscire!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Impossibile rendere eseguibile lo script di rispristino."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Plugin comandi"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "Plugin &comandi"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Non è stato specificato un comando da eseguire."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Plugin comandi</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt >Su ciascun file rinominato esegue un comando (di shell). Il parametro %"
+"1, come argomento del comando, viene sostituito con il nome del file già "
+"rinominato.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Comando:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Esegui senza interrompere (sconsigliato)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Aggiungi"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " terminato con errore: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Trova e sostituisci"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Trova"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Sostituisci con"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Espressione regolare"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Trova:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Sostituisci con:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "Espressione &regolare"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Modifica..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "si"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "no"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Aggiungi un testo che dovrebbe essere sostituito."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Impossibile sostituire lo stesso testo più di una volta."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Espressione regolare"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Plugin di traslitterazione"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "Plugin di &traslitterazione"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Questo plugin trascrive i nomi scritti con caratteri che non "
+"appartengono all'alfabeto inglese.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Avanzamento"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Messaggi"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Riavvio di KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Rinomina &ancora i file già processati..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Rinomina &ancora i file non processati..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Rinomina &ancora tutti i file..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Rinomina ulteriori..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Apri destinazione..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Errore: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Avviso: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "L'utente ha premuto Annulla!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Interruzione..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Annulla: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Completato l'annullamento delle operazioni rimanenti."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Aspetto"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Usa l'interfaccia semplificata (principianti)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Usa l'interfaccia completa (utenti esperti)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Configurazione dell'aspetto dell'interfaccia grafica di KRename:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "Carica i plugin a&ll'avvio"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Ridimensiona larghezza colonne nell'anteprima"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "Dimensione minia&tura:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Numero di modelli nella cronologia:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Disabilitando questa opzione si velocizza l'avvio di KRename in quanto non "
+"vengono caricate le estensioni KFilePlugins."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Il file %1 esiste già!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "Impossibile creare un collegamento simbolico al file %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Patrick Bellasi, Vincenzo Reale"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "derkling@users.sourceforge.net, smart2128@baslug.org"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Contatore"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "&Indice iniziale:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "&Passo:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "A&zzera il contatore per ogni cartella"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "&Salta i numeri"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Aggiungi numero"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Rimuovi numero"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "Numero del primo file."
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Il contatore aumenta/diminuisce di questo valore."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Aggiungi tutti i numeri che KRename non deve usare. <br>Es.: se indichi 2, i "
+"file saranno numerati come: file0, file1, file3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Il contatore viene inizializzato al valore di inizio in ogni cartella. "
+"Questa impostazione si applica a tutti i contatori definiti.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename consente di rinominare una\n"
+"lista di file secondo una serie di regole.\n"
+"\n"
+"Se questo programma ti piace puoi darci una mano.\n"
+"Puoi contribuire testandolo, corregendone gli errori\n"
+"o anche solo richiedendo nuove funzionalità.\n"
+"Un supporto finanziario fa sempre piacere (i soldi\n"
+" servono a tutti)\n"
+"Vedi la guida per i dettagli.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "il file verrà aggiunto alla lista di quelli da rinominare"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "aggiungi ricorsivamente le cartelle"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "definisci un modello"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "definisci un modello per l'estensione del file"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "Abilita l'uso di un plugin"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "copia i file nella cartella"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "sposta i file nella cartella"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "carica il profilo chiamato [profilo] all'avvio"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "inizia subito a rinominare i file"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "Non creare l'anteprima dei nomi in automatico"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Sito web, prove ed ottime idee che mi hanno sempre mantenuto impegnato a "
+"scrivere codice!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Grazie per aver creato il pacchetto per RedHat 7.x e per altri aiuti."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Corretto un errore sul contatore iniziale, aggiunta la classe BatchRenamer\n"
+"grazie anche per il suo ottimo visualizzatore di immagini showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Corretto un errore che non consentiva a KRename di chiudere i file."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Per il suo meraviglioso lavoro su apps.kde.com e per l'aiuto ad appoggiare "
+"KRename su apps.kde.com"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Per la sua applicazione noatun ed i suoi moduli su cui si basa il codice per "
+"gli ID3/Ogg Tag."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Per avermi permesso di imparare a scrivere plugin con la sua applicazione "
+"Scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Parti del supporto PNG sono state copiate dal suo plugin KFile per il "
+"supporto png."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Per aver creato l'ebuild di KRename per Gentoo."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Per alcune correzioni di GCC 3.1 per Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Per aver creato il pacchetto RPM per Mandrake"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Per la localizzazione in italiano"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Per aver fornito alcune correzioni al namespace di gcc3.x"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Per aver fornito le nuove funzionalità di anteprima e spostamento"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Per aver sistemato alcuni problemini con il file spec ed aver fornito i "
+"pacchetti RPM per ogni versione di SuSE, ed anche per essere il nuovo "
+"responsabile dell'ebuild Gentoo di KRename."
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Per aver fornito gli RPM per SuSE ed alcuni ottimi consigli"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Per aver contribuito alla localizzazione in spagnolo"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+"Per aver creato gli RPM per RedHat e per il grande aiuto nel migliorare "
+"KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Per aver localizzato KRename in giapponese"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Per aver localizzato KRename in francese"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Per aver localizzato KRename in polacco"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Per aver localizzato KRename in russo"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Per aver localizzato KRename in bosniaco"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename è stato avviato come superutente!</b><br>Usandolo così potreste "
+"danneggiare il vostro sistema se non sapete bene cosa state facendo!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Plugin immagini"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "Plugin &immagini"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Plugin conversione codifica"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Plugin conv&ersione codifica"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Questo plugin consente di convertire i nomi dei file in diverse "
+"codifiche. Ad esempio consente di convertire il nome di un file dalla "
+"codifica KOI8-R a quella UTF-8</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Codifica dei file di origine:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "Codifica locale da &usare: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Codifica dei file di destinazione:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Token"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Descrizione"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "F&ile"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Des&tinazione"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugin"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "&Nome file"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtra"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profili..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "Ann&ulla una rinominazione precedente..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&Carica i plugin KDE per i file"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "&Ricarica i dati del plugin"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Aggiungi..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "&Rimuovi"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "&Rimuovi tutto"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Ordine: sparso"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Ordine: ascendente"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Ordine: discendente"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Ordine: casuale"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Ordine: numerico"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Anteprima"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Visualizza nome"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Aggiungi uno o più file o cartelle"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Rimuovi i file selezionati"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Rimuovi tutti i file"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Abilita/disabilita l'anteprima delle immagini."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Mostra il numero di file nella lista."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Sposta verso l'alto gli elementi selezionati"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Sposta verso il basso gli elementi selezionati"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Abilita/disabilita la visualizzazione del nome del file."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr ""
+"Sposta gli elementi selezionati (selezionare la nuova posizione con il mouse)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pzioni"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "&Rinomina i file d'origine"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Copia i fi&le nella cartella di destinazione"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Sposta i &file nella cartella di destinazione"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Crea co&llegamenti simbolici nella cartella di destinazione"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "S&ovrascrivi i file esistenti"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "Ann&ulla la rinominazione"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "&Crea una procedura di ripristino"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|Procedura di ripristino di KRename (*.krename)\n"
+"*|Tutti i file (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Copia tutti i file nella cartella di destinazione e rinominali."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Sposta tutti i file nella cartella di destinazione e rinominali."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Origine"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Rinominati"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Aggiungi un modello.<br>Esempio: <i>immagine###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Aggiungi un modello per le estensioni.<br>Simile al modello per il nome dei "
+"file."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Selezionare questa opzione equivale a definire il seguente modello per "
+"l'estenzione $"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Doppio clic su un elemento per modificarlo."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Elenca tutti i token supportati da KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Trova e sostituisci caratteri o parti di stringhe del nome del file "
+"sorgente nel nome del file di destinazione.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Puoi usare \".gz\" e \".tar.gz\" come estensione della copia di "
+"sicurezza. tar.gz secondo questa impostazione.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "Mod&ello:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Funzioni..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&Utilizza le estensioni dei file di origine"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Trov&a e sostituisci..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numerazione..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Inserisci parte del nome file"
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "vecchio nome file"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "vecchio nome file convertito in minuscolo"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "vecchio nome file convertito in maiuscolo"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "prima lettera di ogni parola in maiuscolo"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "prima lettera del nome file in maiuscolo"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "numero (usa anche ##, ###, ... per aggiungere degli zeri iniziali)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "contatore con valore iniziale 0 e passo personalizzato 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "crea una sotto-cartella"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "elimina gli spazi bianchi iniziali e finali"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "caratteri da x a y del vecchio nome file"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y caratteri del vecchio nome file partendo da x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "inserisci il nome della cartella"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "inserisci il nome della cartella genitrice"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "Inserisci la lunghezza del file di origine"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Funzioni predefinite:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Inserisci '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Inserisci '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Inserisci '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Inserisci '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Inserisci '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Inserisci '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Inserisci '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Inserisci ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Caratteri speciali:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "L'estensione del file inizia a:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "Nome &file"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefisso:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Suffisso:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Converti in minuscolo"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Converti in maiuscolo"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Prima lettera maiuscola"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Nome:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Usa nome originale"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Nome personalizzato"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Estensione"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Usa estensione originale"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Estensione personalizzata"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Numero"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Numero di cifre:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "Trova e sostituisci..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Numero"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Data"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Inserisci un comando speciale di KRename che consente di includere "
+"informazioni sul file nel sul nome.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Utilizza questo plugin"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Avvio conversione di %1 file."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Specifica un modello da utilizzare per rinominare i file."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Indica una cartella di destinazione!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Indica il nome dello script di ripristino!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "File: <br>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "La cartella %1 non esiste. KRename la creerà per te."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Primo punto"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Ultimo punto"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Fine"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: profilo predefinito con assistente"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: profilo predefinito per utenti avanzati"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profili"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Salva come profilo..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "Carica profi&lo"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "Elimina profilo"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "Usa come profilo predefinito all'avvio"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Salva le impostazioni correnti di KRename in un nuovo profilo. Le "
+"impostazioni possono essere recuperate successivamente con l'opzione "
+"\"Carica profilo\"</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Carica tutte le impostazioni definite in questo profilo.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Vuoi davvero sovrascrivere le impostazioni del profilo corrente: %1, con "
+"quelle del profilo che stai caricando"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Il profilo: \"%1\" non è stato trovato."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Nome profilo"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Inserisci il nome del nuovo profilo:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Un profilo con questo nome esiste già. Scegli un nome diverso."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Impossibile eliminare i profili predefiniti!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Vuoi davvero eliminare il profilo: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Annulla rinominazione"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Procedura di ripristino:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Le procedure di ripristino sono semplici shell script che possono essere "
+"lanciati anche manualmente dalla linea di comando</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Questo script non sembra essere una valida procedura di ripristino di "
+"KRename. L'esecuzione di questo script è potenzialmente dannosa. Si vuole "
+"continuare comunque?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Impossibile avviare la procedura di ripristino indicata!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Completato con successo"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Aggiungi i nomi delle car&telle ai nomi dei file"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Aggiungi le sotto-cartelle &ricorsivamente"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Aggiun&gi le cartelle nascoste"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Aggiungi solo i nomi delle cartelle"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Attraversa ricorsivamente le cartelle ed aggiungi il contenuto di ciascuna "
+"alla lista dei file da rinominare."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Quando selezionato, KRename non aggiunge le cartelle il cui nome inizia con "
+"un punto alla lista dei file da rinominare."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Aggiungi a Krename solo i nomi delle cartelle escludendo i file in esse "
+"contenuti."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Quando selezionata la cartella contenente i file da rinominare viene "
+"aggiunta alla lista."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Permessi"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Permessi"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Permessi di accesso"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Cambia i &permessi"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Classe"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Lettura"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Scrittura"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Esecuzione"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Speciale"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Utente"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Gruppo"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Altri"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Sticky"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Cambia pr&oprietario"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Proprietà"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Utente:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Gruppo:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Impossibile cambiare i permessi di: %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Impossibile cambiare il proprietario di: %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Inserisci un nuovo nome per il file:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "A&nnulla i cambiamenti"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Usa nome del f&ile di origine"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Ok"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Usa il nome generato da KRename per il file anziché quello definito "
+"dall'utente"
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Cartella dei plugin"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "Cartella &dei plugin"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Questo plugin ordina i file dopo averli rinominati nelle sotto-cartelle</"
+"qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "File nella cartella:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Indice iniziale:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Cartella di &destinazione"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Passo %1 di %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Aggiungi dei file..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "Funzioni di &sistema"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Funzioni di sistema"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Inserisci la data corrente"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Inserisci la data corrente usando il formato aaaa-MM-gg"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Inserisci l'anno corrente"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Inserisci il mese corrente come numero"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Inserisci il giorno corrente come numero"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Inserisci l'ora corrente"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Inserisci l'ora corrente come numero"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Inserisci il minuto corrente come numero"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Inserisci il secondo corrente come numero"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Inserisci il tuo nome utente"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Inserisci il tuo gruppo"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Inserisci la data di creazione del file"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Inserisci la data formattata di creazione del file"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Inserisci la data di ultima modifica del file"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Inserisce la data formattata di ultima modifica del file"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Inserisci la data dell'ultimo accesso al file"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Inserisci la data formattata dell'ultimo accesso al file"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Cambia manualmente il nome del file"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Inverti la selezione"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Seleziona il testo che desideri inserire:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Anteprima: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Data e ora"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Da&ta e ora"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Cambia la data e l'ora di accesso"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Cambia la data e l'ora di ultima modifica"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Ora:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "ore"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "sec"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Usa &data e ora correnti"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Impossibile cambiare la data del file %1"
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Token supportati:"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..0fd0a7e
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,1432 @@
+# UTUMI Hirosi <utuhiro78@yahoo.co.jp>, 2003, 2004, 2005.
+# Dominik Seichter <domseichter@web.de>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: ja\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-01-27 20:39+0900\n"
+"Last-Translator: UTUMI Hirosi <utuhiro78@yahoo.co.jp>\n"
+"Language-Team: <ja@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "%1 秒後ã«é–‹å§‹ã—ã¾ã™"
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "å–消スクリプトを作æˆã§ãã¾ã›ã‚“:"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Files will be copied to: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Files will be moved to: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Symlinkを作æˆã—ã¾ã™: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "入力ファイルをリãƒãƒ¼ãƒ ã—ã¾ã™"
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "リモートファイルã®å–り消ã—ã¯ã§ãã¾ã›ã‚“: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’リãƒãƒ¼ãƒ ã—ã¾ã—ãŸ"
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 個ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "経éŽæ™‚é–“: %1 秒"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "リãƒãƒ¼ãƒ ã‚’完了ã—ã¾ã—ãŸ"
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "終了ã™ã‚‹ã«ã¯ã€Œé–‰ã˜ã‚‹ã€ã‚’押ã—ã¦ãã ã•ã„"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "å–消スクリプトを実行ファイルã«ã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“"
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "コマンド"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "コマンド(&C)"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’指定ã—ã¦ã„ã¾ã›ã‚“"
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>コマンドプラグイン</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>ファイルãŒï¼‘ã¤ãƒªãƒãƒ¼ãƒ ã•ã‚Œã‚‹ã”ã¨ã«ã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹ã€‚コマンドライ"
+"ンã®å¼•æ•°ã«ã¯ %1 (=リãƒãƒ¼ãƒ å¾Œã®ãƒ•ã‚¡ã‚¤ãƒ«å) を使ã†ã€‚</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "コマンド:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "KRenameã‚’æ­¢ã‚ãšã«ã‚³ãƒžãƒ³ãƒ‰ã‚’実行(ãŠã™ã™ã‚ã—ã¾ã›ã‚“)(&E)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "追加(&A)"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " exited with error: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "検索ã¨ç½®æ›"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "検索語å¥"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "以下ã§ç½®æ›"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "æ­£è¦è¡¨ç¾"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "検索語å¥:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "以下ã§ç½®æ›:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "æ­£è¦è¡¨ç¾(&R)"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "編集(&E).."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "ã¯ã„"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "ã„ã„ãˆ"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Add a text that should be replaced."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "åŒã˜èªžå¥ã§ï¼’回置ãæ›ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "æ­£è¦è¡¨ç¾"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr "<qt>リãƒãƒ¼ãƒ ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’サブディレクトリã«æŒ¯ã‚Šåˆ†ã‘ã‚‹</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "進行状æ³"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "メッセージ"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "KRenameã‚’å†èµ·å‹•"
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "処ç†ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’å†ãƒªãƒãƒ¼ãƒ (&A)"
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "処ç†ã—ãªã‹ã£ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’å†ãƒªãƒãƒ¼ãƒ (&A)"
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å†ãƒªãƒãƒ¼ãƒ (&A)"
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "別ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’リãƒãƒ¼ãƒ (&R)"
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "対象を開ã(&O)"
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "エラー: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "警告: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "キャンセルを押ã—ã¾ã—ãŸ"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "中止.."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "å…ƒã«æˆ»ã™: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "リãƒãƒ¼ãƒ æ“作ã®å–り消ã—ãŒå®Œäº†ã—ã¾ã—ãŸ"
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "外観"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "ウィザード形å¼ã®GUIを使ã†(åˆå¿ƒè€…å‘ã‘)(&w)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "タブ形å¼ã®GUIを使ã†(上級者å‘ã‘)(&t)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "KRenameã®å¤–観を設定:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "起動時ã«ãƒ•ã‚¡ã‚¤ãƒ«ãƒ—ラグインをロードã™ã‚‹(&L)"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "プレビュー時ã«ã‚³ãƒ©ãƒ ã‚’自動的ã«ãƒªã‚µã‚¤ã‚ºã™ã‚‹(&r)"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "サムãƒãƒ¼ãƒ«ã®ã‚µã‚¤ã‚º(&T):"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "テンプレート履歴ã®æ•°(&N):"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションを切るã¨KFilePluginをロードã—ãªããªã‚‹ã®ã§KRenameã®èµ·å‹•ãŒé€Ÿããª"
+"ã‚Šã¾ã™ã€‚"
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "ファイル %1 ã¯å­˜åœ¨ã—ã¾ã™"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "ç•°ãªã‚‹ãƒ›ã‚¹ãƒˆã«ã¯ãƒ•ã‚¡ã‚¤ãƒ« %1 ã®symlinkを作れã¾ã›ã‚“"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "UTUMI Hirosi"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "utuhiro78@yahoo.co.jp"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "番å·(&N)"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "開始番å·(&i):"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "増加数(&b):"
+
+#: numberdialog.cpp:64
+#, fuzzy
+msgid "&Reset counter for every directory"
+msgstr "ディレクトリåを挿入"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "スキップã™ã‚‹ç•ªå·(&k)"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "番å·ã‚’追加(&A)"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "番å·ã‚’削除(&R)"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "テンプレート履歴ã®æ•°(&N):"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "ã“ã®æ•°ã®ã¶ã‚“ãšã¤ç•ªå·ãŒå¤§ãã/å°ã•ããªã‚Šã¾ã™"
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"リãƒãƒ¼ãƒ æ™‚ã«ã‚¹ã‚­ãƒƒãƒ—ã™ã‚‹ç•ªå·ã‚’追加<br>例: 2をスキップã™ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ã«ãª"
+"ã‚‹: file0, file1, file3, .."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRenameã¯ãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ«ãƒªãƒãƒ¼ãƒžã§ã™ã€‚\n"
+"指定ã—ãŸå½¢å¼ã«åŸºã¥ã„ã¦ãƒ•ã‚¡ã‚¤ãƒ«ã‚’リãƒãƒ¼ãƒ ã—ã¾ã™ã€‚\n"
+"\n"
+"動作テスト,ãƒã‚°ä¿®æ­£,機能ã®è¦æœ›ã‚’æ­“è¿Žã—ã¾ã™ã€‚ãã—ã¦\n"
+"ã‚‚ã¡ã‚ん経済的ãªæ´åŠ©ã‚‚(誰ã«ã¨ã£ã¦ã‚‚ãŠé‡‘ã¯å¿…è¦ã§ã™;)\n"
+"詳細ã«ã¤ã„ã¦ã¯ãƒ˜ãƒ«ãƒ—ファイルをã”覧ãã ã•ã„。\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "リãƒãƒ¼ãƒ ç”¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ãƒªã‚¹ãƒˆã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’追加ã™ã‚‹"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "ディレクトリをå†å¸°çš„ã«è¿½åŠ ã™ã‚‹"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "書å¼ã‚’設定"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "ファイル拡張å­ã®æ›¸å¼ã‚’設定"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "プラグインを使用ã™ã‚‹"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "ディレクトリã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピー"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "ディレクトリã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’移動"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr ""
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "リãƒãƒ¼ãƒ ã‚’ã™ãã«é–‹å§‹"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "プレビューをリアルタイムã§ä½œã‚‰ãªã„"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Website, testing, very good ideas and keeping me coding!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Thanks to him for creating RedHat 7.x packages and some other help."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Fixed a bug that caused krename not closing open files."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Gave me a good start into writing plugins with his application scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Created the Gentoo Ebuild scripts for Krename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Some GCC 3.1 fixes for Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Thanks for creating the Mandrake RPM"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Italian translation"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Provided a gcc3.x namespace patch"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Provided the new preview and move features"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Provided SuSE RPMs and very good suggestions"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Contributed a Spanish translation"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Provided a RedHat RPM and was big help in improving KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "KRenameを日本語ã«ç¿»è¨³"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Translated KRename into French"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Translated KRename into Polish"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Translated KRename into Russian"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Translated KRename into Bosnian"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>rootã§KRenameã‚’èµ·å‹•ã—ã¦ã„ã¾ã™ã€‚</b><br>rootã§èµ·å‹•ã™ã‚‹ã¨ã‚·ã‚¹ãƒ†ãƒ ã‚’破壊ã™ã‚‹"
+"æã‚ŒãŒã‚ã‚Šã¾ã™"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "ç”»åƒ"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "ç”»åƒ(&i)"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "エンコーディング変æ›ãƒ—ラグイン"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "エンコーディング変æ›ãƒ—ラグイン(&E)"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>ファイルåを別ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¤‰æ›ã—ã¾ã™ã€‚例ãˆã° KOI8-R ã‹ã‚‰ UTF-8 ã«"
+"ファイルåã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’変æ›ã§ãã¾ã™ã€‚</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "入力ファイルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "ローカルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’使ã†(&U): %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "出力ファイルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "é …ç›®"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "説明"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "ファイル(&i)"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "対象(&t)"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "プラグイン(&l)"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "ファイルå(&n)"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "特別(&x)"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "プロファイル(&P)"
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "リãƒãƒ¼ãƒ ã‚’å…ƒã«æˆ»ã™(&U).."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "KDEファイルプラグインをロード(&L)"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "プラグインデータをリロード(&R)"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "追加(&A)..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "削除(&m)"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "リストを全ã¦å‰Šé™¤(&e)"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "ソート: ãªã—"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "ソート: 昇順"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "ソート: é™é †"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "ソート: ランダム"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "ソート: 数字を後"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "プレビュー(&P)"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "åå‰ã‚’表示ã™ã‚‹(&D)"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "1ã¤ä»¥ä¸Šã®ãƒ•ã‚¡ã‚¤ãƒ«/ディレクトリを追加"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "ç”»åƒã®ãƒ—レビューをオン/オフ"
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "リストã®ãƒ•ã‚¡ã‚¤ãƒ«æ•°ã‚’表示ã™ã‚‹"
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’上ã¸ç§»å‹•"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’下ã¸ç§»å‹•"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "ファイルåã®è¡¨ç¤ºã‚’オン/オフ"
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’移動 (マウスã§å ´æ‰€ã‚’指定)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "オプション(&p)"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "ファイルをリãƒãƒ¼ãƒ (&R)"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "ディレクトリã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピー(&y)"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "ディレクトリã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’移動(&M)"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "ディレクトリã«symlinkを作æˆ(&l)"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "ファイルを上書ãã™ã‚‹(&O)"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "リãƒãƒ¼ãƒ ã‚’å…ƒã«æˆ»ã™(&U)"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "å–消スクリプトを作æˆ(&C)"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRenameã®å–消スクリプト(*.krename)\n"
+"*|å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«(*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "ディレクトリã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピーã—ã¦ãƒªãƒãƒ¼ãƒ ã™ã‚‹"
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "ディレクトリã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’移動ã—ã¦ãƒªãƒãƒ¼ãƒ ã™ã‚‹"
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "ç¾åœ¨"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "リãƒãƒ¼ãƒ å¾Œ"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "書å¼ã‚’追加<br>例: <i>picture###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"ファイル拡張å­ã®ãƒ†ãƒ³ãƒ—レートを追加ã™ã‚‹ã€‚<br>ファイルåã®ãƒ†ãƒ³ãƒ—レートã®ã‚ˆã†ã«"
+"動作ã—ã¾ã™"
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "変更ã™ã‚‹ã«ã¯ã‚¢ã‚¤ãƒ†ãƒ ã‚’ダブルクリック"
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Help Dialog with all tokens supported by KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr "<qt>å…ƒã®ãƒ•ã‚¡ã‚¤ãƒ«åã®ä¸€éƒ¨ã‚’指定ã—ãŸæ–‡å­—ã«ç½®ãæ›ãˆã‚‹</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "書å¼(&T):"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "機能(&F)"
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "入力ファイルã®æ‹¡å¼µå­ã‚’使ã†(&U)"
+
+#: krenameimpl.cpp:569
+#, fuzzy
+msgid "Find &and Replace..."
+msgstr "検索ã¨ç½®æ›(&F)"
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "番å·ä»˜ã‘(&N)"
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "ファイルåã®ä¸€éƒ¨ã‚’挿入(&I)"
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«å"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "å°æ–‡å­—ã«å¤‰æ›ã•ã‚ŒãŸç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«å"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "大文字ã«å¤‰æ›ã•ã‚ŒãŸç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«å"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "å˜èªžã®é ­ã‚’ãã‚Œãžã‚Œå¤§æ–‡å­—ã«ã™ã‚‹"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "ファイルåã®é ­ã‚’ãã‚Œãžã‚Œå¤§æ–‡å­—ã«ã™ã‚‹"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "番å·(##ã ã¨01, ###ã ã¨001 ã®ã‚ˆã†ã«æ¡ãŒå¢—ãˆã‚‹)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "0 ã§å§‹ã‚㦠1 ãšã¤ç•ªå·ã‚’上ã’ã‚‹"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "サブディレクトリを作æˆ"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "å‰å¾Œã®ç©ºç™½ã‚’è©°ã‚ã‚‹"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«åã®x番目ã‹ã‚‰y番目ã¾ã§ã®æ–‡å­—"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«åã®x番目ã®æ–‡å­—ã‹ã‚‰y文字分ã®æ–‡å­—"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "ディレクトリåを挿入"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "親ディレクトリåを挿入"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "入力ファイルåを挿入ã™ã‚‹æ–‡å­—æ•°"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "内蔵機能:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "'$' を挿入"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "'%' を挿入"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "'&' を挿入"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "'*' を挿入"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "'/' を挿入"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "'\\\\' を挿入"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "'[' を挿入"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "']' を挿入"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "特殊ãªæ–‡å­—:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "ファイルã®æ‹¡å¼µå­ã®å ´æ‰€:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "ファイルå(&F)"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "接頭語(&P):"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "接尾語(&S):"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "å°æ–‡å­—ã«å¤‰æ› "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "大文字ã«å¤‰æ›"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "先頭ã®ã¿å¤§æ–‡å­—"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "åå‰(&N):"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "å…ƒã®åå‰ã‚’使ã†"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "カスタムå"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "æ‹¡å¼µå­(&E):"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "å…ƒã®æ‹¡å¼µå­ã‚’使ã†"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "カスタム拡張å­"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "番å·(&N)"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "æ¡æ•°(&N):"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "検索ã¨ç½®æ›(&F)"
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "番å·"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "日付"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "ã“ã®ãƒ—ラグインを使ã†(&U)"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "%1 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®å¤‰æ›ã‚’開始"
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "ファイルをリãƒãƒ¼ãƒ ã™ã‚‹éš›ã®æ›¸å¼ã‚’指定"
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "ディレクトリを指定ã—ã¦ãã ã•ã„"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "å–消スクリプトã«åå‰ã‚’ã¤ã‘ã¦ãã ã•ã„"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "ファイル: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "ディレクトリ %1 ã¯å­˜åœ¨ã—ã¾ã›ã‚“。KRenameãŒä½œæˆã—ã¾ã™ã€‚"
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "最åˆã®ãƒ‰ãƒƒãƒˆ"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "最後ã®ãƒ‰ãƒƒãƒˆ"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "開始(&F)"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: ウィザード形å¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ—ロファイル"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: タブ形å¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ—ロファイル"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "プロファイル"
+
+#: profiledlg.cpp:407
+#, fuzzy
+msgid "&Save As Profile..."
+msgstr "プロファイルを作æˆ(&C)"
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "プロファイルをロード(&L)"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "プロファイルを削除(&D)"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr ""
+
+#: profiledlg.cpp:427
+#, fuzzy
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>ç¾åœ¨ã®KRenameã®è¨­å®šã‹ã‚‰æ–°è¦ãƒ—ロファイルを作æˆã—ã¾ã™ã€‚ä¿å­˜ã—ãŸè¨­å®šã¯'プロ"
+"ファイルをロード'ã§å‘¼ã³å‡ºã›ã¾ã™ã€‚</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>ã“ã®ãƒ—ロファイルã«ä¿å­˜ã—ãŸè¨­å®šã‚’ロード</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr "ç¾åœ¨ã®è¨­å®šã‚’上書ãã—ã¦ãƒ—ロファイルをロードã—ã¾ã™ã‹: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "プロファイル \"%1\" ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "プロファイルã®åå‰"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "æ–°ã—ã„プロファイルã®åå‰ã‚’入力:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "ã“ã®ãƒ—ロファイルã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚別ã®åå‰ã‚’入力ã—ã¦ãã ã•ã„"
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "デフォルトã®ãƒ—ロファイルã¯å‰Šé™¤ã§ãã¾ã›ã‚“"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "ã“ã®ãƒ—ロファイルを削除ã—ã¾ã™ã‹: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "リãƒãƒ¼ãƒ ã‚’å…ƒã«æˆ»ã™"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "å–消スクリプト:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>å–消スクリプトã¯ä¸€èˆ¬çš„ãªã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トã§ã™ã€‚手動ã§ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‹ã‚‰å®Ÿ"
+"è¡Œã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"ã“ã®ã‚¹ã‚¯ãƒªãƒ—トã¯KRenameã®å–消スクリプトã§ã¯ãªã„よã†ã§ã™ã€‚ã“ã®ã‚¹ã‚¯ãƒªãƒ—トを実行"
+"ã™ã‚‹ã®ã¯å±é™ºã§ã™ã€‚続ã‘ã¾ã™ã‹ï¼Ÿ"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "指定ã—ãŸå–消スクリプトを開始ã§ãã¾ã›ã‚“"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "æˆåŠŸã—ã¾ã—ãŸ"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "ファイルåã®ãƒªã‚¹ãƒˆã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’追加(&w)"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "サブディレクトリをå†å¸°çš„ã«è¿½åŠ (&r)"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "éš ã—ディレクトリを追加(&h)"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "ディレクトリåã®ã¿è¿½åŠ "
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "権é™"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "権é™(&P)"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "アクセス権é™"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "権é™ã‚’変更(&P)"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "クラス"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "読ã¿"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "書ã"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "実行"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "特別"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "ユーザ"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "グループ"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "ãã®ä»–"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Sticky"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "所有者を変更(&O)"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "所有者"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "ユーザ:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "グループ:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Can't chmod %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Can't chown %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "æ–°ã—ã„ファイルåを入力ã—ã¦ãã ã•ã„:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "変更を元ã«æˆ»ã™(&R)"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "入力ファイルåを使ã†(&I)"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&OK"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "Use the filename that is generated by KRename instead of your changes."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "ディレクトリ"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "ディレクトリ(&D)"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "<qt>リãƒãƒ¼ãƒ ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’サブディレクトリã«æŒ¯ã‚Šåˆ†ã‘ã‚‹</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "ディレクトリã‚ãŸã‚Šã®ãƒ•ã‚¡ã‚¤ãƒ«æ•°:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "開始番å·:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "出力ディレクトリ(&D)"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - ステップ %1 of %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "ファイルを追加ã—ã¦ãã ã•ã„"
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "システムã®æ©Ÿèƒ½(&S)"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "システムã®æ©Ÿèƒ½"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "ç¾åœ¨ã®æœˆæ—¥ã‚’挿入"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "ç¾åœ¨ã®æœˆæ—¥ã‚’ yyyy-MM-dd ã®å½¢å¼ã§æŒ¿å…¥"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "ç¾åœ¨ã®å¹´ã‚’挿入"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "ç¾åœ¨ã®æœˆã‚’挿入"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "ç¾åœ¨ã®æ—¥ã‚’挿入"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "ç¾åœ¨ã®æ™‚刻を挿入"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "ç¾åœ¨ã®æ™‚é–“(hour)を挿入"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "ç¾åœ¨ã®åˆ†(minute)を挿入"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "ç¾åœ¨ã®ç§’を挿入"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "ユーザåを挿入"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "グループåを挿入"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "ファイル作æˆæ—¥ã‚’挿入"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "ファイル作æˆæ—¥ã‚’å½¢å¼ã«æ²¿ã£ã¦æŒ¿å…¥"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "ファイル変更日を挿入"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "ファイル変更日を形å¼ã«æ²¿ã£ã¦æŒ¿å…¥"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "ファイルã¸ã®æœ€çµ‚アクセス日を挿入"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "ファイルã¸ã®æœ€çµ‚アクセス日を形å¼ã«æ²¿ã£ã¦æŒ¿å…¥"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "手動ã§ãƒ•ã‚¡ã‚¤ãƒ«åを変更(&C)"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "é¸æŠžã‚’å転(&I)"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "挿入ã™ã‚‹èªžå¥ã‚’é¸ã‚“ã§ãã ã•ã„:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "プレビュー: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "日付ã¨æ™‚é–“"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "日付ã¨æ™‚é–“(&T)"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "アクセス日時を変更(&a)"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "変更日時を変更(&m)"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "時間:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "時"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "分"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "秒"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "ç¾åœ¨ã®æ—¥ä»˜ã¨æ™‚é–“ã‚’å–å¾—(&G)"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Can't change date of file %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹é …ç›®:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "ファイルã®æœ€åˆã®ç•ªå·<br>下ã®ãƒªã‚¹ãƒˆã®è¦é ˜ã§ãƒ•ã‚¡ã‚¤ãƒ«ã«ç•ªå·ãŒæŒ¯ã‚‰ã‚Œã¾ã™ã€‚"
+
+#~ msgid "Krename"
+#~ msgstr "KRename"
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..27a6eca
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,1482 @@
+# Dutch translations for krename package.
+# Copyright (C) 2003 THE krename'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the krename package.
+# Frank Schoolmeesters <frank_schoolmeesters@yahoo.com> 2003, 2004, 2005.
+# Cindy De Keyzer, proofreading this file, 2004.
+# Rinse de Vries <rinsedevries@kde.nl>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nl\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-01-11 20:12+0100\n"
+"Last-Translator: \n"
+"Language-Team: <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Bestandsnamen verwerkt in %1 seconden."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Het ongedaan-maken-script kon niet worden aangemaakt:"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Bestanden zullen gekopieerd worden naar: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Bestanden zullen verplaatst worden naar: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Symbolische koppelingen zullen aangemaakt worden in: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Invoerbestanden zullen hernoemd worden."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Ongedaan maken is niet mogelijk voor extern bestand: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 bestanden succesvol hernoemd."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 fouten voorgedaan!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Verstreken tijd: %1 seconden"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename heeft het hernoemproces voltooid."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Druk op afsluiten om te verlaten."
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr ""
+"Het uitvoer-bit kon niet aan het ongedaan-maken-script worden toegevoegd."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Commando-plugin"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Commando-plugin"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "U hebt geen commando om uit te voeren opgegeven."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Commando-plugin</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Voert een shell-commando uit op elk hernoemd bestand. Voeg %1 toe aan de "
+"commandoregelargumenten om de naam van elk hernoemd bestand te achterhalen.</"
+"qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Commando:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Uitvoeren zonder vergrendeling (niet aan te raden)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Toevoegen"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " afgesloten met fout: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Zoeken en vervangen"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Zoeken"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Vervangen door"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Reguliere expressie"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Zoeken:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Vervangen door:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Reguliere expressie"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Bewerken..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "ja"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "nee"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Voeg een te vervangen tekst toe."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "U kunt dezelfde tekst niet tweemaal vervangen."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Reguliere expressie"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr "<qt>Deze plugin sorteert bestanden na het hernoemen in submappen.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Voortgang"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Meldingen"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "KRename herstarten..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "&Verwerkte bestanden opnieuw hernoemen..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "&Onverwerkte bestanden opnieuw hernoemen..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "&Alle bestanden opnieuw hernoemen..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Meer hernoemen..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "Bestemming &openen..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Fout: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Waarschuwing: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Geannuleerd door de gebruiker."
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Annuleren..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Ongedaan maken: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Het ongedaan maken van de hernoemoperatie is voltooid."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Uiterlijk en gedrag"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "&Assistentstijl gebruiken (beginners)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "&Tabbladstijl gebruiken (ervaren gebruikers)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Het uiterlijk en gedrag van KRename instellen:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "Bestandsplugins &laden bij het starten"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Kolomgrootte automatisch &aanpassen bij voorbeeldweergave"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "Groo&tte van miniaturen:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Aantal sjabloonitems in geschiedenis:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Het uitschakelen van deze optie zal de opstarttijd van Krename doen afnemen "
+"omdat er geen KFilePlugins geladen worden."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Bestand %1 bestaat reeds."
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr ""
+"Er kunnen geen symbolische koppelingen op verschillende hostcomputers worden "
+"aangemaakt voor bestand %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Frank Schoolmeesters,Cindy De Keyzer,Rinse de Vries"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "frank_schoolmeesters@yahoo.com,,rinsedevries@kde.nl"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Nummering"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "Start&index:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Stap &naar:"
+
+#: numberdialog.cpp:64
+#, fuzzy
+msgid "&Reset counter for every directory"
+msgstr "naam van map invoegen"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "Nummers &overslaan"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "Nummer &toevoegen"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "Nummer &verwijderen"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "&Aantal sjabloonitems in geschiedenis:"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "De teller neemt toe/af aan de hand van deze waarde."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Voeg alle nummers toe die moeten overgeslagen worden tijdens het "
+"hernoemproces.<br>bijv.: als 2 het overgeslagen bestand is, zal de nummering "
+"zijn: bestand0, bestand1, bestand3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename is een hulpprogramma dat een lijst van\n"
+"bestanden kan hernoemen aan de hand van een set reguliere expressies.\n"
+"\n"
+"Indien u wilt kunt u het KRename-project ondersteunen.\n"
+"Tests, bugreparaties en aanvragen voor nieuwe functies zijn altijd welkom,\n"
+"alsook financiële ondersteuning (iedereen heeft geld nodig ;)\n"
+"Zie de documentatie voor meer details.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "bestand zal worden toegevoegd aan de lijst met te hernoemen bestanden"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "mappen recursief toevoegen"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "een sjabloon instellen"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "een sjabloon voor bestandsextensie instellen"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "een plugin activeren voor gebruik"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "bestanden kopiëren naar map"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "bestanden verplaatsen naar map"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr ""
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "hernoemen onmiddellijk starten"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "geen realtime voorbeeld maken"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Website, testen, goede ideeën en mij bezig houden met software schrijven!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Dank voor het aanmaken van RedHat 7.x-pakketten en andere hulp."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"StartIndex-bugfix en het toevoegen van de BatchRenamer class\n"
+"aan het uitstekende afbeeldingprogramma showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr ""
+"Bug opgelost die er voor zorgde dat krename geen geopende bestanden kon "
+"sluiten."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Dank voor zijn geweldige werk bij apps.kde.com en zijn hulp met het "
+"bijdragen van krename aan apps.kde.com."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Dank voor Noatun en de ID3/Ogg Tagcode gebaseerd op zijn noatun-modules."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Gaf mij een goede start om plugins te schrijven met zijn programma scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Delen van de PNG-ondersteuning zijn gekopieerd uit de KFile-plugin voor png-"
+"ondersteuning."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Heeft de Gentoo Ebuild-scripts voor Krename aangemaakt."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Enkele GCC 3.1-verbeteringen voor Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Bedankt voor het aanmaken van de Mandrake-rpm"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Italiaanse vertaling van KRename"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Leverde een gcc3.x namespace patch aan"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Leverde de nieuwe voorbeeld- en verplaats-functionaliteit aan"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Loste problemen op met het spec-bestand en leverde rpm-pakketten aan voor "
+"elke SuSE-versie die u zich bedenken kunt. Is ook de nieuwe Gentoo-"
+"onderhouder van KRename"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Leverde SuSE-rpm's aan en enkele goede suggesties"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Spaanse vertaling van KRename"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+"Leverde de RedHat-rpm aan en was een grote hulp bij het verbeteren van "
+"KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Japanse vertaling van KRename"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Franse vertaling van KRename"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Poolse vertaling van KRename"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Russische vertaling van KRename"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Bosnische vertaling van KRename"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Krename is gestart als root!</b><br>Wanneer gestart als root, kan Krename "
+"schade veroorzaken als men niet exact weet wat men doet!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Afbeeldingplugin"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "Af&beeldingplugin"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Codering-conversie-plugin"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Cod&ering-conversie-plugin"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Deze plugin maakt het mogelijk om bestandsnamen naar verschillende "
+"coderingen te converteren. Bijv. u kunt bestandsnamen met KOI8-R-codering "
+"naar UTF-8 converteren.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Codering van invoerbestanden:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Lokale codering gebruiken: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Codering van uitvoerbestanden:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Teken"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Omschrijving"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "&Bestanden"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Bes&temming"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugins"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Bestands&naam"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtra's"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profielen..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "Oude hernoemactie &ongedaan maken..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "KDE-bestandsplugins &laden"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Plugindata he&rladen"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Toevoegen..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "Ver&wijderen"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "Alles v&erwijderen"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sortering: niet gesorteerd"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sortering: oplopend"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sortering: aflopend"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Sortering: willekeurig"
+
+#: krenameimpl.cpp:361
+#, fuzzy
+msgid "Sort: Numeric"
+msgstr "Sortering: numeriek"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Voorbeeld"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "Naam &tonen"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Voeg een of meer bestanden of mappen toe"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Geselecteerde bestanden verwijderen"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Alle bestanden verwijderen"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Afbeeldingvoorbeelden aan/uitzetten."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Toont het aantal bestanden in de lijst."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Geselecteerde items omhoog verplaatsen"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Geselecteerde items omlaag verplaatsen"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Bestandsnaam tonen aan/uitzetten."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr ""
+"Geselecteerde items verplaatsen (nieuwe locatie met de muis selecteren)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pties"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "Invoerbestanden &hernoemen"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Bestanden &kopiëren naar bestemmingsmap"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Bestanden &verplaatsen naar bestemmingsmap"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "&Symbolische koppelingen aanmaken in bestemmingsmap"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "Bestaande bestanden &overschrijven"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "Hernoemen &ongedaan maken"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Ongedaan-maken-script &aanmaken"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename ongedaan-maken-scripts (*.krename)\n"
+"*|Alle bestanden (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Kopieert alle bestanden naar de bestemmingsmap en hernoemt ze."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Verplaatst alle bestanden naar de bestemmingsmap en hernoemt ze."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Origineel"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Hernoemd"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Een sjabloon toevoegen.<br>Voorbeeld: <i>foto###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Voeg een sjabloon toe voor de bestandsextensie.<br>Dit gedraagt zich als een "
+"bestandsnaamsjabloon."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Dit keuzevakje inschakelen is hetzelfde als de extensiesjabloon op $ zetten"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Dubbelklik op een item om het te wijzigen."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Hulpdialoog met alle ondersteunde KRename-tekens."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Zoek en vervang karakters of tekstdelen van de bronbestandsnaam in de "
+"bestemmingsbestandsnaam.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>U kunt \".gz\" en \".tar.gz\" gebruiken als bestandsextensie van de "
+"bestandsreservekopie. backup.tar.gz hangt af van deze instelling.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Sjabloon:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Functies..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "Extensie van invoerbestand gebr&uiken"
+
+#: krenameimpl.cpp:569
+#, fuzzy
+msgid "Find &and Replace..."
+msgstr "&Zoeken en vervangen..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Nummering..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "Deel van bestandsnaam &invoegen..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "oude bestandsnaam"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "oude bestandsnaam naar kleine letters omzetten"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "oude bestandsnaam naar hoofdletters omzetten"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "eerste letter van ieder woord in hoofdletters"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "eerste letter van bestandsnaam in hoofdletters"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "nummer (probeer ook ##, ###, ... voor eerste nullen)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "teller met aangepaste startwaarde 0 en aangepaste stapwaarde 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "een submap aanmaken"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "witruimtes aan begin en einde verwijderen"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "karakter x tot y van oude bestandsnaam"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y-karakters van oude bestandsnaam beginnend bij x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "naam van map invoegen"
+
+#: krenameimpl.cpp:590
+#, fuzzy
+msgid "insert name of parent directory"
+msgstr "naam van map invoegen"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "de naamlengte van het invoerbestand invoeren"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Ingebouwde functies:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "'$' invoegen"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "'%' invoegen"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "'&' invoegen"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "'*' invoegen"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "'/' invoegen"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "\\\\ invoegen"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "'[' invoegen"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "']' invoegen"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Speciale karakters:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Bestandsextensie begint bij:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Bestandsnaam"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Voorvoegsel:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "Achtervoeg&sel:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Naar kleine letters omzetten "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Naar hoofdletters omzetten"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Kapitaliseren"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Naam:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Originele naam gebruiken"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Aangepaste naam"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Extensie:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Originele extensie gebruiken"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Aangepaste extensie"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Nummer"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Aantal cijfers:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Zoeken en vervangen..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Nummer"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Datum"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Voegt een speciaal KRename-commando in, welke bestandsinformatie in de "
+"bestandsnaam voegt.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "Deze plugin gebr&uiken"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Conversie van %1 bestanden wordt gestart."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Geef een sjabloon op om te gebruiken voor het hernoemen van bestanden."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Geef een bestemmingsmap op."
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Geef de naam op van het ongedaan-maken-script."
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Bestanden: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "De map %1 bestaat niet. KRename zal deze voor u aanmaken."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Eerste punt"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Laatste punt"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Voltooien"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename standaardprofiel: Assistent"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename standaardprofiel: Tabbladen"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profielen"
+
+#: profiledlg.cpp:407
+#, fuzzy
+msgid "&Save As Profile..."
+msgstr "Profiel aan&maken..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "Profiel &laden"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "Profiel verwij&deren"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr ""
+
+#: profiledlg.cpp:427
+#, fuzzy
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Maak een nieuw profiel aan aan de hand van de huidige instellingen van "
+"KRename. De instellingen worden opgeslagen en kunnen op een later tijdstip "
+"worden hersteld via Profiel laden.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Laad alle instellingen die in dit profiel zijn opgeslagen.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Wilt u werkelijk het profiel laden en deze instellingen overschrijven: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Het profiel \"%1\" is niet gevonden."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Profielnaam"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Voer een naam in voor het nieuwe profiel:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Dit profiel bestaat al. Kies een andere naam."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "U kunt de standaardprofielen niet verwijderen."
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Wilt u werkelijk dit profiel verwijderen: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Hernoemen ongedaan maken"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Ongedaan-maken-script:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Ongedaan-maken-scripts zijn gewone shellscripts die ook handmatig vanaf "
+"de commandoregel kunnen worden uitgevoerd.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Dit script blijkt geen Krename ongedaan-maken-script te zijn. Uitvoeren van "
+"dit script kan gevaarlijk zijn. Doorgaan?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Het opgegeven ongedaan-maken-script kon niet worden gestart."
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Succesvol voltooid"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Mapnamen &met bestandsnamen toevoegen"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Submappen &recursief toevoegen"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "&Verborgen mappen toevoegen"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Alleen mapnamen toevoegen"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Loop recursief door de mappenstructuur en voeg ook de inhoud van alle "
+"submappen toe aan de lijst met te hernoemen bestanden."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Indien niet ingeschakeld zal KRename mappen die met een punt beginnen "
+"negeren tijdens het recursief toevoegen."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Voeg alleen de mapnamen toe aan KRename, en niet de namen van de bestanden "
+"in de map."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Deze optie zorgt er voor dat KRename ook de naam van de basismap van de "
+"geselecteerde bestanden aan diens lijst toevoegt."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Permissies"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Permissies"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Toegangsrechten"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "&Permissies wijzigen"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Klasse"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Lezen"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Schrijven"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Uitv."
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Speciaal"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Gebruiker"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Groep"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Anderen"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Vastgeplakt"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "&Eigenaar wijzigen"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Eigendom"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Gebruiker:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Groep:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Kan de permissies van %1 niet wijzigen."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Kan de eigenaar van %1 niet wijzigen."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Voer een nieuwe bestandsnaam in:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "Wijzigingen &omkeren"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "&Invoerbestandsnaam gebruiken"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&OK"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Gebruik de bestandsnaam die aangemaakt werd door KRename in plaats van uw "
+"wijzigingen."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Map-plugin"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Map-plugin"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "<qt>Deze plugin sorteert bestanden na het hernoemen in submappen.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Bestanden per map:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Startindex:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Uitvoerma&p"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Stap %1 van %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Voeg enkele bestanden toe..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Systeemfuncties"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Systeemfuncties"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Huidige datum invoegen"
+
+#: dateplugin.cpp:135
+#, fuzzy
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Huidige datum met de opmaak tekenreeks jjjj-MM-dd invoegen"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Huidige jaar invoegen"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Huidige maand in cijfers invoegen"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Huidige dag in cijfers invoegen"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Huidige tijd invoegen"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Huidige uur in cijfers invoegen"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Huidige minuut in cijfers invoegen"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Huidige seconde in cijfers invoegen"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Uw gebruikersnaam invoegen"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Uw groepsnaam invoegen"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Aanmaakdatum van bestanden invoegen"
+
+#: dateplugin.cpp:146
+#, fuzzy
+msgid "Insert the formatted file creation date"
+msgstr "Opgemaakte datum van bestandsaanmaak invoegen"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Wijzigingsdatum van bestand invoegen"
+
+#: dateplugin.cpp:148
+#, fuzzy
+msgid "Insert the formatted modification date"
+msgstr "Opgemaakte wijzigingsdatum invoegen"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Datum van laatste bestandstoegang invoegen"
+
+#: dateplugin.cpp:150
+#, fuzzy
+msgid "Insert the formatted date of the last file access"
+msgstr "Opgemaakte datum van laatste bestandstoegang invoegen"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "Bestandsnamen handmatig wij&zigen"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "Select&ie omkeren"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Selecteer de tekst die u wilt invoegen:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Voorbeeld: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Datum & tijd"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Datum && &tijd"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "&toegangsdatum && -tijd wijzigen"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Wijzigingsdatu&m && -tijd aanpassen"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Tijd:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "u"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Huidige datum & tijd &ophalen"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Kan datum van bestand %1 niet wijzigen."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Ondersteunde tekens:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "Nummer van het eerste bestand.<br>De bestanden zijn altijd op dezelfde "
+#~ "wijze genummerd zoals deze getoond worden in de resultatenlijst."
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
+
+#~ msgid "insert name of directories top level directory"
+#~ msgstr "pad van bovenliggende map invoegen"
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..07d0e85
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,1450 @@
+# translation of pl.po to
+# translation of pl.po to Polski
+# Polish translation of Krename.
+#
+# Krzysztof Pawlak <jmnemonic@gazeta.pl>, 2004, 2005.
+# Dominik Seichter <domseichter@web.de>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: pl\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-10-23 08:57+0000\n"
+"Last-Translator: Krzysztof Pawlak <jmnemonic@gazeta.pl>\n"
+"Language-Team: Polski <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Nazwy plików przetworzone po %1 sek."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Nie można utworzyć skryptu cofającego :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Pliki będą skopiowane do: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Pliki będą przeniesione do: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "ZostanÄ… utworzone linki symboliczne w: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Pliki źródłowe będą miały zmienioną nazwę."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Cofanie operacji nie jest możliwe dla pliku zdalnego: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "Zmieniono nazwę dla %1 plików."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "Wystąpiło %2 błędów!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Upłynęło: %1 sek"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename zakończył proces zmiany nazw."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Naciśnij Zamknij by wyjść!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Nie można ustawić skryptu cofania jako pliku wykonywalnego."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Wtyczka komendy"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "Wty&czka komendy"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Nie podano komendy do wykonania."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Wtyczka komendy</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Wykonuje komendę powłoki na każdym pliku po zmianie jego nazwy. Dodaj %1 "
+"do argumentów linii komend by otrzymać zmienioną nazwę pliku.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Komenda:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "Wykonaj b&ez blokowania (nie zalecane)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "Dod&aj"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr "zakończone z błędem: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Znajdź i zamień"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Znajdź"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Zamień na"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Wyrażenie regularne"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Znajdź:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Zamień na:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "Wyrażenie &regularne"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Edytuj..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "tak"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "nie"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Podaj tekst który powinien być zamieniony."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Nie możesz dwukrotnie zamienić tego samego tekstu."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Wyrażenie regularne"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Postęp"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Wiadomości"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Uruchom ponownie KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Zmień ponownie n&azwy wybranym plikom..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Zmień n&azwy nieprzetworzonym plikom..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Zmień n&azwy wszystkim plikom..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "Zmień nazwy &innym plikom..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Otwórz cel..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "BÅ‚Ä…d: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Ostrzeżenie: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Zaniechano po akcji użytkownika!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Przerywam..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Cofnij: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Cofanie operacji zmiany nazw zakończone."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "WyglÄ…d i motywy"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Użyj &asystenta (dla początkujących)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Użyj interfejsu z &kartami (użytkownik zaawansowany)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Ustaw wyglÄ…d i motywy programu KRename:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "Załaduj wtyczki do operacji na p&likach podczas uruchomienia"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Automatyczna zmiana &rozmiaru kolumn podglÄ…du"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "Rozmiar &podglÄ…du:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "Liczba szablonów historycz&nych:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Wyłączając tą opcję przyśpieszasz czas uruchomienia KRename ponieważ żadna "
+"wtyczka obsługi plików nie będzie ładowana."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Plik %1 już istnieje!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr ""
+"Nie można utworzyć linków symbolicznych na innych komputerach dla pliku %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr ""
+"Wersja polska:\n"
+"Krzysztof Pawlak"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr ""
+"jmnemonic@gazeta.pl\n"
+" "
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numerowanie"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "&Indeks startowy:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Krok &o:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "Ze&ruj licznik dla każdego katalogu"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "Przeskocz l&iczby"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "Dod&aj liczbÄ™"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Usuń liczbę"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "Numer pierwszego pliku."
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Licznik jest zwiększany/zmniejszany o tą wartość."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Podaj wszystkie liczby które powinny być ominięte podczas procesu zmiany "
+"nazw. <br>Np.: Jeśli 2 będzie do pominięcia to pliki będą ponumerowane: "
+"plik0, plik 1, plik3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Wartość początkowa licznika jest standardowo ustawiona na wartość "
+"indeksu dla każdego z katalogów. Ustawienie to odnosi się do wszystkich "
+"użytych liczników.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"Krename to program zmiany nazw partii plików \n"
+"bazujący na zestawie wyrażeń.\n"
+"\n"
+"Jeśli podoba Ci się projekt KRename możesz go wspomóc.\n"
+"Zapraszamy do testowania, zgłaszania błędów i nowych funkcji\n"
+"a także pomocy finansowej (każdy potrzebuje pieniędzy ;)\n"
+"Przeczytaj pliki pomocy by uzyskać szczegóły.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "plik będzie dodany do listy plików do zmiany nazw"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "dodaj katalog z zawartością"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "ustaw szablon"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "ustaw szablon dla rozszerzenia plików"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "włącz wtyczkę"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "kopiuj pliki do katalogu"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "przenieÅ› pliki do katalogu"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "załaduj profil podczas uruchomnienia"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "uruchom zmianÄ™ nazw"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "nie twórz podglądu w czasie rzeczywistym"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Strona WWW, testowanie, bardzo dobre idee i zajmowanie mnie programowaniem!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Podziękowania za pakiety RedHat 7.x oraz inną pomoc."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Korekta błądu dotycząca startIndex i dodanie klasy BatchRenamer\n"
+"do jego doskonałej przeglądarki obrazków 'showimg'."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Poprawka błędu powodującego, iż KRename nie zamykało otwartych plików."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Podziękowania za jego świetną pracę na rzecz apps.kde.com oraz pomoc w "
+"dystrybucji Krename przez apps.kde.com."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Podziękowania za noatun oraz kod ID3/Ogg Tag (bazującego na modułach noatun)."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr "Dał mi świetny wzór pisania wtyczek w jego aplikacji 'scribus'."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "Fragmenty obsługi PNG skopiowane z jego wtyczki 'KFile'."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Utworzył skrypty Gentoo Ebuild dla programu KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Kilka poprawek GCC 3.1 dla Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Podziękowania za utworzenie pakietów Mandrake RPM"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Tłumaczenie włoskie"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Dostarczył poprawkę gcc3.x namespace"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Dodanie nowych funkcji przenoszenia i podglÄ…du"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Poprawka na problemy z plikiem 'spec' oraz dostarczenie pakietów RPM dla "
+"każdej wersji SuSE. Nowy zarządca ds. Gentoo"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Dostarczenie pakietów RPM SuSE oraz kilku bardzo dobrych sugestii"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Dodanie tłumaczenia hiszpańskiego"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+"Dostarczenie pakietów RedHat RPM oraz znacznej pomocy w ulepszaniu KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Przetłumaczenie KRename na język japoński"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Przetłumaczenie KRename na język francuski"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Przetłumaczenie KRename na język polski"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Przetłumaczenie KRename na język rosyjski"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Przetłumaczenie KRename na język bośniacki"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename zostało uruchomione przez uzytkownika ROOT!</b><br>Startując "
+"program w ten sposób możesz zniszczyć swój system jeśli nie jesteś "
+"całkowicie pewien co robisz!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Wtyczka do obrazków"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "W&tyczka do obrazków"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Wtyczka stron kodowych"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "&Wtyczka stron kodowych"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Wtyczka ta służy do zmiany stron kodowych nazw plików, np. z KOI8-R na "
+"UTF-8.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Strona kodowa plików źródłowych:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Użyj lokalnej strony kodowej: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Strona kodowa plików wyjściowych:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Szablon"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Opis"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "Pl&iki"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "C&el"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "W&tyczki"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "&Nazwa pliku"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "Doda&tki"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profile..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Cofnij dawnÄ… akcjÄ™ zmiany nazw..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "Załaduj wtyczki do operacji na p&likach"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Wczytaj &ponownie dane wtyczki"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "Dod&aj..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "Us&uń"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "U&suń wszystko"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sortowanie: brak"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sortowanie: rosnÄ…co"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sortowanie: malejÄ…co"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Sortowanie: losowo"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Sortowanie: numerycznie"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&PodglÄ…d"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "Pokaż nazwy"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Dodaj jeden lub więcej plików lub katalogów"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Usuń oznaczone pliki"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Usuń wszystkie pliki"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Włącz/wyłącz podgląd obrazków."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Wyświetla na liście liczbę plików."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Przesuń wyżej zaznaczone elementy"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Przesuń niżej zaznaczone elementy"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Włącza/wyłącza wyświetlanie nazwy pliku."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "PrzenieÅ› zaznaczone elementy (zaznacz myszkÄ… miejsce docelowe)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pcje"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "Zmień nazwy plików ź&ródłowych"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Kopiu&j pliki do katalogu docelowego"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "&PrzenieÅ› pliki do katalogu docelowego"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Utwórz &linki symboliczne w katalogu docelowym"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "&ZastÄ…p istniejÄ…ce pliki"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Cofnij zmianÄ™ nazw"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Utwórz skrypt &cofania"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Kopiuje wszystkie pliki do katalogu docelowego i zmienia ich nazwÄ™."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Przenosi wszystkie pliki do katalogu docelowego i zmienia ich nazwÄ™."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Źródło"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Nazwane"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr ""
+"Podaj szablon według którego zostanie zmianiona nazwa.<br>Przykład: "
+"<i>obrazek###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Podaj szablon dla rozszerzenia plików.<br>Zachowuje się tak jak szablon do "
+"definiowania nazw plików."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Ustawianie tego znacznika jest tym samym co nastawianie szablonu "
+"rozszerzenia na $"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Kliknij dwukrotnie na elemencie by go zmienić."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr ""
+"Okno dialogowe pomocy z wszystkimi szablonami obsługiwanymi przez KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr "<qt>Znajdź i zamień znaki lub fragmenty wyjściowych nazw plików.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>W zależności od ustawienia możliwe jest wykorzystanie następujących "
+"rozszerzeń plików zapasowych: \".gz\", \".tar.gz\".</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Szablon:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Funkcje..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&Użyj rozszerzenia pliku źródłowego"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Zn&ajdź i zamień..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numerowanie..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "Wstaw część nazwy pl&iku..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "stara nazwa pliku"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "stara nazwa pliku małymi literami"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "stara nazwa pliku WIELKIMI literami"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "WIELKA pierwsza litera każdego słowa"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "WIELKA pierwsza litera nazwy pliku"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "liczba (spróbuj także ##, ###, ... w przypadku zer nieznaczących)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "licznik z wartością początkową \"0\" i krokiem \"1\""
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "utwórz podkatalog"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "usuń białe spacje"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "znak x do y starej nazwy pliku"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y znaków starej nazwy pliku począwszy od x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "wpisz nazwÄ™ katalogu"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "wstaw nazwę katalogu nadrzędnego"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "wstaw długość źródłowej nazwy pliku"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Funkcje wbudowane:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Wstaw '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Wstaw '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Wstaw '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Wstaw '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Wstaw '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Wstaw '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Wstaw '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Wstaw ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Znaki specjalne:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Rozszerzenie zaczyna siÄ™ od:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Nazwa pliku"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefiks:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Sufiks:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Zmień na małe litery"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Zmień na WIELKIE litery"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Kapitaliki"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Nazwa:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Użyj nazwy orginalnej"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Inna nazwa"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "Rozsz&erzenie:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Użyj rozszerzenia oryginalnego"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Inne rozszerzenie"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Numer"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Liczba cyfr:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Znajdź i zamień..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Liczba"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Data"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Podaj komendę specjalną programu KRename która wprowadza informacje o "
+"pliku do jego nazwy.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Użyj tej wtyczki"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Rozpoczęcie konwersji %1 plików."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Wybierz szablon do wykorzystania podczas zmiany nazw."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Proszę podać katalog docelowy!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Proszę podać nazwę skryptu cofania!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Pliki: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Katalog %1 nie istnieje więc KRename go utworzy."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Pierwsza kropka"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Ostatnia kropka"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Zakończ"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Profil domyślny"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Profil z kartami"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profile"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "Zapi&sz jako profil..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "&Otwórz profil"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Usuń profil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Ustaw jako profil domyślny"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Zapisuje nowy profil na podstawie ustawień bieżących. Mogą być one "
+"później przywrócone za pomocą przycisku Otwórz profil.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Otwiera wszystkie ustawienia zapisane w danym profilu.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Czy chcesz wczytać profil o nazwie \"%1\" i zastąpić bieżące ustawienia ?"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Profil \"%1\" nie istnieje."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Nazwa profilu"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Proszę podać nazwę nowego profilu:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Profil o danej nazwie już istnieje. Proszę podać inną nazwę."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Nie można usuwać profili domyślnych!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Czy na pewno usunąć profil: %1?"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Cofnij zmianÄ™ nazw"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Cofnij skrypt:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Skrypty cofania to normalne skrypty powłoki które mogą być wykonane z "
+"linii komend.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Wygląda na to, iż ten skrypt nie jest skryptem cofania. Jego wykonanie może "
+"być niebezpieczne. Kontynuować ?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Nie można uruchomić danego skryptu cofania!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Zakończone sukcesem"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Dodaj nazwy katalogó&w z nazwami plików"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Dodaj &rekursywnie podkatalogi"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Dodaj katalogi &ukryte"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Dodaj tylko nazwy katalogów"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Rekursywnie przejdź przez dany katalog i dodaj zawartość wszystkich "
+"podkatalogów do listy plików których nazwa będzie zmieniana."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Jeśli nie zaznaczone, to podczas dodawania rekursywnego Krename będzie "
+"ignorować nazwy katalogów zaczynające się od kropek."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Dodaj wyłącznie nazwy podkatalogów pomijając nazwy plików znajdujących się w "
+"danym katalogu."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Ta opcja powoduje dodawanie nazwy katalogu bazowego do nazw plików "
+"wybieranych do listy."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Uprawnienia"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "U&prawnienia"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Uprawnienia dostępu"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Zmień u&prawnienia"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Klasa"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Odczyt"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Zapis"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Wykonanie"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Specjalny"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Użytkownik"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Grupa"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Inni"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Kleistość"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Zmień &właściciela"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Własność"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Użytkownik:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Grupa:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Nie można zmienić uprawnień dla %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Nie można zmienić właściciela dla %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Proszę podać nową nazwę pliku:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "Odw&róć zmiany"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Użyj &nazwy źródłowej"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&OK"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "Użyj nazwy wygenerowanej przez KRename zamiast zmian własnych."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Wtyczka katalogowa"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Wtyczka katalogowa"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "<qt>Ta wtyczka sortuje pliki po zmianie nazw w podkatalogach.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Plików na katalog:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Indeks poczÄ…tkowy:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Katalog &docelowy"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Krok %1 z %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Proszę dodać pliki..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "Funkcje &systemowe"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Funkcje systemowe"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Wstaw obecnÄ… datÄ™"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Wstaw obecną datę według szablonu rrrr-MM-dd"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Wstaw bieżący rok"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Wstaw numer bieżącego miesiąca"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Wstaw bieżący dzień jako numer"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Wstaw obecnÄ… godzinÄ™"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Wstaw obecnÄ… godzinÄ™ jako liczbÄ™"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Wstaw obecnÄ… minutÄ™"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Wstaw obecnÄ… sekundÄ™"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Wstaw nazwę bieżącego użytkownika"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Wstaw nazwę grupy bieżącego użytkownika"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Wstaw datÄ™ utworzenia danego pliku"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Wstaw formatowanÄ… datÄ™ utworzenia"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Wstaw datÄ™ ostatniej modyfikacji"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Wstaw formatowanÄ… datÄ™ ostatniej modyfikacji"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Wstaw datę ostatniego dostępu do pliku"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Wstaw formatowaną datę ostatniego dostępu do pliku"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "RÄ™&czna zmiana nazw"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Inwersja zaznaczenia"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Proszę zaznaczyć tekst do wstawienia:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "PodglÄ…d: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Data i czas"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Da&ta i czas"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Zmień cz&as i datę dostępu"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Zmień cz&as i datę modyfikacji"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Czas:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "g"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Pobierz bieżącą datę i &godzinę"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Nie można zmienić daty pliku %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Obsługiwane szablony:"
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..5a43a5d
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,1478 @@
+# translation of pt_BR.po to
+# translation of de.po to Portugues
+# Brazilian translation of Krename.
+# Paulo Zambon e Michele Fasoli <pzambon@astornet.com.br> 2005.
+# Dominik Seichter <domseichter@web.de>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-07-01 17:45+0200\n"
+"Last-Translator: Dominik Seichter <domseichter@web.de>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Nome de arquivos processados depois de %1 segundos."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Não posso criar script para desfazer :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Arquivos serão copiados para: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Arquivos serão movidos para: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Link simbólico será criado em: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Arquivos adicionados serão renomeados."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Não foi possível desfazer para arquivo remoto: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 arquivos renomeados com sucesso."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 erros ocorridos!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Tempo decorrido: %1 segundos"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename terminou o processo de renomeamento."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Pressione fechar para sair!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Não posso executar bit sobre o script desfazer."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Plugin comando"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Plugin Comando"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Você não especificou um comando para executar."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Plugin Comando</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Execute um comando shell sobre todo arquivo depois que ele foi "
+"renomeado. Adicione %1 para os argumentos da linha de comando para conseguir "
+"o nome de arquivo e renomeá-lo.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Comando:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Executar sem bloquear (não recomendado)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Adicionar"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " terminado com erro: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Procurar e Substituir"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Procurar"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Substituir com"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Expressão Regular"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Procurar:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Substituir com:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Expressão regular"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Editar..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "sim"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "não"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Adicionar um texto que deva ser substituído."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Você não pode substituir o mesmo texto duas vezes."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Expressão regular"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Este plugin de classificação dos arquivos serão renomeados nos "
+"subdiretórios.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Progresso"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Mensagens"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Reiniciar KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Renomear arquivos processados &agora..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Renomear arquivos não processados &agora..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Renomear todos os arquivos &agora..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Renomear mais..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Abrir destino..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Erro: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Aviso: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Usuário, pressione cancelar!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Abortando..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Desfazer: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Desfazendo o renomeamento que já foi completado."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Aparência e Comportamento"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Use o &Assistente (usuários iniciantes)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Use o &Formulário (usuários avançados)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Configure a aparência e o comportamento da janela do Krename:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "Carregar arquivo do plugin no iniciar"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Auto &ajuste colunas na previsão"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "Tamanho do &Thumbnail:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Número do histórico do modelo dos itens:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Desativando a opção você diminui o tempo de início do KRename, porque os "
+"plugins não são carregados."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Arquivo %1 já existe!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "Não posso criar links sobre diferentes usuários para arquivo %1."
+
+#: _translatorinfo.cpp:1
+#, fuzzy
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Paulo Zambon e Michele Fasoli\n"
+
+#: _translatorinfo.cpp:3
+#, fuzzy
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "Paulo Zambon e Michele Fasoli\n"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numerando"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "Iniciar &index:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Ir &para:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "&Reinicie contador para todo diretório"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "P&ular números"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Adicionar número"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Remover número"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "&Número do histórico do modelo dos itens:"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "O contador é crescente/decrescente para este valor."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Adicione todos os números que devem ser pulados para o Krename durante o "
+"processo de renomear.<br>.E.g.: Se o aquivo 2 foi pulado serão numerados "
+"como: aquivo0, arquivo1, arquivo3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>O contador está ativado para iniciar a indexação de cada diretório. Esta "
+"configuração aplica-se para todos os contadores usados.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename é um renomeador de arquivos em lote que pode renomear uma\n"
+"lista de arquivos baseada em uma coleção de expressões.\n"
+"\n"
+"Se você gosta do KRename você pode querer seu suporte.\n"
+"Testes, problemas resolvidos e característica solicitadas são bem-vindos\n"
+"como suporte financeiro (todos precisamos de dinheiro ;)\n"
+"Veja arquivo de Ajuda para detalhes.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "arquivo será adicionado para a lista de arquivos para renomeamento"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "adicionar diretório recursivamente"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "coloque um modelo"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "colocar um modelo para a extensão do arquivo"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "habilitar um plugin para uso"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "copiar arquivos para diretório"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "mover arquivos para diretório"
+
+#: main.cpp:69
+#, fuzzy
+msgid "load the profile named [profile] on startup"
+msgstr "&Usar como perfil padrão ao iniciar"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "iniciar renomeamento imediatamente"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "não criar previsão de tempo real"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Website, testando, muitas boas idéias e mantendo-me no código!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Obrigado por criar os pacotes do RedHat 7.x muitas outras ajudas."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Fixado um problema com início do index e adicionado o BatchRenamer de "
+"classes\n"
+"para ele ter uma excelente imagem no visualisador showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr ""
+"Fixado um problema que causou o não fechamento dos arquivos abertos do "
+"Krename."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Obrigado por este trabalho gratificante no apps.kde.com e ajuda com a "
+"contribuição do KRename para apps.kde.com."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Obrigado para noatun e o ID3/Ogg Tag código está baseado nestes módulos do "
+"noatun."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Dê-me um bom início dentro do escritor de plugins com sua aplicação do "
+"scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"Parte do suporte do PNG são copiados para seu KFile plugin para suporte do "
+"png."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Criado o Gentoo Ebuild scripts para Krename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Alguns GCC 3.1 fixados pelo Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Obrigado por criar o Mandrake RPM"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Tradução italiana"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Desde que um gcc3.x namespace patch"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Desde que um novo visualisar mova características"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Fixado problema com o arquivo spec e contribuido rpms para versão SuSE você "
+"pode imaginar e também há o novo mantenedor Gentoo para KRename"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Desde que SuSE RPMs e muitas boas sugestões"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Contribuição da tradução Espanhola"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Desde que um RPM RedHat era de grande ajuda na melhoria do KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Traduzido KRename para Japonês"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Traduzido KRename para Francês"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Traduzido Krename para o Polonês"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Traduzido KRename para Russo"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Traduzido KRename para Bosnio"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename foi iniciado como root!</b><br>Quando iniciado como root, KRename "
+"pode danificar seu sistema se você não souber exatamente o que está fazendo!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Figura Plugin"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "F&igura Plugin"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Codificando plugin de conversão"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "&Codificando plugin de conversão"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Este plugin é capaz de converter nome de arquivos entre diferentes nomes "
+"de arquivos do KOI8-R para UTF-8Por exemplo, você pode converter nome de "
+"arquivos do KOI8-R para UTF-8.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Codificando o arquivo de entrada:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Local de uso do codificador: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Codificando o arquivo de saída:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Sinal"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Descrição"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "A&rquivos"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Des&tino"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugins"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Arquivo&nome"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtras"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Perfil..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Desfazer última ação de renomeamento..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "Carregar arquivos de plugins do KDE"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Recarregar plugins de dados"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Adicionar..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "Re&mover"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "R&emover tudo"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Classificação: Desclassificação"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Classificação: Ascendente"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Classificação: Descendente"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Classificação: Aleatória"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Classificação: Numérica"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Prever"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "Exibir nome"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Adicionar um ou mais arquivos ou diretórios"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Remover arquivos selecionados"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Remover todos os arquivos"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Habilitar/Desabilitar exibição de figuras."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Exibir o número dos arquivos na lista."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Mover itens selecionados para cima"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Mover itens selecionados para baixo"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Habilitar/Desabilitar exibição de nome de arquivos."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "Mover itens selecionados (selecione o novo local com o mouse)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "O&pções"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "&Renomear arquivos de dados"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Cop&iar arquivos para o diretório de destino"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "&Mover arquivos para o diretório de destino"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Criar &link simbólico no diretório de destino"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "&Sobrepor arquivos existentes"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Desfazer Renomeamento"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "&Criar um script para desfazer"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename desfazer scripts (*.krename)\n"
+"*|Todos os Arquivos (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Copiar todos os arquivos para o diretório de destino e renomeá-los."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Mover todos os arquivos para o diretório de destino e renomeá-los."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Origem"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Renomeado"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Adicionar um modelo.<br>Exemplo: <i>figura###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Adicionar um modelo para a extensão do arquivo.<br>Portar-se como o modelo "
+"de nome de arquivo."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr ""
+"Checar este checkbox é o mesmo que configurar a extensão do modelo para $"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Duplo clique sobre o item para modificá-lo."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Diálogo de ajuda com todos os sinais suportados pelo KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Procurar e substituir caracters ou parte da série das fontes de nome de "
+"arquivos.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Você pode usar \".gz\" and \".tar.gz\" como arquivo de extensão ou "
+"arquivos de backup.tar.gz dependendo deste quadro.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Modelo:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Funções..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&Use extensão do arquivo de entrada"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Procurar &e Substituir..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numerar...."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Inserir parte do nome de arquivo..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "nome de arquivo velho"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "nome de arquivo velho convertido para caixa baixa"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "Nome de arquivo velho convertido para caixa alta"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "primeira letra de cada palavra com caixa alta"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "primeira letra do nome de arquivo com caixa alta"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "número (tente também ##, ###, ... para avançar zeros"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "tente iniciar com valor padrão 0 e vá aumentando padrão para 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "criar um subdiretório"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "tirar espaços em brancos avançando e arrastando"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "caracter x para y do velho nome de arquivo"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y caracter ou velho arquivo de nome iniciando em x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "inserir nome do diretório"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "inserir nome do diretório padrão"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "inserir o tamanho do nome de arquivo introduzido"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Incorporar Funções:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Inserir '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Inserir '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Inserir '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Inserir '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Inserir '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Inserir '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Inserir'['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Inserir ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Caracteres especiais:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Arquivo de extensão inicia em:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Nome de arquivo"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefixo:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Sufixo:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Converte para caixa baixa "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Converte para caixa alta"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Capitalizar"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Nome:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Usar nome original"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Nome padrão"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Extensão:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Usar extensão original"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Extensão padrão"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Número"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Número de dígitos:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Procurar e Substituir..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Número"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Data"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Inserir um comando especial do KRename no qual insere informações do "
+"arquivo dentro donome de arquivo.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Use este plugin"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Iniciando conversão de %1 arquivos."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Especifique um modelo para usar para renomear os arquivos."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Por favor, dê um diretório de destino!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Por favor, dê um nome para o script de desfazer!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Arquivos: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "O diretório %1 não existe. KRename o criará para você."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Primeiro Ponto"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Último Ponto"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&Finalizar"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Assistente de perfil padrão"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Formulário de perfil padrão"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Perfis"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Salvar como perfis..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "&Ler perfil"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Apagar perfil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Usar como perfil padrão ao iniciar"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Salvar o modelo corrente do KRename como um novo perfil. Os modelos são "
+"salvos e podem ser restaurados com o carregamento posterior.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Carregar todos os cenários reservados para este perfil.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Você realmente quer carregar o perfil e sobrepô-lo ao cenário corrente: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "O perfil \"%1\" não podia ser encontrado."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Nome do Perfil"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Por favor, entre com um nome para o novo perfil:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Este perfil já existe. Por favor, escolha outro nome."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Você não pode apagar perfis padrões!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Você realmente quer deletar o perfil: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Desfazer renomeamento"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Desfazer script:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Scripts de desfazer são normais shell scripts no qual podem também ser "
+"executados manualmente da linha de comando.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Este script não parece ser um script de desfazer do Krename. Executar este "
+"script pode ser perigoso. Quer continuar?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Desabilitado iniciar do script desfazer!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Terminado com sucesso"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Adicionar nome do diretório &com nome de arquivos"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Adicionar sudiretórios &recursivamente"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Adicionar diretórios &ocultos"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Adicionar nomes de diretórios somente"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Caminhar recursivamente através de três diretórios e adicionar também o "
+"conteúdo para todos os diretórios para lista dos arquivos para renomear."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Se não checado, KRename ignorará diretórios iniciados com um ponto durante "
+"adição de recurso."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Adicionar somente o nome do diretório e não o nome dos arquivos do diretório "
+"para o KRename."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Esta opção adiciona o nome da base do diretório dos arquivos selecionados "
+"nesta lista."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Permissões"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Permissões"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Permissão de acesso"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Troca &Permissões"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Classificar"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Ler"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Escrever"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Executar"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Especial"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Usuário"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Grupo"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Outros"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Sticky"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Troca &Proprietário"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Propriedade"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Usuário:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Grupo:"
+
+#: permission.cpp:248
+#, fuzzy
+msgid "Can't chmod %1."
+msgstr "Sem permissão (chown) %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Sem permissão (chown) %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Por favor, insira um novo nome de arquivo:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "&Reverter Trocas"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Use &inserir nome de arquivo"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Ok"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Use o nome de arquivo que foi gerado pelo Krename ao invés de suas trocas."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Dir Plugin"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Dir Plugin"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Este plugin de classificação dos arquivos serão renomeados nos "
+"subdiretórios.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Arquivos por diretório:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Iniciar index:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "&Diretório de saída"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Passo %1 de %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Por favor, adicione mais arquivos..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Sistemas de Funções"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Sistemas de Funções"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Insira a data atual"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Insira a data atual usando o formato yyyy-MM-dd"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Insira o ano atual"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Insira o atual mês como número"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Insira o atual dia como número"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Insira a hora atual"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Insira a hora atual como número"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Insira o minuto atual como número"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Insira o segundo atual como número"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Insira seu nome de usuário"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Insira seu nome de grupo"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Insira os arquivos de criação de data"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Insira o arquivo formatado de criação de data"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Insira os arquivos de data modificados"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Insira a modificação formatada de data"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Insira a data do último arquivo acessado"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Insira a data formatada do último arquivo acessado"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Trocar nome de arquivo manualmente"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Inverter seleção"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Por favor, slecione o texto que você quer inserir:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Visualizar: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Data & Hora"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Data && &Hora"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Trocar &acesso data && hora"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Trocar &modificação data && hora"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Hora:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "h"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "&Pegar data corrente && hora"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Não posso trocar a data do arquivo %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Sinais suportados:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "Número do primeiro arquivo.<br>Os arquivos são sempre numerados do mesmo "
+#~ "jeito como são mostrados na lista de resultado."
+
+#~ msgid ""
+#~ "_: EMAIL OF TRANSLATORS\n"
+#~ "_: pzambon@astornet.com.br\n"
+#~ msgstr "pzambon@astornet.com.br\n"
+
+#~ msgid "Sem permissão chmod %1."
+#~ msgstr "Não posso (chmod) %1."
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..09748f4
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,1448 @@
+# translation of ru.po to РуÑÑкий
+# Russian translation of KRename.
+# Ilya Ivkov <ilya-ivkov@yandex.ru>, 2004.
+# Nick Shaforostoff <shafff@ukr.net>, 2004-2005.
+# Alexey Kouznetsov <kouznetsov@phtf.stu.neva.ru>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-04-22 23:26+0400\n"
+"Last-Translator: Alexey Kouznetsov <kouznetsov@phtf.stu.neva.ru>\n"
+"Language-Team: РуÑÑкий <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Имена файлов будут обработаны через %1 Ñекунд."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Ðе удалоÑÑŒ Ñоздать Ñценарий отката :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Файлы будут Ñкопированы в: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Файлы будут перемещены в: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "СимволичеÑкие ÑÑылки будут Ñозданы в: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "ИÑходные файлы будут переименованы."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Откат невозможен Ð´Ð»Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ файла: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "Переименовано %1 файлов."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "Произошло %2 ошибок!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Затраченное времÑ: %1 Ñек"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename завершил переименование."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Ðажмите \"Закрыть\" Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Ðевозможно уÑтановить бит Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð° Ñценарий отката."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Команда"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Команда"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Ð’Ñ‹ не определили команду Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Команда</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>ВыполнÑет команду оболочки Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ файла поÑле переименованиÑ. "
+"Добавьте %1 к аргументам командной Ñтроки Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ "
+"переименованного файла.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Команда:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&ВыполнÑÑ‚ÑŒ без Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (не рекомендуетÑÑ)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Добавить"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " - выход Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "ПоиÑк и замена"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Ðайти"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Заменить на"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "РегулÑрное выражение"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Ðайти:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Заменить на:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&РегулÑрное выражение"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "Пр&авка..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "да"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "нет"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Введите текÑÑ‚ Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÐ½Ñ‹."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Ð’Ñ‹ не можете заменить тот же текÑÑ‚ дважды."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "РегулÑрное выражение"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Этот модуль Ñортирует файлы в подкаталогах поÑле переименованиÑ.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Ход выполнениÑ"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "СообщениÑ"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "ПерезапуÑтить KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Переименовать обработанные файлы &Ñнова..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Переименовать необработанные файлы &Ñнова..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Переименовать вÑе файлы &Ñнова..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Ðовое переименование..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Открыть папку..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Ошибка: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Предупреждение: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Отменено пользователем!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "ОÑтанов..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Откат: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Откат операции Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "ИнтерфейÑ"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "&МаÑтера (Ð´Ð»Ñ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‰Ð¸Ñ…)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "&Окно параметров Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°Ð¼Ð¸"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "ÐаÑтройка интерфейÑа KRename:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "&Загружать файловые модули при запуÑке"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "ÐвтоматичеÑки &изменÑÑ‚ÑŒ размер Ñтолбцов в предварительном проÑмотре"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "Размер &миниатюры:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&КоличеÑтво Ñлементов в иÑтории шаблонов:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Отключение Ñтого параметра увеличивает Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ KRename, Ñ‚.к. "
+"файловые модули ещё не загружены."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Файл %1 уже ÑущеÑтвует."
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "Ðевозможно Ñоздать ÑимволичеÑкие ÑÑылки на разных узлах Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Ð˜Ð»ÑŒÑ Ð˜Ð²ÐºÐ¾Ð²,Ðиколай ШафороÑтов"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "ilya-ivkov@yandex.ru,shafff@ukr.net"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&ÐумерациÑ"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "&Ðачать Ñ:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "&Шаг:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "В каждом &каталоге начинать нумерацию заново"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "&ПропуÑтить номера"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Добавить номер"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Удалить номер"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "&КоличеÑтво Ñлементов в иÑтории шаблонов:"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Счётчик увеличиваетÑÑ/уменьшаетÑÑ Ð½Ð° Ñто значение."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Добавьте вÑе номера, которые KRename Ñледует пропуÑтить во Ð²Ñ€ÐµÐ¼Ñ "
+"переименованиÑ.<br>Пример: ЕÑли 2 пропущен, файлы будут пронумерованы так: "
+"файл0, файл1, файл3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr "<qt> Ð’Ñе нумерации будут начинатьÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ каталога.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename - групповой переименовщик файлов, ÑпоÑобный переименовать\n"
+"ÑпиÑок файлов, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð½Ð°Ð±Ð¾Ñ€ выражений.\n"
+"\n"
+"ЕÑли вам нравитÑÑ KRename, возможно, вы захотите поддержать его.\n"
+"ТеÑтирование, иÑправление ошибок и Ð¿Ð¾Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÑ‚ÑтвуютÑÑ,\n"
+"как и финанÑÐ¾Ð²Ð°Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒ (вÑем нужны деньги ;)\n"
+"Смотрите файлы помощи Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "файл будет добавлен в ÑпиÑок Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "добавить каталог рекурÑивно"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "уÑтановить шаблон"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "уÑтановить шаблон Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "включить модуль"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "копировать файлы в каталог"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "перемеÑтить файлы в каталог"
+
+#: main.cpp:69
+#, fuzzy
+msgid "load the profile named [profile] on startup"
+msgstr "&ИÑпользовать по умолчанию"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "начать переименование"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "предпрооÑмотр не в реальном времени"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Веб-Ñайт, теÑтирование, очень хорошие идеи и поддержка в напиÑании кода!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr ""
+"БлагодарноÑÑ‚ÑŒ за Ñоздание пакетов RedHat 7.x и некоторую другую помощь."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"ИÑправил ошибку Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¼ индекÑом и добавил клаÑÑ BatchRenamer\n"
+"в Ñвой проÑмотрщик изображений showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "ИÑправил ошибку, из-за которой KRename не закрывал открытые файлы."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"БлагодарноÑÑ‚ÑŒ за его великую работу на apps.kde.com и за помощь Ñ "
+"ÑодейÑтвием krename на apps.kde.com."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"БлагодарноÑÑ‚ÑŒ за код noatun и Ñводок ID3/Ogg, базирующийÑÑ Ð½Ð° его модулÑÑ… "
+"noatun."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Дал мне хорошее начало в напиÑании модулей Ñ Ð·Ð°Ð¼ÐµÑ‚Ð¾Ðº Ñвоего приложениÑ."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "ЧаÑти поддержки PNG Ñкопированы Ñ ÐµÐ³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ png KFile."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Создал Ñкрипты Gentoo Ebuild Ð´Ð»Ñ Krename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Ðекоторые иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ GCC 3.1 Ð´Ð»Ñ Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "БлагодарноÑÑ‚ÑŒ за Ñоздание RPM Ð´Ð»Ñ Mandrake"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "ИтальÑнÑкий перевод"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "ПредоÑтавил заплатку проÑтранÑтва имён gcc3.x"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "ПредоÑтавил новые возможноÑти предоÑмотра и перемещениÑ"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"ИÑправил проблемы Ñо SPEC-файлом и ÑодейÑтвовал Ñ rpm Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ верÑии "
+"SuSE, также ÑвлÑетÑÑ Ð½Ð¾Ð²Ñ‹Ð¼ Ñборщиком Gentoo Ð´Ð»Ñ KRename"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "ПредоÑтавил пакеты RPM Ð´Ð»Ñ SuSE и очень хорошие предложениÑ"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "ИÑпанÑкий перевод"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "ПредоÑтавил RPM Ð´Ð»Ñ RedHat и оказал большую помощь в улучшении KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Перевёл KRename на ÑпонÑкий"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Перевёл KRename на французкий"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Перевёл KRename на польÑкий"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Перевёл KRename на руÑÑкий"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Перевёл KRename на боÑнийÑкий"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Krename был запущен от root!</b><br>При запуÑке от root, Krename может "
+"повредить вашу ÑиÑтему, еÑли вы точно не знаете, что делаете!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Изображение"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "&Изображение"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Кодировка"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "&Кодировка"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Этот модуль преобразовывает имена файлов между разными кодировками. "
+"Ðапример, вы можете преобразовать имена файлов из KOI8-R в UTF-8.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Кодировка иÑходных файлов:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "И&Ñпользовать локальную кодировку: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Кодировка получаемых файлов:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Знак"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "ОпиÑание"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "&Файлы"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "Ð&азначение"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "&Модули"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "&Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "&Дополнительно"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Профили..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Откат Ñтарого переименованиÑ..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&Загрузить файловые модули KDE"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "&Обновить данные модулÑ"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Добавить..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "&Удалить"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "Удалить &вÑе"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Сортировка: без Ñортировки"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Сортировка: по возраÑтанию"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Сортировка: по убыванию"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Сортировка: ÑлучайнаÑ"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Сортировка: чиÑловаÑ"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&ПроÑмотр"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Отображать имÑ"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Добавить один или более файлов или каталогов"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Удалить выделенные файлы"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Удалить вÑе файлы"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Включить/выключить предварительный проÑмотр изображений."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Показывает количеÑтво файлов в ÑпиÑке."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "ПеремеÑтить выделенные Ñлементы вверх"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "ПеремеÑтить выделенные Ñлементы вниз"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Включить/выключить отображение имени файла."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "ПеремеÑтить выделенные Ñлементы (выбрать новое размещение мышью)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "&Параметры"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "П&ереименовать иÑходные файлы"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "&Копировать файлы в каталог назначениÑ"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Пе&ремеÑтить файлы в каталог назначениÑ"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Создать Ñимвольные ÑÑÑ‹&лки в каталоге назначениÑ"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "Пере&запиÑать ÑущеÑтвующие файлы"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Откат переименованиÑ"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Создат&ÑŒ Ñценарий отката"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|Сценарии отката KRename (*.krename)\n"
+"*|Ð’Ñе файлы (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Скопировать вÑе файлы в каталог Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ переименовать их."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "ПеремеÑтить вÑе файлы в каталог Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ переименовать их."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "ИÑходное"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Переименованное"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Добавить шаблон.<br>Пример: <i>изображение###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Добавить шаблон Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°.<br>Работает как шаблон имени файла."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "То же, что уÑтановка шаблона раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð² $"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Двойной щелчок по Ñлементу Ð´Ð»Ñ ÐµÐ³Ð¾ изменениÑ."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Диалог помощи Ñо вÑеми знаками, поддерживаемыми KRename."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Ðайти и заменить Ñимволы или чаÑÑ‚ÑŒ Ñтроки иÑходного имени файла в новом "
+"имени.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Ð’Ñ‹ можете иÑпользовать и \".gz\", и \".tar.gz\" как раÑширение файла "
+"резервный.tar.gz Это завиÑит от Ñтой уÑтановки.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Шаблон:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "Ф&ункции..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&ИÑпользовать раÑширение иÑходного файла"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Ð&айти и заменить..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "Ðум&ерациÑ..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "&Ð’Ñтавить чаÑÑ‚ÑŒ имени файла..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "Ñтарое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "Ñтарое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° в нижнем региÑтре"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "Ñтарое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° в верхнем региÑтре"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "Ð¿ÐµÑ€Ð²Ð°Ñ Ð±ÑƒÐºÐ²Ð° каждого Ñлова в верхнем региÑтре"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "Ð¿ÐµÑ€Ð²Ð°Ñ Ð±ÑƒÐºÐ²Ð° каждого имени файла в верхнем региÑтре"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "номер (попробуйте также ##, ###, ... Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡Ð°Ñ‰Ð¸Ñ… нулей)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "Ñчётчик Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¼ значением 0 и шагом 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "Ñоздать подкаталог"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "удалить пробелы в начале и конце"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "Ñимволы Ñ x по y Ñтарого имени файла"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "\"y\" Ñимволов Ñтарого имени файла Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "вÑтавить Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°"
+
+#: krenameimpl.cpp:590
+#, fuzzy
+msgid "insert name of parent directory"
+msgstr "вÑтавить Ð¸Ð¼Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкого каталога"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "вÑтавить длину иÑходных имён файлов"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Ð’Ñтроенные функции:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Ð’Ñтавить '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Ð’Ñтавить '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Ð’Ñтавить '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Ð’Ñтавить '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Ð’Ñтавить '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Ð’Ñтавить '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Ð’Ñтавить '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Ð’Ñтавить ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Специальные Ñимволы:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "РаÑширение файла начинаетÑÑ Ñ:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&ПрефикÑ:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&СуффикÑ:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Преобразовать в нижний региÑÑ‚Ñ€ "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Преобразовать в верхний региÑÑ‚Ñ€"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð±ÑƒÐºÐ²Ð° каждого Ñлова в верхнем региÑтре"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&ИмÑ:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "ИÑпользовать иÑходное имÑ"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Другое имÑ"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&РаÑширение:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "ИÑпользовать иÑходное раÑширение"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Другое раÑширение"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "Ð&омер"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&КоличеÑтво цифр:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "Ð&айти и заменить..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Ðомер"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Дата"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Ð’Ñтавить Ñимволы подÑтановки, предÑтавлÑющие ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ файле.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "И&Ñпользовать Ñтот модуль"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "ÐачинаетÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ðµ %1 файлов."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Определите шаблон Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Укажите каталог назначениÑ!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Укажите Ð¸Ð¼Ñ ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð°."
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Файлов: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Каталог %1 не ÑущеÑтвует. KRename ÑоздаÑÑ‚ его."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "ПоÑледнÑÑ Ñ‚Ð¾Ñ‡ÐºÐ°"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "В&ыполнить"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Профиль по умолчанию - маÑтер"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Профиль по умолчанию - вкладки"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Профили"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Сохранить профиль..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "&Загрузить профиль"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Удалить профиль"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&ИÑпользовать по умолчанию"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Создать профиль и запиÑать в него текущие наÑтройки KRename . Их затем "
+"можно будет воÑÑтановить кнопкой <b>Загрузить профиль</b>.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Загрузить вÑе параметры, находÑщиеÑÑ Ð² Ñтом профиле.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr "Загрузить профиль Ñ Ð¿Ð¾Ñ‚ÐµÑ€ÐµÐ¹ текущих параметров: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Ðе удалоÑÑŒ найти профиль \"%1\"."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Укажите Ð¸Ð¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ :"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Профиль Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует. Выберите другое."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»ÑÑ‚ÑŒ профили по умолчанию!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Удалить профиль %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Откат переименованиÑ"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Сценарий отката:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Сценарии отката - Ñто обыкновенные Ñценарии оболочки, которые также "
+"могут быть выполнены вручную из командной Ñтроки.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Этот Ñценарий, вероÑтно, не ÑвлÑетÑÑ Ñценарием отката Krename. Его "
+"выполнение может быть небезопаÑно. Продолжить?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Ðевозможно запуÑтить Ñценарий отката."
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Завершено удачно"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Добавить имена каталогов &Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ файлов"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Добавить подкаталоги &рекурÑивно"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Добавить Ñ&крытые каталоги"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Добавить только имена каталогов"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr "Добавить также файлы из вÑех подкаталогов."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"ЕÑли не выбрано, KRename будет игнорировать каталоги начинающиеÑÑ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸, в "
+"течении рекурÑивного добавлениÑ."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr "ДобавлÑÑ‚ÑŒ имена каталогов, а не файлов, которые они Ñодержат."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr "Также добавлÑÑ‚ÑŒ Ð¸Ð¼Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ каталога выделенных файлов."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Права доÑтупа"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Права доÑтупа"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Права доÑтупа"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Изменить &права доÑтупа"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "КлаÑÑ"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Чтение"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "ЗапиÑÑŒ"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Выполнение"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Специальный"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Владелец"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Группа"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Ð’Ñе оÑтальные"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "Бит UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "Бит GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "ФикÑациÑ"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Изменить &владельца и группу"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Владелец и группа"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Владелец:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Группа:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Ðевозможно выполнить chmod %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Ðевозможно выполнить chown %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Введите новое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "&Вернуть изменениÑ"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "ИÑпользовать &иÑходное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Ok"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"ИÑпользовать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, Ñгенерированное KRename, вмеÑто ваших изменений."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Папки"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Папки"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Этот модуль Ñортирует файлы в подкаталогах поÑле переименованиÑ.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Файлов в каталоге:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Ðачальный номер:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "&Каталог назначениÑ"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Шаг %1 из %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Добавьте какие-нибудь файлы..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&СиÑтемные функции"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "СиÑтемные функции"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Ð’Ñтавить текущую дату"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Ð’Ñтавить текущую дату в формате yyyy-MM-dd"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Ð’Ñтавить текущий год"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Ð’Ñтавить номер текущего меÑÑца"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Ð’Ñтавить номер текущего днÑ"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Ð’Ñтавить текущее времÑ"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Ð’Ñтавить номер текущего чаÑа"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Ð’Ñтавить номер текущей минуты"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Ð’Ñтавить номер текущей Ñекунды"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Ð’Ñтавить ваш логин"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Ð’Ñтавить вашу оÑновную группу"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Ð’Ñтавить дату ÑозданиÑ"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Ð’Ñтавить дату ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð² указанном формате"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Ð’Ñтавить дату поÑледнего изменениÑ"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Ð’Ñтавить дату поÑледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² указанном формате"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Ð’Ñтавить дату поÑледнего открытиÑ"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Ð’Ñтавить дату поÑледнего Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð² указанном формате"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Изменить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° вручную"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Обратить выделение"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Выделите текÑÑ‚, который хотите вÑтавить:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "ПроÑмотр: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Дата и времÑ"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Дата и &времÑ"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Изменить дату и Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледнего д&оÑтупа"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Изменить дату и Ð²Ñ€ÐµÐ¼Ñ Ð¸&зменениÑ"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "ВремÑ:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "ч"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "мин."
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "Ñ"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "&Получить текущую дату и времÑ"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Ðевозможно изменить дату файла %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Поддерживаемые знаки:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "Ðомер первого файла.<br>Файлы вÑегда нумеруютÑÑ Ð² том же порÑдке, в "
+#~ "котором они показываютÑÑ Ð² ÑпиÑке результатов."
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..18bf7d4
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,1443 @@
+# translation of krename-3.0.8-1.po to Slovenian
+# -*- mode:po; coding:utf-8; -*- Slovenian message catalogue for krename_3.00.8-1.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Matej UrbanÄiÄ <matej.urban@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: krename-3.0.8-1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2005-10-14 01:11+0200\n"
+"Last-Translator: Matej UrbanÄiÄ <matej.urban@gmail.com>\n"
+"Language-Team: Slovenian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+"%100==4 ? 2 : 3);\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Imena datotek obdelana po %1 sekundah"
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Ne morem ustvariti razveljavitvenega skripta :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Datoteke bodo kopirane v %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Datoteke bodo premaknjene v %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "SimboliÄne povezave bodo ustvarjene v %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "VkljuÄene datoteke bodo preimenovane."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Razveljavitev ni mogoÄa za oddaljeno datoteko: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "Uspešno preimenovanih %1 datotek"
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "Pojavilo se je %2 napak"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "PreteÄen Äas: %1 sekund"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "Krename je konÄal postopek preimenovanja"
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Pritisni zapri za izhod!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Ne morem doloÄiti izvrÅ¡ljivega bita v skriptu za razveljavitev."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Ukazno preimenovanje"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Ukazno preimenovanje"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Niste doloÄili ukaza za izvrÅ¡itev."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Ukazno preimenovanje</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Izvrši lupinski ukaz na vsaki že preimenovani datoteki. Dodaj %1 med "
+"argumente v ukazni vrstici kot ime prevedene datoteke.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Ukaz:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "Izvedi brez oviranja (ni priporoÄljivo)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Dodaj"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " prekinjeno z napako: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "PoiÅ¡Äi in zamenjaj"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "PoiÅ¡Äi"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Zamenjaj z"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Regularni izraz"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "PoiÅ¡Äi:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Zamenjaj z:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Regularni izraz"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Uredi ..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "da"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "ne"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Dodaj besedilo, ki ga želite zamenjati."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Ne morete zamenjati enakega besedila dvakrat!"
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Regularni izraz"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Prepisovalni vstavek"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "&Prepisovalni vstavek"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr "<qt>Ta vstavek prepisuje imena napisana z ne-latinskimi znaki.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Napredek"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "SporoÄila"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Ponovno zaženi Krename"
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Znov&a preimenuj obdelane datoteke ..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Znov&a preimenuj neobdelane datoteke ..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Znov&a preimenuj vse datoteke"
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "P&reimenuj veÄ ..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "&Odpri cilj"
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Napaka: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Opozorilo: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Prekinjeno s strani uporabnika!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Prekinjam ..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Razveljavi: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Razveljavitev preimenovanja je bilo uspeÅ¡no zakljuÄeno."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Izgled in obÄutek"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Uporabi &Äarovnika (zaÄetniki)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Uporabi zavihke (napredno)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Nastavite izgled in obÄutek programa KRename"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "Na&loži vstavke ob zagonu"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Samodejno razširi stolpce v predogledu"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&Velikost vzorÄnih slik"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "Å tevilo uporabljanih predlog: "
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"OnemogoÄenje te možnosti zmanjÅ¡a zagonski Äas. KFilePlugins ne bodo "
+"samodejno naloženi."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Datoteka %1 že obstaja"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr ""
+"Ne morem ustvariti simboliÄnih povezav na razliÄnih gostiteljih za datoteko %"
+"1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Matej UrbanÄiÄ"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "matej.urban@gmail.com"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Å tevilÄenje"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "ZaÄetni &indeks:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Kora&k po:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "PoÄisti Å¡tevec za vsako mapo posebej"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "Pres&koÄi Å¡tevila"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Dodaj Å¡tevilo"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Odstrani Å¡tevilo"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "Å tevilo uporabljanih predlog: "
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Å tevec je poveÄan/zmanjÅ¡an za to vrednost."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"DoloÄi Å¡tevila, ki jih bo KRename spuÅ¡Äal med postopkom preimenovanja."
+"<br>npr.: ÄŒe spustite 2 bodo datoteke oÅ¡tevilÄene kot: dat0, dat1, dat3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Å tevec bo nastavljen na zaÄetno vrednost v vsaki mapi. Ta nastavitev bo "
+"prevzeta za vse uporabljene Å¡tevce.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename je program za serijsko preimenovanje, ki\n"
+"preimenuje listo imen datotek po doloÄenem izrazu.\n"
+"\n"
+"ÄŒe vam je KRename vÅ¡eÄ, morda želite pomagati.\n"
+"Testiranje, popravljanje in predlogi so vedno dobrodošli,\n"
+"kot tudi finanÄna pomoÄ (vsi potrebujemo denar ;) )\n"
+"Poglej pomoÄ za veÄ podrobnosti.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "datoteka bo dodana listi datotek za preimenovanje"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "dodaj mapo rekurzivno"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "doloÄi predlogo"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "doloÄi predlogo za konÄnico"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "omogoÄi vstavek za uporabo"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "kopiraj datoteke v mapo"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "premakni datoteke v mapo"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "zaženi profil z imenom [profile] ob zagonu"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "takoj priÄni s preimenovanjem"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "ni trenutnega predogleda"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Spletna stran, testiranje, veliko dobrih predlogov in vzpodbujanje pri mojem "
+"delu!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "Zahvala za RedHat pakete in drugo pomoÄ."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Odpravljen hroÅ¡Ä z zaÄetnim indeksom in dodano serijsko preimenovanje\n"
+"k izvrstnemu pregledovalniku slik showimg."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Odpravljen hroÅ¡Ä pri zapiranju odprtih datotek."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Zahvala za izvrstno delo na apps.kde.com in pomoÄ pri prenosu KRename\n"
+"na apps.kde.org."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr "Hvala za noatun in ID3/Ogg zaznamek kreiran na noatun modulu."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr "PomoÄ pri pisanju vstavkov."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "Deli podpore za PNG so povzeti po njegovem KFile vložku."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Ustvaril Gentoo Ebuild skripte za KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Nekaj GCC 3.1 popravkov za Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Hvala za izdelavo paketa RPM za Mandrake"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Italijanski prevod"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Ustvaril popravek za gcc3.x namespace."
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Dodal je nov predogled in možnosti premikanja"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Odpravljen problemi spec datotek in izdelava paketov RPM za vse SuSe verzije "
+"in nov vzdrževalec KRename za Gentoo. "
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Dodal je pakete RPM za SuSE in nekaj zelo dobrih predlogov"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Prevod programa v Å¡panÅ¡Äino"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr "Priskrbel RedHat RPM in veliko pomoÄi za izboljÅ¡ave KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Prevod Krename v japonÅ¡Äino"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Prevod Krename v francoÅ¡Äino"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Prevod Krename v poljÅ¡Äino"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Prevod Krename v ruÅ¡Äino"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Prevod Krename v bosanÅ¡Äino"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename je bil zagnan preko skrbniÅ¡kega raÄuna!</b><br>Zaradi prevelikih "
+"pravic lahko tak zagon poÅ¡koduje vaÅ¡ sistem, Äe ne veste natanÄno kaj delate!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Slikovni vstavek"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "Sl&ikovni vstavek"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Preoblikovanje kodiranja"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "Pre&oblikovanje kodiranja"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Ta vstavek lahko spreminja imena datotek med razliÄnimi kodiranji. Z "
+"njim lahko, na primer, spremenite ime datoteke iz KOI8-R v UTF-8 kodiranje.</"
+"qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Kodiranje vnesenih datotek:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Uporabi lokalno kodiranje: %1:"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Kodiranje izhodnih datotek:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Znak"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Opis"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "&Izbor"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "C&ilj"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "Vs&tavki"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Pred&loge"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "&Dodatno"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profili"
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "Razveljavi"
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "Na&loži KDE datoteÄni vstavek"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Osveži vstavke"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Dodaj"
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "Odst&rani"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "Odstrani vs&e"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sortiranje: prosto"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sortiranje: naraÅ¡ÄajoÄe"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sortiranje: padajoÄe"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Sortiranje: nakljuÄno"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Sortiranje: Å¡tevilÄno"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Predogled"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Prikaži ime"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Dodaj datoteke in mape"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Odstrani oznaÄene datoteke"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Odstrani vse datoteke"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "OmogoÄi/zavri predogled slik."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Prikaži število datotek na listi."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Premakni izbrane predmete navzgor"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Premakni izbrane predmete navzdol"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "OmogoÄi/zavri prikaz imen datotek."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "Premakni izbrane predmete (izberi novo lokacijo z miško)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "Možnosti"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "Pre&imenuj vnesene datoteke"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "&Kopiraj datoteke v ciljno mapo"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "&Premakni datoteke v ciljno mapo"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "&Ustvari simboliÄne povezave v ciljni mapi"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "PrepiÅ¡i &obstojeÄe datoteke"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "Razveljavi preimenovanje"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Ustvari &skript za razveljavitev"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRename skript za razveljavitev (*.krename)\n"
+"*|Vse datoteke (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Kopiraj vse datoteke v ciljno mapo in jih preimenuj."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Premakni vse datoteke v ciljno mapo in jih preimenuj."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Izvorno ime"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Preimenovano"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Dodaj predlogo.<br>primer: <i>slika###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr "Dodaj predlogo za konÄnico imena.<br>ObnaÅ¡a se kot predloga datoteke.."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "Odkljukano deluje enako kot predloga konÄnice $."
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Dvoklik na vnosu dovoli spreminjanje."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Predloge nekaterih pogostih regularnih izrazov."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>PoiÅ¡Äi in zamenjaj znake ali del izvornega imena datoteke v ciljnem "
+"imenu.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Lahko uporabite \".gz\" ali \".tar.gz\" kot konÄnico datoteke.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Predloga:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Predloge"
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "&Uporabi izvorno konÄnico"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "PoiÅ¡Äi in z&amenjaj ..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Å tevilÄenje ..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "Vstav&i del imena..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "staro ime"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "staro ime spremenjeno v male Ärke"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "staro ime spremenjeno v velike Ärke"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "prva Ärka vsake besede je velika"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "prva Ärka imena datoteke je velika"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "Å¡tevilo (poskusi ##, ###, ... za vodilne niÄle"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "Å¡tevec z privzeto vrednostjo 0 in privzeti korak 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "ustvari podmapo"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "odstrani vodilne in zadnje presledke"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "znaki od x do y starega imena"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y znak starega imena, ki se priÄne pri x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "vnesi ime mape"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "vnesi ime vrhnje mape"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "vnesi dolžino imena datoteke"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Izbrane predloge:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Vstavi '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Vstavi '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Vstavi '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Vstavi '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Vstavi '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Vstavi '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Vstavi '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Vstavi ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Posebni znaki:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "KonÄnica datoteke se zaÄne pri:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Ime datoteke"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Predpona"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "P&ripona"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Pretvori v male Ärke"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Pretvori v velike Ärke"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Velike Ärke"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Ime:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Uporabi originalno ime"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Ime po meri"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&KonÄnica"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Uporabi originalno konÄnico"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "KonÄnica po meri"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Å tevilo"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Å tevilo cifer"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&PoiÅ¡Äi in zamenjaj"
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Å tevilo"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Datum"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr "<qt>Vstavite poseben ukaz, ki doda k datoteki podrobnosti o njej.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "&Uporabi vstavek"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "ZaÄenjam preoblikovanje %1 datotek."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "DoloÄite predlogo za uporabo pri preimenovanju datotek."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Prosim podajte ciljno mapo!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Prosim, doloÄite ime razveljavitvenega skripta."
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Å tevilo datotek: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Mapa %1 ne obstaja. KRename jo bo za vsa ustvaril."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "prvi piki"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "zadnji piki"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&KonÄaj"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Privzeti profil Äarovnika"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Privzeti profil zavihkov"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profili"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "&Shrani kot profil ..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "&Naloži profil"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Izbriši profil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Uporabi privzeti profil ob zagonu"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Shrani nastavitve KRename kot nov profil. Nastavitve so shranjene in jih "
+"lahko obudite kasneje preko vnosa Naloži profil.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Naloži vse nastavitve shranjene v tem profilu.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr "Zares želite naložiti profil in prepisati trenutne nastavitve: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Ne najdem profila \"%1\"."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Ime profila"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Prosim, vnesite ime novega profila:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Profil že obstaja. Prosim, izberite drugaÄno ime."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Privzetih profilov ni mogoÄe izbrisati!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Zares želite izbrisati profil: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Razveljavi preimenovanje"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Razveljavitveni skript:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Razveljavitveni skripti so normalni lupinski ukazi, ki jih lahko "
+"poženemo tudi roÄno iz ukazne vrstice.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Ta skript ni razveljavitveni skript KRename. Izvajanje tega skripta je lahko "
+"nevarno. Nadaljujem?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Nisem uspel zagnati izbranega razveljavitvenega skripta!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "UspeÅ¡no zakljuÄeno"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Dodaj imena map z imeni datotek"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Dodaj mape rekurzivno"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Dodaj s&krite mape"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Dodaj samo imena map"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr "Rekurzivno dodaj vsebino podmap celotne drevesne strukture."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"ÄŒe ni odkljukano, bo KRename prezrl mape, ki se priÄnejo s piko med "
+"rekurzivnim dodajanjem."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr "Dodaj samo imena map in ne tudi imena datotek v mapah v listo."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Ta možnost omogoÄi, da KRename doda listi tudi ime mape v kateri so izbrane "
+"datoteke."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Spremeni dovoljenje"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Dovoljenja"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Dovoljenja dostopa"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "S&premeni dovoljenja"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Razred"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Branje"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Pisanje"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Izvajanje"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Posebno"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Uporabnik"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Skupina"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Ostalo"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Lepljiv"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Spremeni &Lastnika"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Lastništvo"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Uporabnik:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Skupina:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Ne morem chmod %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "ne morem chown %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Prosim, vnesite novo ime datoteke:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "Pov&rni spremembe"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Uporabi vnosno ime datoteke"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&OK"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "Uporabi ime datoteke, kot bi jo ustvaril KRename."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Preimenovanje po mapah"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "Pr&eimenovanje po mapah"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "<qt>Ta vstavek sortira datoteke po preimenovanju v podmape.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Datotek na mapo:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "ZaÄetni indeks:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Izhodna &mapa"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Korak %1 od %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Prosim, dodajte nekaj datotek ..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Sistemska opravila"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Sistemska opravila"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Vstavite trenutni datum"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Vstavite trenutni datum po predlogi yyyy-MM-dd"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Vstavite trenutno leto"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Vstavite trenutni mesec kot Å¡tevilo"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Vstavite trenutni dan kot Å¡tevilo"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Vstavite trenutni Äas"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Vstavite trenutno uro kot Å¡tevilo"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Vstavite trenutne minute kot Å¡tevilo"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Vstavite trenutne sekunde kot Å¡tevilo"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Vstavite uporabniško ime"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Vstavite ime skupine"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Vstavite datum ustvaritve datotek"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Vstavi oblikovan datum ustvarjanja datoteke"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Vstavite datum spremembe datoteke"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Vstavi oblikovan datum spreminjanja datoteke"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Vstavite datum zadnjega dostopa do datoteke"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Vstavi oblikovan datum zadnjega dostopa do datoteke"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&RoÄno spremeni ime datoteke"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "Obrni &izbor"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Prosim, vnesite besedilo, ki ga želite vstaviti:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Predogled:"
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Spremeni datum in Äas"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Datum && &ÄŒas"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Spremeni datum && Äas zadnjega dostopa"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Spremeni datum && Äas zadnje spremembe"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "ÄŒas:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "h"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Uporabi trenutni datum && Äas"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Ne morem spremeniti datuma datoteke %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Podprti znaki:"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "Å tevilka prve datoteke.<br>Datoteke so vedno oÅ¡tevilÄene kot je prikazano "
+#~ "v listi rezultata preimenovanja."
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..7c7a730
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,1442 @@
+# translation of sv.po to Svenska
+# translation of krename.po to Svenska
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Peter Landgren <peter.talken@telia.com>, 2005, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sv\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2006-01-15 21:09+0100\n"
+"Last-Translator: Peter Landgren <peter.talken@telia.com>\n"
+"Language-Team: Svenska <sv@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Filnamn behandlade efter %1 sekunder."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Kan ej skapa ångra-skript :"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Filer kommer att kopieras till: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Filer kommer att flyttas till: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Symboliska länkar kommer att skapas i: %1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "In-filer kommer att döpas om."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Ångra ej möjligt för fjärrfil: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "Döpte om %1 filer lyckosamt."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 fel inträffade!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Förfluten tid: %1 sekunder"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename avslutade omdöpningsprocessen."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Tryck stäng för att avsluta!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "kan ej sätta exekveringsbit på ångra-skript."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Kommandoplugin"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Kommandoplugin"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Du specificerade inte något kommando att utföras"
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Kommandoplugin</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Utför ett skalkommando för varje fil efter det att den har döpts om . "
+"Lägg till %1 till kommandoradsargumenten för att få filnamnet på den omdöpta "
+"filen.</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Kommando:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "&Utför utan blockering (rekommenderas ej)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Lägg till"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr " avslutade med fel: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Sök och ersätt"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Sök"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Ersätt med"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Reguljärt uttryck"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Sök:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Ersätt med :"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Reguljärt uttryck"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "&Redigera..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "ja"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "nej"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "Lägg till text som skall ersättas"
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Du kan inte ersätta samma text två gånger."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Reguljärt uttryck"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Omskrivningslugin"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "&Omskrivningslugin"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Denna plugin skriver om namn skrivna med icke-engelska tecken.</qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Framgång"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Meddelanden"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "Starta om KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "Döp om processade filer &igen..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "Döp om ej processade filer &igen..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Döp om alla filer &igen..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "&Döp om fler..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "Öppna mål..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Fel: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Varning: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Användare tryckte avbryt!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Avbryter..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Ã…ngra:"
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Ångra omdöpningen har fullföljts."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Utseende och känsla"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "Använd &wizard-stils GUI (nybörjare)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Använd &tabulerad GUI (avancerade användare)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "Konfigurera utseende och känsla för KRename GUI:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "&Ladda filplugin vid start"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Automatisk storleksanpassa kolumner i förhandgranskning"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&Miniatyrstorlek:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Antal historiemallar:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Bortkoppling av detta val minskar KRenams starttid. då inga KFilePlugins "
+"laddas."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "Fil %1 finns redan!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "Kan ej skapa symboliska länkar på olika värdar för fil %1."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Peter Landgren"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "peter.talken@telia.com"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numrering"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "Start&index:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Stega &med:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "&Återställ räknare för varje mapp"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "&Överhoppningstal"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "&Tilläggstal"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "&Borttagningstal"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "Nummer för första fil."
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Räknaren ökas/minskas med detta värde."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Lägg ihop alla tal som borde hoppas över av krename under "
+"omdöpningsprocessen. <br>T. ex.: Om 2 är överhoppade, kommer filer att "
+"numreras: fil0, fil1, fil3, ..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Räknaren sätts till startindex i varje mapp. Denna inställning gäller "
+"för alla använda räknare.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename är en klumpvis filomdöpare, som kan döpa om en\n"
+"fillista grundad på en mängd uttryck.\n"
+"\n"
+"Om du gillar KRename kan du vilja stödja det.\n"
+"Utprovning, felrättning och funktionsönskemål är lika välkomna\n"
+"som finansiellt stöd. (alla behöver pengar ;)\n"
+"Se hjälpfilen för detaljer.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "fil kommer att läggas till fillistan för omdöpning"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "lägg till mappar rekursivt"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "sätt en mall"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "sätt en mall för filändelser"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "tillåt en plugin för användning"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "kopiera filer till mapp"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "flytta filer till mapp"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "ladda profilen kallad [profil] vid start"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "börja omdöpning omedelbart"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "skapa ingen realtidsförhandgranskning"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "Websajt, proving, goda ideer och håll mig kodande!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr ""
+"Ett tack till honom för att han skapat Red Hat 7.x-paket och viss annan "
+"hjälp."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"Rättade ett fel med startindex och lade till BatchRenamer class\n"
+"till denna utmärkta bildvisare."
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Rättade ett fel som orsakade att krename inte stängde öppna filer."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"Tack för detta jättejobb hos kde.apps.com och hjälp med att låta krename "
+"bidra till apps.kde.com."
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr "Tack till noatun och ID3/Ogg Tag-kod är grundad hans noatun moduler."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr "Gav m en bra start i att skriv plugin med hans tillämpning scribus."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "Delar av PNG-stöd är kopierat från hans KFile-plugin för png-stöd."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Skapade Gentoo Ebuild skript till KRename."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Några GCC 3.1 rättelser till Gentoo."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Tack för skapandet av Mandrake-RPM."
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "Italiensk överstättning"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "Bidrog med en gcc3.x namespace-rättelse"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Bidrog med den nya förhandsgranskningens- och flytta-funktionerna"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Rättade problem med spec-filen och bidrog med rpms för varje SuSe-version du "
+"kan tänka på och även den nya Gentoo-underhållaren för KRename."
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Bidrog med Suse-PRM:er och mycket bra förslag"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "Bidrog med en spansk översättning"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+"Bidrog med en RadHat-RPM och var till stor hjälp i att förbättra KRename"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "Översatte KRename till japanska"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "Översatte KRename till franska"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "Översatte KRename till polska"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "Översatte KRename till ryska"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "Översatte KRename till bosniska"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>KRename startade från rot!</b><br>Om den startas från rot, kan KRename "
+"förstöra ditt system om du inte vet exakt vad du håller på med!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Bild-plugin"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "B&ild-plugin"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Kodomvandlar-plugin"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "&Kodomvandlar-plugin"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Denna plugin kan omvandla filnamn mellan olika koder. T. ex. kan du "
+"omvandla filnamn från KO19-R till UTF-8-kodning.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Kodning av infiler:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Använd lokal kodning: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Kodning av utfiler:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Symbol"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Beskrivning"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "F&iler"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "M&Ã¥l"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "P&lugin"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Fil&namn"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "E&xtra"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profiler..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "&Ångra gammal omdöpningsåtgärd..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "&Ladda KDE fil-plugin"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Ladda &om plugin-data"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Lägg till..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "Ta&gbort"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "Tag&bort allt"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sortering: osorterat"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sortering: stigande"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sortering: fallande"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Sortering: slumpmässigt"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Sortering: numeriskt"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Förhandsgranskning"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Visa namn"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Lägg till en eller flera filer eller mappar"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Tag bort valda filer"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Tag bort alla filer"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Tillåt/förbjud förhandsgranskning av bilder"
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Visa antal filer i listan."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Flytta valt uppåt"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Flytta valt medåt"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Tillåt/förbjud visning av filnamn."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "Flytta valda (välj den nya platsen med musen)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "&Val"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "&Döp om infiler"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "&Kopiera filer till målmappen"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "&Flytta filer till målmappen"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Skapa symboliska &länkar i målmappen"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "Skriv &över befintliga filer"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "&Ångra omdöpning"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "&Skapa ett ångraskript"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|KRenameångraskript (*.krename)\n"
+"*|Alla filer (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Kopiera filer till målmappen och döp om dem."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Flyttar alla filer till målmappen och döper om dem."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Ursprung"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Omdöpt"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Lägg till en mall.<br>Exempel: <i>bild###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Lägg till en mall för filändelser.<br>Den uppför sig som filnamnsmallen."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "Markering i denna ruta är samma sak som att sätta ändelsemallen till $"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Dubbelklicka för att ändra."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "Hjälpdialog med alla symboler stödda av KRenname."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Sök och ersätt tecken eller delar av filnamnsträng i målfilen.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Du kan använda \".gz\" och \".tar.gz\" som filändelser hos filbackuppen. "
+"tar.gz beror på denna inställning.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Mall"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Funktioner..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "Anv&änd ändelsen hos infilen"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Sök &och ersätt..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numrering..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "Skjut &in del av filnamn..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "gammalt filnamn"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "gammalt filnamn omvandlat till små bokstäver"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "gammalt filnamn omvandlat till stora bokstäver"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "första bokstaven i varje ord med stora bokstäver"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "första bokstaven i filnamn med stora bokstäver"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "tal (prova även ##, ###,... för inledande nollor)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "räknare med anpassat startvärde 0 och anpassat steg 1"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "skapa en undermapp"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "skala bort mellanslag m. m. i början och i slutet"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "tecken x till y i gammalt filnamn"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "y tecken i gammalt filnamn börjande vid x"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "skjut in mappnamn"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "skjut in överordnad mapps namn"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "skjut in längden hos infilnamnet"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "Inbyggda funktioner:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "Skjut in '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "Skjut in '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "Skjut in '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "Skjut in '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "Skjut in'7'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "Skjut in '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "Skjut in '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "Skjut in ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Specialtecken:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Filändelse börjar vid:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Filnamn"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Prefix:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Suffix:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Omvandla till små bokstäver "
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Omvandla till stora bokstäver"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Inled med stor bokstav"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Namn:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Använd ursprungligt namn"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Anpassat namn"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Filändelse"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Använd ursprunglig filändelse"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Anpassad filändelse"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Tal"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Antal siffror:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Sök och ersätt..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Tal"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Datum"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Skjut in ett speciellt KRename-kommando, som skjuter in filinformation i "
+"filennamnet.</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "An&vänd denna plugin"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "Börjar omvandling av %1 filer."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Specificera en mall för filnamnsomdöpning."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Anger en målmapp!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Ange namnet på ångra-skriptet!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Filer:<b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "Mappen %1 finns ej. KRename kommer att skapa den åt dig."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Första punkt"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Sista punkt"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "Avs&lutning"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Wizard's standardprofil"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Tabbad standardprofil"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profiler"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "Spara som &profil..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "&Ladda profil..."
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "&Tag bort profil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "&Använd standardprofil vid start"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>Spara KRenames gällande inställningar som en ny profil. Inställningarna "
+"sparas och kan återställas med Ladda profil senare.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Ladda alla inställningar sparade i denna profil.</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Vill du verkligen ladda profilen och skriva över de aktuella "
+"inställningarna: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "Profilen \"%1\" kunde inte hittas."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Profilnamn"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Skriv in ett namn på den nya profilen:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Denna fil finns redan. Välj ett annat namn."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Du kan inte ta bort standardprofiler!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "Vill du verkligen ta bort profilen: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "&Ångra omdöpning"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "Ã…ngra skript:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Ångra-skript är normalt skal-skript, som även kan utföras manuellt från "
+"kommandorden.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Detta skript verkar inte vara ett KRename ångra-skript. Utförande av detta "
+"skript kan vara farligt. Fortsätta?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Oförmögen att starta det erhållna ångra-skriptet!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Slutförde framgångsrikt"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Lägg ihop mappnamn &med filnamn."
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Lägg ihop undermappar rekursivt"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "Lägg ihop &gömda mappar"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Lägg ihop endast mappnamn"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Genomlöp rekursivt mappträdet och lägg även till innehållet i alla "
+"undermappar till listan med filer, som skall döpas om."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Om ej märkt, kommer KRename att ignorera mappar, som börjar med en punkt, "
+"under rekursiv addering."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"Addera bara mappnamnen och inte namnen på filerna i mapparna till KRename."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Detta val gör att KRename även adderar namnet på basmappen för de valda "
+"filerna till sin lista."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Rättigheter"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Rättigheter"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "Åtkomtsrättighter"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "Ändrings&rättighter"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Klass"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Läs"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Skriv"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Utför"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Special"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Användare"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Grupp"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "Andra"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Vidhäftande"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "Ändra &ägare"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Ägare"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Användare:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Grupp:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "Kan ej chmod %1."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "Kan ej chown %1."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Skriv in ett nytt filnamn:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "&Ångra ändringar"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "Använd &infilnamn"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Ok"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Använd det filnamn, som är skapat av KRename i stället för dina ändringar."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Dir Plugin"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Dir Plugin"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "<qt>Denna plugin sorterar filer, efter omdöpning, i undermappar.</qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Filer per mapp:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Startindex:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Ut&mapp:"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - Steg %1 av %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Lägg till några filer..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Systemfunktioner"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Systemfunktioner"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Skjut in aktuellt datum"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr ""
+"Skjut in aktuellt datum genom att använda formateringssträngen yyyy-MM-dd"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Skjut in aktuellt år"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Skjut in aktuell månad som ett tal"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Skjut in aktuell dag som ett tal"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Skjut in aktuell tidpunkt"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Skjut in aktuell timme som ett tal"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Skjut in aktuell minut som ett tal"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Skjut in aktuell sekund som ett tal"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Skjut in ditt användarnamn"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Skjut in ditt gruppnamn"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Skjut in filskapelsedatumen"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Skjut in det formaterade filskapelsedatumet"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Skjut in filändringsdatumen"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Skjut in det formaterade filändringsdatumet"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Skjut datumet för senaste filåtkomst"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Skjut in det formaterade datumet för senaste filåtkomst"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "&Ändra filnamn manuellt"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "&Vänd urval"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Välj den text du vill ha inskjuten:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Förhandsgranskning:"
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Datum & klockslag"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Datum && &klockslag"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "Ändra &åtkomstdatum && klockslag"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "Ändra &ändringsdatum && klockslag"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Klockslag:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "h"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "min"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "&Hämta aktuellt datum && klockslag"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "Kan ej ändra datum för fil %1."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Understödda märken:"
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..a5475f8
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,1454 @@
+# translation of krename.po to
+# Emre AladaÄŸ <emre@emrealadag.com>, 2006.
+# Koray Löker <loker@pardus.org.tr>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: krename\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2006-09-18 19:14+0300\n"
+"Last-Translator: Koray Löker <loker@pardus.org.tr>\n"
+"Language-Team: <tr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "Dosya adları %1 saniyede işlendi."
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "Geri alma betiği oluşturulamıyor:"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "Dosyalar ÅŸuraya kopyalanacak: %1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "Dosyalar şuraya taşınacak: %1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "Simgesel bağlar %1 içerisinde oluşturulacak"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "Girdi dosyaları yeniden adlandırılacak."
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "Geri alma işlemi %1 dosyası için mümkün değil"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "%1 dosya başarıyla yeniden adlandırıldı."
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2 hata oluÅŸtu!"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "Geçen zaman: %1 saniye"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "KRename yeniden adlandırma işlemini bitirdi."
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "Çıkmak için kapat tuşuna basın!"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "Geri alma betiğinde çalıştırılabilir bit koyamam."
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "Komut Eklentisi"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "&Komut Eklendisi"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "Çalıştırılmak üzere bir komut belirtmediniz."
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>Komut Eklentisi</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>Her dosya yeniden adlandırıldıktan sonra bir kabuk komutu çalıştırır. "
+"Komut satırı argümanlarına %1 ekleyerek dosyayı yeniden adlandırabilirsiniz."
+"</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "Komut:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "E&ngellemeden çalıştır (tavsiye edilmez)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "&Ekle"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr "%1 hatasıyla çıkıldı"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "Bul ve DeÄŸiÅŸtir"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "Bul"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "Bununla DeÄŸiÅŸtir"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "Düzenli İfade"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "Bul:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "Bununla DeÄŸiÅŸtir:"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "&Düzenli ifade"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "Dü&zenle..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "evet"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "hayır"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "DeÄŸiÅŸtirilecek bir metin ekleyin."
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "Aynı metni iki kez değiştiremezsiniz."
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "Düzenli ifade"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr "Harf çevrimi eklentisi"
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr "&Harf çevrimi eklentisi"
+
+#: translitplugin.cpp:50
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr ""
+"<qt>Bu eklenti, latin olmayan harflerle yazılan isimleri, seslerine "
+"bakmaksızın latin harflerle yazılı biçime çevirir.</ qt>"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "Süreç"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "Ä°letiler"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "KRename'i yeniden baÅŸlat..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "İşlenmiş Dosyaları &Tekrar Yeniden Adlandır..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "İşlenmemiş Dosyaları &Tekrar Yeniden Adlandır..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "Tüm Dosyaları &Tekrar yeniden adlandır..."
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "Daha Fazla &Yeniden Adlandır..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "Hedef &Aç..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "Hata: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "Uyarı: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "Kullanıcı iptal tuşuna bastı!"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "Durduruluyor..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "Geri al: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "Yeniden adlandırmayı geri alma işlemi tamamlandı."
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "Bak ve Hisset"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "&Sihirbaz şeklinde arayüz kullan (acemiler için)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "Se&kmeli arayüz kullan (uzmanlar için)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "KRename arayüzünün görünüm ve hissini yapılandır:<br>"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr "KRename"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "Eklentileri açılışta &yükle"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "Önizlemedeki sütunları kendiliğinden &boyutlandır"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "&Önizleme boyutu:"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "&Şablon geçmişi öğelerinin sayısı:"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+"Bu seçeneği kapatmak, eklentiler açılışta yüklenmeyeceği için KRename'in "
+"açılış süresini kısaltır."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "%1 dosyası zaten var!"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "%1 dosyası için farklı makinede simgesel bağ oluşturulamadı."
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Emre AladaÄŸ"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "emre@emrealadag.com"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "&Numaralandırma"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "Başlangıç &indeksi:"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "Başlangıç &konumu:"
+
+#: numberdialog.cpp:64
+msgid "&Reset counter for every directory"
+msgstr "&Her dizin için sayacı sıfırla"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "Sayıları A&tla"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "Sayı &Ekle"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "Sayı &Kaldır"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr "İlk dosyanın numarası."
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "Sayaç bu değere göre arttırılır/azaltılır."
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"Krename tarafından atlanması gereken tüm sayıları ekleyin.<br> Örn: Eeğr 2 "
+"atlanırsa, dosyalar dosya0, dosya1, dosya3, ... şeklinde numaralanacaktır."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+"<qt>Sayaç, her dizinde başlangıç indeksine eşitlenir. Bu ayar, kullanılan "
+"tüm sayaçlara uygulanır.</qt>"
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"KRename bir liste içerisindeki dosyaları, belirli ifadelere dayanarak "
+"topluca yeniden adlandıran bir programdır. \n"
+"\n"
+"EÄŸer KRename'i severseniz, destekte bulunmak isteyebilirsiniz.\n"
+"Test yardımı, hata düzeltmeleri ve özellik talepleri kabul edildiği gibi "
+"maddi destek de çok makbule geçer (herkes paraya ihtiyaç duyar;)\n"
+"Detaylar için yardım dosyalarına bakın.\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr ""
+"dosya adlandırılmak üzere, yeniden adlandırılacaklar listesine eklenecektir"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "Dizini özyinelemeli olarak ekle"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "bir şablon seç"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "dosya uzantısı için bir şablon seç"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "kullanılmak üzere bir eklentiyi etkinleştir"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "dosyaları dizine kopyala"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "dosyaları dizine taşı"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr "açılışta [profile] adlı profili yükle"
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "adlandırmayı derhal başlat"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "gerçek zamanlı önizleme oluşturma"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr ""
+"Websitesi, testler, bana kod yazdırmaya devam ettiği ve güzel fikirleri için!"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr ""
+"RedHat 7.x paketlerini oluşturduğu için ve başka bazı yardımları sebebiyle "
+"kendisine teşekkür ediyoruz."
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"startIndex işlevinde bir hata düzeltti ve BatchRenamer sınıfını\n"
+"harika resim gösterici showmimg'e ekledi"
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "Krename'in açık dosyaları kapatmasını engelleyen hata kapatıldı."
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"apps.kde.com'daki harika katkıları ve krename'in apps.kde.com'da bulunmasına "
+"yardımları için teşekkürler"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr ""
+"Onun noatun birimleriyle gerçekleştirilen ID3/Ogg etiket düzenlemeleri için "
+"teşekkürler..."
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr ""
+"Uygulaması scribus ile eklenti yazmaya iyi bir başlangıç yapmamı sağladı."
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr ""
+"PNG desteğinin bir bölümü, onun KFile eklentisinden alınan bölümler "
+"sayesinde gerçekleştirildi."
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "Krename için Gentoo Ebuild betikleri oluşturuldu."
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr "Gentoo için bazı GCC 3.1 düzeltmeleri."
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr "Manrake RPM'ini oluşturduğu için teşekkürler"
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr "İtalyanca çeviri"
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr "gcc 3.* sürümleri için namespace yaması hazırladı"
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr "Yeni önizleme ve taşıma özellikleri eklendi"
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+"Spec dosyasındaki sorunları çözdü, SuSE'nin aklınıza gelebilecek tüm "
+"sürümleri için rpm hazırladı ve şimdi de Gentoo paketlerini yapıyor"
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr "Suse RPM'leri oluşturdu ve güzel önerilerde bulundu"
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr "İspanyolca çeviriyle katkıda bulundu"
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+"Bir RedHat RPM'i sağladı ve KRename'i geliştirmede çok büyük yardımı dokundu"
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr "KRename'i Japonca'ya çevirdi"
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr "KRename'i Fransızca'ya çevirdi"
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr "KRename'i Lehçe'ye çevirdi"
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr "KRename'i Rusça'ya çevirdi"
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr "KRename'i Boşnakça'ya çevirdi"
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Krename kök dizinden(root) başlatıldı!</b><br>Eğer ne yaptığınızı tam "
+"olarak bilmiyorsanız,Krename kök dizinden başlatılınca sisteminize zarar "
+"verebilir!"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "Resim Eklentisi"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "Res&im Eklentisi"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "Karakter kodlaması dönüştürme eklentisi"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "&Karakter kodlaması dönüştürme eklentisi"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>Bu eklenti, dosya adlarının sahip oldukları kodlamaları başka "
+"kodlamalara dönüştürebilir. Örneğin dosya adlarının kodlamasını KO18-R'den "
+"UTF-8'e dönüştürebilirsiniz.</qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "Girdi Dosyalarının Kodlaması:"
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "&Yerel kodlamayı kullan: %1"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "Çıktı Dosyalarının Kodlaması:"
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "Sembol"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "Açıklama"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "&Dosyalar"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "&Hedef"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "&Eklentiler"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "Dosya &Adı"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "Ä°&laveler"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "&Profiller..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "Önceki Adlandırma İşlemini &Geri al..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "KDE dosya eklentilerini &yükle"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "Eklenti Verilerini Ye&niden Yükle"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "&Ekle..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "&Kaldır"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "&Tümünü Kaldır"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "Sıralama: Sırasız"
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "Sıralama: Artan"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "Sıralama: Azalan"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "Sıralama: Rastgele"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "Sıralama: Sayısal"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "&Önizleme"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "&Görüntüleme ismi"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "Bir veya daha fazla dosya/dizin ekle"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "Seçilen dosyaları kaldır"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "Tüm dosyaları kaldır"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "Resimlerin önizlemesini etkinleştir/kapat."
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "Listedeki dosyaların sayısını gösterir."
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "Seçilen öğeleri yukarıya çıkar"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "Seçilen öğeleri aşağıya indir"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "Dosya adının görüntülenmesine izin ver/verme."
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "Seçilen öğeleri taşı (yeni konumu fare ile seçin)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "A&yarlar"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "Girdi dosyalarını yeniden &adlandır"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "Dosyaları hedef dizine kop&yala"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "Dosyaları hedef dizine &taşı"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "Hedef dizinde simgesel &baÄŸ oluÅŸtur"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "&Ãœzerine yaz"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "Adlandırmayı &Geri Al"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "Geri alma &betiÄŸi oluÅŸtur"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+"*.krename|Krename geri al betikleri (*.krename)\n"
+"*|Tüm Dosyalar (*)"
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "Tüm dosyaları hedef dizine kopyalar ve yeniden adlandırır."
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "Tüm dosyaları hedef dizine taşır ve yeniden adlandırır."
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "Ä°lk hali"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "Adlandırılmış hali"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "Bir şablon ekle.<br>Örnek: <i>resim###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr ""
+"Dosya eklentisi için bir şablon ekle.<br>Dosya adı şablonu gibi davranır."
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "Bu kutuyu seçmek uzantı şablonunu $ yapmakla aynıdır"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "Bir öğe üzerinde değişiklik yapmak için üzerine çift tıklayın."
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr ""
+"KRename Yardım menüsü tüm sembollerle çalışacak şekilde desteklenmektedir."
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+"<qt>Özgün ismin bir bölümünü ya da bir karakterini otomatik olarak değiştir</"
+"qt>"
+
+#: krenameimpl.cpp:541
+#, fuzzy
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+"<qt>Yedek dosyasının uzantısı olarak \".gz\" ve \"tar.gz\" "
+"kullanabilirsiniz. Bu ayar ile tar.gz kullanılır.</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "&Åžablon:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "&Ä°ÅŸlevler..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "Girdi dosyasının &uzantısını kullan"
+
+#: krenameimpl.cpp:569
+msgid "Find &and Replace..."
+msgstr "Bul &ve DeÄŸiÅŸtir..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "&Numaralama..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "D&osya adından bir parça kullan..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "eski dosya adı"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "eski dosya adı küçük harfli yapıldı"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "eski dosya adı büyük harfli yapıldı"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "her kelimenin ilk harfi büyük"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "dosya adının ilk harfi büyük"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "numara (başa sıfır koymak için ##, ###, ... seçeneklerini de deneyin)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "Özel başlangıç değeri olarak 0 ve artım değeri olarak 1 kullanan sayaç"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "alt dizin oluÅŸtur"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "İsmin baş ve sonundaki boşlukları göz ardı et"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "eski dosya adındaki x - y karakterleri arası"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "Eski dosya adının x'ten başlayan y karakteri"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "dizinin adını girin"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "üst dizinin adını girin"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "girilen dosya adının uzunluğunu girin"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "YerleÅŸik Ä°ÅŸlevler:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "'$' Ekle"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "'%' Ekle"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "'&' Ekle"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "'*' Ekle"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "'/' Ekle"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "'\\\\' Ekle"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "'[' Ekle"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "']' Ekle"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "Özel Karakterler:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "Dosya uzantısının başladığı yer:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "&Dosya adı"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "&Önek:"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "&Sonek:"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "Küçük harflere çevir"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "Büyük harflere çevir"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "Baş harflerini büyük yap"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "&Ä°sim:"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "Özgün ismini kullan"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "Özel isim"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "&Uzantı:"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "Özgün uzantıyı kullan"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "Özel uzantı"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "&Sayı"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "&Hane sayısı:"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "&Bul ve DeÄŸiÅŸtir..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "Sayı"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "Tarih"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+"<qt>Dosya bilgisini dosya adı içerisine ekleyen özel bir KRename komudu ekle."
+"</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "Bu eklentiyi &kullan"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "%1 dosyanın çevrimine başlanıyor."
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "Dosyaları yeniden adlandırmada kullanılmak üzere bir şablon belirtin."
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "Lütfen bir hedef dizini belirtin!"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "Lütfen geri alma betiğinin ismini belirtin!"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "Dosya sayısı: <b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "%1 dizini mevcut değil. KRename sizin için bu dizini oluşturacak."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "Ä°lk Nokta"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "Son Nokta"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "&BitiÅŸ"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: Öntanımlı sihirbaz profili"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: Öntanımlı sekmeli profil"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "Profiller"
+
+#: profiledlg.cpp:407
+msgid "&Save As Profile..."
+msgstr "Profili &Farklı Kaydet..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "Profil &Yükle"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "Profil &Sil"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr "Açılışta öntanımlı profil olarak &kullan"
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+"<qt>KRename'in mevcut ayarlarını yeni bir profil olarak kaydet. Ayarlar "
+"kaydedildikten sonra Profil Yükle ile geri getirilebilir.</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>Bu profil içinde saklanan tüm ayarları yükle</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+"Gerçekten bu profili yüklemek ve mevcut ayarların üzerine yazmak istiyor "
+"musunuz: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "\"%1\" profili bulunamadı."
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "Profil Ä°smi"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "Lütfen yeni profil için bir isim girin:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "Profil zaten mevcut. Lütfen farklı bir isim seçin."
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "Öntanımlı profilleri silemezsiniz!"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "%1 profilini silmek istediğinize gerçekten emin misiniz?"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "Adlandırmayı Geri Al"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "BetiÄŸi geri al:"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+"<qt>Geri alma betikleri, aynı zamanda komut satırından el ile "
+"çalıştırılabilen sıradan kabuk betikleridir.</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"Bu betik Krename geri alma betiğine benzemiyor. Bu betiğin çalıştırılması "
+"tehlikeli olabilir. Devam edilsin mi?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "Verilen geri alma betiği çalıştırılamadı!"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "Başarıyla bitti"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "Dosya adlarıyla &birlikte dizin adlarını ekle"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "Alt dizinleri &özyinelemeli olarak ekle"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "&Gizli dizinleri ekle"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "Sadece dizin isimlerini ekle"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+"Dizin ağacı boyunca özyinelemeli ilerle ve tüm alt dizinlerin içeriğini de "
+"yeniden adlandırılacak dosyalar listesine ekle."
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+"Eğer seçili değilse, KRename özyinelemeli ekleme süresince bir nokta ile "
+"başlayan dizinleri önemsemeyecektir."
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+"KRename'e bir dizinin içindeki dosyaların isimlerini değil, sadece o dizinin "
+"ismini ekleyin."
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+"Bu seçenek KRename'in seçilen dosyaların ait olduğu temel dizinin ismini de "
+"listeye eklemesini saÄŸlar."
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "Ä°zinler"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "&Ä°zinler"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "EriÅŸim izinleri"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "&Ä°zinleri DeÄŸiÅŸtir"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "Sınıf"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "Oku"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "Yaz"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "Çalıştır"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "Özel"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "Kullanıcı"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "Grup"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "DiÄŸerleri"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "Yapışkan"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "&Sahibi DeÄŸiÅŸtir"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "Sahiplik"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "Kullanıcı:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "Grup:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "%1 dosyasının izinleri değiştirilemedi."
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "%1 dosyasının sahibi değiştirilemedi."
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "Lütfen yeni bir dosya adı girin:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "DeÄŸiÅŸiklikleri &Geri Al"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "&Girdi Dosya Adını Kullan"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "&Tamam"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr ""
+"Kendi değişiklikleriniz yerine KRename tarafından oluşturulan dosya adını "
+"kullanın."
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "Dizin Eklentisi"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "&Dizin Eklentisi"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr ""
+"<qt>Bu eklenti altdizinlerde yeniden adlandırmadan sonra dosyaları sıralar.</"
+"qt>"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "Dizin başına dosya:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "Başlangıç indeksi:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "Çıktı &Dizini"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - %2 Adımdan %1."
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "Lütfen birkaç dosya ekleyin..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "&Sistem Ä°ÅŸlevleri"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "Sistem Ä°ÅŸlevleri"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "Günün tarihini ekle"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "Günün tarihini yyyy-AA-gg biçiminde ekleyin"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "Şu anki yılı ekleyin"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "Şu anki ayı sayı olarak ekleyin"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "Şu anki günü sayı olarak ekleyin"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "Åžu anki saati ekleyin"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "Şu anki saati sayı olarak ekleyin"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "Şu anki dakikayı sayı olarak ekleyin"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "Şu anki saniyeyi sayı olarak ekleyin"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "Kullanıcı adınızı ekleyin"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "Grup adınızı ekleyin"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "Dosyaların oluşturulma tarihlerini ekleyin"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "Dosyaların biçemli oluşturulma tarihlerini ekleyin"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "Dosyaların değiştirilme tarihlerini ekleyin"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "Biçemli deştirilme tarihini ekleyin"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "Dosyaya son eriÅŸimin tarihini girin"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "Dosyaya son erişimin tarihini biçemli olarak girin"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "Dosya Adını Elle &Değiştir"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "Seçimi &tersine çevir"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "Lütfen eklemek istediğiniz metni seçin:"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "Önizleme: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "Tarih & Saat"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "Tarih && &Saat"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "&EriÅŸim tarihini && saatini deÄŸiÅŸtirin"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "&DeÄŸiÅŸtirilme tarihini && saatini deÄŸiÅŸtirin"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "Saat:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "sa"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "dak"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "s"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "Åžu anki Tarihi && Saati &Al"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "%1 dosyasının tarihi değiştirilemiyor."
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "Desteklenen semboller:"
diff --git a/po/zh_CN.GB2312.po b/po/zh_CN.GB2312.po
new file mode 100644
index 0000000..02c41ee
--- /dev/null
+++ b/po/zh_CN.GB2312.po
@@ -0,0 +1,1802 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2002-06-24 13:11+0800\n"
+"Last-Translator: Dehua Qin <qindehua@hotmail.com>\n"
+"Language-Team: zh_CN <zh@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "文件å处ç†è€—æ—¶%1秒"
+
+#: batchrenamer.cpp:248
+msgid "Can't create undo script :"
+msgstr "无法生æˆæ’¤æ¶ˆè„šæœ¬ï¼š"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "文件将å¤åˆ¶è‡³ï¼š%1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "文件将移动至:%1"
+
+#: batchrenamer.cpp:265
+msgid "Symbolic links will be created in: %1"
+msgstr "符å·é“¾æŽ¥å°†ç”ŸæˆäºŽï¼š%1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "输入文件将会被更å"
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr "远程文件ä¸èƒ½æ’¤æ¶ˆæ›´å: %1"
+
+#: batchrenamer.cpp:332
+msgid "Renamed %1 files successfully."
+msgstr "æˆåŠŸæ›´å文件%1"
+
+#: batchrenamer.cpp:336
+msgid "%2 errors occurred!"
+msgstr "%2错误å‘生ï¼"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "耗时%1秒"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr "æ›´å处ç†å®Œæ¯•ï¼"
+
+#: batchrenamer.cpp:340
+msgid "Press close to quit!"
+msgstr "请按下关闭退出ï¼"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr "ä¸èƒ½åœ¨æ’¤æ¶ˆè„šæœ¬ä¸­è®¾ç½®å¯æ‰§è¡Œä½"
+
+#: commandplugin.cpp:38
+msgid "Command Plugin"
+msgstr "命令æ’件"
+
+#: commandplugin.cpp:43
+msgid "&Command Plugin"
+msgstr "命令æ’件(&D)"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr "未指定执行的命令"
+
+#: commandplugin.cpp:69
+msgid "<b>Command Plugin</b>"
+msgstr "<b>命令æ’件</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+"<qt>在æ¯ä¸ªæ–‡ä»¶æ›´ååŽæ‰§è¡Œä¸€ä¸ªshell命令,请在命令å‚数中加入%1用于获å–æ›´ååŽçš„æ–‡"
+"件å</qt>"
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr "命令:"
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr "éžé˜»å¡žæ‰§è¡Œï¼ˆä¸æŽ¨è)(&E)"
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "添加(&A)"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr "退出,错误: %1"
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "查找与替æ¢"
+
+#: replacedialog.cpp:45
+msgid "Find"
+msgstr "查找"
+
+#: replacedialog.cpp:46
+msgid "Replace With"
+msgstr "替æ¢ä¸º"
+
+#: replacedialog.cpp:47
+msgid "Regular Expression"
+msgstr "正则表达å¼"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "查找:"
+
+#: replacedialog.cpp:60
+msgid "Replace with:"
+msgstr "替æ¢ä¸ºï¼š"
+
+#: replacedialog.cpp:65
+msgid "&Regular expression"
+msgstr "正则表达å¼"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr "编辑(&E)..."
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr "是"
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr "å¦"
+
+#: replacedialog.cpp:131
+msgid "Add a text that should be replaced."
+msgstr "添加一个将被替æ¢çš„字串ï¼"
+
+#: replacedialog.cpp:138
+msgid "You can't replace the same text twice."
+msgstr "无法é‡å¤æ›¿æ¢åŒæ ·çš„字串ï¼"
+
+#: replacedialog.cpp:144
+msgid "Regular expression"
+msgstr "正则表达å¼"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr "æ­¤æ’件在å­ç›®å½•ä¸­çš„文件更ååŽå¯¹æ–‡ä»¶è¿›è¡ŒæŽ’åº"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "处ç†"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr "消æ¯"
+
+#: ProgressDialog.cpp:85
+msgid "Restart KRename..."
+msgstr "é‡æ–°å¯åŠ¨KRename..."
+
+#: ProgressDialog.cpp:87
+msgid "Rename Processed Files &Again..."
+msgstr "é‡æ–°æ›´å已处ç†çš„文件(&P)..."
+
+#: ProgressDialog.cpp:88
+msgid "Rename Unprocessed Files &Again..."
+msgstr "é‡æ–°æ›´å未处ç†çš„文件(&U)..."
+
+#: ProgressDialog.cpp:89
+msgid "Rename All Files &Again..."
+msgstr "é‡æ–°æ›´å所有文件(&A)"
+
+#: ProgressDialog.cpp:91
+msgid "&Rename More..."
+msgstr "æ›´å更多(&R)..."
+
+#: ProgressDialog.cpp:96
+msgid "&Open Destination..."
+msgstr "打开目的(&O)..."
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr "错误: %1"
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr "警告: %1"
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "使用者按下å–消键ï¼"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "正在放弃中..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr "撤消: "
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr "撤消更å完æˆï¼"
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr "工作方å¼"
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr "使用å‘导(&w)"
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr "普通模å¼(&t)"
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr "é…ç½®KRename的工作方å¼"
+
+#: confdialog.cpp:74 main.cpp:49
+msgid "KRename"
+msgstr ""
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr "å¯åŠ¨æ—¶åŠ è½½æ–‡ä»¶æ’件"
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr "自动调整预览æ çš„大å°"
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr "略缩图大å°(&T)"
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr "模æ¿åŽ†å²é¡¹çš„æ•°é‡"
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr "ç¦ç”¨æ­¤é€‰é¡¹ä¼šå‡å°‘KRenameçš„å¯åŠ¨æ—¶é—´, 但是KFilePluginsæ’件将ä¸ä¼šè¢«åŠ è½½."
+
+#: fileoperation.cpp:57
+msgid "File %1 exists already!"
+msgstr "文件%1已存在"
+
+#: fileoperation.cpp:79
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "无法建立符å·é“¾æŽ¥%1"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Dehua Qin"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "qindehua@hotmail.com"
+
+#: numberdialog.cpp:48
+msgid "&Numbering"
+msgstr "åºå·"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+msgid "Start &index:"
+msgstr "起始åºå·ï¼š"
+
+#: numberdialog.cpp:62
+msgid "Step &by:"
+msgstr "步长(&B):"
+
+#: numberdialog.cpp:64
+#, fuzzy
+msgid "&Reset counter for every directory"
+msgstr "æ’入目录å"
+
+#: numberdialog.cpp:67
+msgid "S&kip Numbers"
+msgstr "跳过åºå·"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "添加åºå·(&A)"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "移除åºå·(&R)"
+
+#: numberdialog.cpp:104
+#, fuzzy
+msgid "Number of the first file."
+msgstr "模æ¿åŽ†å²é¡¹çš„æ•°é‡"
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "åºå·æ˜¯ä»¥æ­¤æ•°å€¼é€’增/递å‡"
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"添加所有在Krename处ç†è¿‡ç¨‹ä¸­å°†è¢«è·³è¿‡çš„åºå·ã€‚ <br>例如:若2将被跳过,则文件将会"
+"被标示为:文件0ã€æ–‡ä»¶1ã€æ–‡ä»¶3ã€..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+
+#: main.cpp:50
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"Krename是一个批é‡æ–‡ä»¶æ›´å程åºï¼Œå®ƒå¯ä»¥åŸºäºŽä¸€ä¸ªè¡¨è¾¾å¼ä¸ºä¸€è¿žä¸²æ–‡ä»¶æ›´å。 \n"
+"若您喜欢Krename,也许您想支æŒå®ƒã€‚\n"
+"欢迎å‚与测试ã€é™¤è™«ã€åŠŸèƒ½éœ€æ±‚。\n"
+"æ助(任何人都需è¦é’±;))详情请洽帮助文件。\n"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "文件将会被加入到待更å的文件列表中"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "递归添加目录"
+
+#: main.cpp:64
+msgid "set a template"
+msgstr "设置模æ¿"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr "设置扩展å模æ¿"
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr "使用æ’件"
+
+#: main.cpp:67
+msgid "copy files to directory"
+msgstr "å¤åˆ¶æ–‡ä»¶è‡³ç›®çš„目录(&C)"
+
+#: main.cpp:68
+msgid "move files to directory"
+msgstr "移动文件至目的目录(&M)"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr ""
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr "开始更åï¼"
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "建立éžå®žæ—¶é¢„览"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "网站ã€æµ‹è¯•ã€å¥½ç‚¹å­åŠè®©æˆ‘继续写程åºï¼"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "感谢他因为建立RedHat 7.X套件åŠä¸€äº›å…¶ä»–的帮助。"
+
+#: main.cpp:85
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"修正一些startIndex的臭虫åŠæ·»åŠ BatchRenamer类别至他的超棒影åƒæ˜¾è§†å™¨showimg。"
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "修正一个能够导致Krenameä¸ä¼šå…³é—­æ‰€å¼€å¯æ–‡ä»¶çš„臭虫。"
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"感谢他在apps.kde.com里的功劳,åŒæ—¶ä¹Ÿæ„Ÿè°¢ä»–帮助我把Krename贡献予apps.kde.com。"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr "æ„Ÿè°¢noatunåŠID3/Ogg,标签程åºç æ˜¯åŸºäºŽä»–çš„noatun模å—。"
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr "用他的scribus应用程åºï¼Œåœ¨æˆ‘写æ’件时给我一个好的开始点。"
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "部份的PNG支æŒæ˜¯ä»Žä»–çš„KFileç»™png支æŒçš„æ’件处抄过æ¥çš„。"
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "建立了Krename的Gentoo Ebuild的脚本。"
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr ""
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr ""
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr ""
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr ""
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr ""
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr ""
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr ""
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr ""
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr ""
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr ""
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr ""
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr ""
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Krename以root开始ï¼</b><br>当以root开始时,若您ä¸å¤ªç¡®å®šæ‚¨åœ¨åšä½•äº‹æ—¶ï¼Œ"
+"Krename å¯èƒ½ä¼šå±å®³åˆ°æ‚¨çš„系统ï¼"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "å½±åƒæ’件"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "å½±åƒæ’件(&I)"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr "ç¼–ç è½¬æ¢æ’件"
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr "ç¼–ç è½¬æ¢æ’件(&E)"
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+"<qt>æ­¤æ’件å¯ä»¥æŠŠæ–‡ä»¶åæ›´å为ä¸åŒç¼–ç ã€‚例如å¯ä»¥æŠŠæ–‡ä»¶å从GB2312ç¼–ç æ›´æ”¹ä¸ºUTF-8"
+"ç¼–ç </qt>"
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr "输入文件的编ç "
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr "使用本地编ç (&U)"
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr "输出文件的编ç "
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr "è®°å·"
+
+#: helpdialog.cpp:90
+msgid "Description"
+msgstr "æè¿°"
+
+#: krenameimpl.cpp:80
+msgid "F&iles"
+msgstr "原始文件列表(&i)"
+
+#: krenameimpl.cpp:81
+msgid "Des&tination"
+msgstr "目的文件(&T)"
+
+#: krenameimpl.cpp:82
+msgid "P&lugins"
+msgstr "æ’件(&P)"
+
+#: krenameimpl.cpp:83
+msgid "File&name"
+msgstr "文件é‡å‘½å(&N)"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr "文件(&F)"
+
+#: krenameimpl.cpp:303
+msgid "&Profiles..."
+msgstr "装入é…置文件(&P)..."
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr "撤消以å‰çš„æ›´å(&U)..."
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr "加载KDE文件æ’件(&L)"
+
+#: krenameimpl.cpp:312
+msgid "&Reload Plugin Data"
+msgstr "é‡æ–°åŠ è½½æ’件数æ®(&R)"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+msgid "&Add..."
+msgstr "添加文件(&A)..."
+
+#: krenameimpl.cpp:351
+msgid "Re&move"
+msgstr "移除文件(&M)"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "移除所有(&E)"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr "排åº: æ— "
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr "排åº: å‡åº"
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr "排åº: é™åº"
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr "排åº: éšæœº"
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr "排åº: æ•°å­—"
+
+#: krenameimpl.cpp:364
+msgid "&Preview"
+msgstr "预览(&P)"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr "显示文件å(&D)"
+
+#: krenameimpl.cpp:404
+msgid "Add one or more files or directories"
+msgstr "添加一或多个文件"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "移除所选å–的文件"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "移除所有文件"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "打开/关闭影åƒé¢„览"
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "显视列表中文件的数目"
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "å‘上移动选å–的项目"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "å‘下移动选å–的项目"
+
+#: krenameimpl.cpp:411
+msgid "Enable/disable display of file name."
+msgstr "打开/关闭文件å显示"
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr "移动选择项 (用鼠标选择新ä½ç½®)"
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr "选项(&O)"
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "直接更å原始文件(&R)"
+
+#: krenameimpl.cpp:436
+msgid "Cop&y files to destination directory"
+msgstr "å¤åˆ¶æ–‡ä»¶è‡³ç›®çš„目录(&C)"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "移动文件至目的目录(&M)"
+
+#: krenameimpl.cpp:442
+msgid "Create symbolic &links in destination directory"
+msgstr "建立符å·é“¾æŽ¥äºŽç›®çš„目录(&C)"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "覆盖已存在的文件(&O)"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr "撤消更å"
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr "生æˆæ’¤æ¶ˆæ›´å脚本"
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "å¤åˆ¶æ‰€æœ‰æ–‡ä»¶è‡³ç›®çš„目录并更å"
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "移动所有文件至目的目录并更å"
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "原始文件"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "æ›´ååŽçš„文件"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "设定文件更å模æ¿ã€‚<br>范例:<i>file###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr "设定扩展å模æ¿ã€‚<br>与文件å模æ¿ç±»ä¼¼"
+
+#: krenameimpl.cpp:534
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "选择此选项与设定扩展å模æ¿ä¸º$是相åŒçš„"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "åŒå‡»ä¸€é¡¹ç›®ä»¥æ›´æ”¹å®ƒ"
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr "KRename支æŒçš„所有记å·"
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr "<qt>在文件å中查找替æ¢å­—符串.</qt>"
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr "<qt>例如,您å¯ä½¿ç”¨ \".gz\" 或者 \".tar.gz\" 作文件的扩展å</qt>"
+
+#: krenameimpl.cpp:549
+msgid "&Template:"
+msgstr "模æ¿(&T):"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr "函数(&F)..."
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "使用输入文件的扩展å(&U)"
+
+#: krenameimpl.cpp:569
+#, fuzzy
+msgid "Find &and Replace..."
+msgstr "查找与替æ¢(&F)..."
+
+#: krenameimpl.cpp:572
+msgid "&Numbering..."
+msgstr "åºå·(&N)..."
+
+#: krenameimpl.cpp:573
+msgid "&Insert Part of Filename..."
+msgstr "æ’入文件å的一部分(&I)..."
+
+#: krenameimpl.cpp:578
+msgid "old filename"
+msgstr "原文件å"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr "原文件å转å˜ä¸ºå°å†™"
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr "原文件å转å˜ä¸ºå¤§å†™"
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr "æ¯ä¸ªè¯çš„第一个字æ¯å¤§å†™"
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr "文件å的第一个字æ¯å¤§å†™"
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr "åºå· (用 ##, ###, ... å‰ç½®è¡¥é›¶)"
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr "起始值为0,步长为1的计数器"
+
+#: krenameimpl.cpp:585
+msgid "create a subdirectory"
+msgstr "生æˆå­ç›®å½•"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr "删除首尾空格"
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr "把字符x替æ¢ä¸ºy"
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr "原文件å开始于xçš„y个字符"
+
+#: krenameimpl.cpp:589
+msgid "insert name of directory"
+msgstr "æ’入目录å"
+
+#: krenameimpl.cpp:590
+msgid "insert name of parent directory"
+msgstr "æ’入上级目录的目录å"
+
+#: krenameimpl.cpp:591
+msgid "insert the length of the input filename"
+msgstr "æ’入文件大å°"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr "内置函数:"
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr "æ’å…¥ '$'"
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr "æ’å…¥ '%'"
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr "æ’å…¥ '&'"
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr "æ’å…¥ '*'"
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr "æ’å…¥ '/'"
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr "æ’å…¥ '\\\\'"
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr "æ’å…¥ '['"
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr "æ’å…¥ ']'"
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr "特殊字符:"
+
+#: krenameimpl.cpp:640
+msgid "File extension starts at:"
+msgstr "扩展å起始于:"
+
+#: krenameimpl.cpp:657
+msgid "&Filename"
+msgstr "文件å(&F)"
+
+#: krenameimpl.cpp:660
+msgid "&Prefix:"
+msgstr "å‰ç¼€(&P)"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr "åŽç¼€(&S)"
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr "转æ¢ä¸ºå°å†™"
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr "转æ¢ä¸ºå¤§å†™"
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr "大写字æ¯"
+
+#: krenameimpl.cpp:677
+msgid "&Name:"
+msgstr "文件å(&N):"
+
+#: krenameimpl.cpp:679
+msgid "Use original name"
+msgstr "使用原始文件å"
+
+#: krenameimpl.cpp:681
+msgid "Custom name"
+msgstr "自定义文件å"
+
+#: krenameimpl.cpp:687
+msgid "&Extension:"
+msgstr "扩展å(&E)"
+
+#: krenameimpl.cpp:689
+msgid "Use original extension"
+msgstr "使用原始扩展å"
+
+#: krenameimpl.cpp:691
+msgid "Custom extension"
+msgstr "自定义扩展å"
+
+#: krenameimpl.cpp:698
+msgid "&Number"
+msgstr "æ•°å­—(&N)"
+
+#: krenameimpl.cpp:704
+msgid "&Number of digits:"
+msgstr "æ•°å­—ä½æ•°(&N)"
+
+#: krenameimpl.cpp:707
+msgid "&Find and Replace..."
+msgstr "查找与替æ¢(&F)..."
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+msgid "Number"
+msgstr "æ•°å­—"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+msgid "Date"
+msgstr "日期"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr "<qt>æ’入一个特殊的KRename命令,用于在文件å中æ’入文件信æ¯</qt>"
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "使用此æ’件(&U)"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "开始转æ¢%1文件"
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "指定一模æ¿ä»¥æ›´å文件"
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "请给予一目的目录ï¼"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr "请给出撤消脚本的文件å"
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "文件:<b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr "目录 %1 ä¸å­˜åœ¨. KRename 会生æˆæ­¤ç›®å½•."
+
+#: krenameimpl.cpp:1701
+msgid "First Dot"
+msgstr "首点"
+
+#: krenameimpl.cpp:1702
+msgid "Last Dot"
+msgstr "尾点"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr "开始更å(&F)"
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr "KRename: 缺çœå‘导é…ç½®"
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr "KRename: 缺çœæ™®é€šé…ç½®"
+
+#: profiledlg.cpp:395
+msgid "Profiles"
+msgstr "é…ç½®"
+
+#: profiledlg.cpp:407
+#, fuzzy
+msgid "&Save As Profile..."
+msgstr "生æˆé…ç½®(&C)..."
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr "加载é…ç½®(&L)"
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr "删除é…ç½®(&D)"
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr ""
+
+#: profiledlg.cpp:427
+#, fuzzy
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr "<qt>ç”±KRename的当å‰è®¾ç½®ç”Ÿæˆæ–°çš„é…置文件</qt>"
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr "<qt>加载此é…置文件中包å«çš„所有设置</qt>"
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr "是å¦åŠ è½½é…置并覆盖当å‰çš„设置: %1"
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr "é…置文件 \"%1\" 找ä¸åˆ°"
+
+#: profiledlg.cpp:529
+msgid "Profile Name"
+msgstr "é…ç½®å称"
+
+#: profiledlg.cpp:529
+msgid "Please enter a name for the new profile:"
+msgstr "请为新的é…置输入一个å称:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr "å称已存在,请输入å¦ä¸€ä¸ªå称"
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr "ä¸èƒ½åˆ é™¤ç¼ºçœé…ç½®ï¼"
+
+#: profiledlg.cpp:557
+msgid "Do you really want to delete the profile: %1"
+msgstr "您确实è¦åˆ é™¤æ­¤é…ç½®: %1"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr "撤消更å"
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr "撤消脚本"
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr "<qt>撤消脚本是普通的shell脚本,也å¯ä»¥ä»Žå‘½ä»¤è¡Œæ‰§è¡Œã€‚</qt>"
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+"此脚本似乎ä¸æ˜¯Krename撤消脚本,执行此脚本å¯èƒ½ä¼šäº§ç”Ÿå±é™©çš„结果,是å¦ç»§ç»­?"
+
+#: undodialog.cpp:86
+msgid "Unable to start the given undo script!"
+msgstr "此扩展å开始于所指定的点。"
+
+#: undodialog.cpp:118
+msgid "Finished successfully"
+msgstr "æˆåŠŸå®Œæˆ"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr "åŒæ—¶åŠ å…¥ç›®å½•å(&W)"
+
+#: dsdirselectdialog.cpp:47
+msgid "Add subdirectories &recursively"
+msgstr "递归目录(&R)"
+
+#: dsdirselectdialog.cpp:51
+msgid "Add &hidden directories"
+msgstr "添加éšè—目录(&H)"
+
+#: dsdirselectdialog.cpp:53
+msgid "Add directory names only"
+msgstr "仅添加目录å"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr "递归添加所有å­ç›®å½•ä¸­çš„文件"
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr "如果未选此项, KRename 会忽略以 . 开头的目录(éšè—目录)"
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr "仅增加目录å称而ä¸æ˜¯æ–‡ä»¶å"
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr "添加文件åçš„åŒæ—¶ä¹Ÿæ·»åŠ ç›®å½•å"
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "æƒé™"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "æƒé™(&P)"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "å­˜å–æƒé™"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "å˜æ›´æƒé™(&P)"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "类别"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "读å–"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "写入"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "执行"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "特殊"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "所有者"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "群组"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "其他"
+
+#: permission.cpp:113
+msgid "UID"
+msgstr "UID"
+
+#: permission.cpp:116
+msgid "GID"
+msgstr "GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "粘性"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "å˜æ›´æ‰€æœ‰è€…(&O)"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "所有"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "用户:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "群组:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "无法chmod%1"
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "无法chown%1"
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "请输入一个新的文件å:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "åå‘改å˜(&R)"
+
+#: myinputdialog.cpp:49
+msgid "Use &Input Filename"
+msgstr "使用输入的文件å(&I)"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "确定(&O)"
+
+#: myinputdialog.cpp:75
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "使用由Krename所产生的文件å以替æ¢æ‚¨çš„更改"
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "目录æ’件"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "目录æ’件(&D)"
+
+#: mydirplugin.cpp:71
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "æ­¤æ’件在å­ç›®å½•ä¸­çš„文件更ååŽå¯¹æ–‡ä»¶è¿›è¡ŒæŽ’åº"
+
+#: mydirplugin.cpp:83
+msgid "Files per directory:"
+msgstr "æ¯ä¸ªç›®å½•çš„文件:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "开始索引:"
+
+#: mydirplugin.cpp:105
+msgid "Output &Directory"
+msgstr "输出目录(&D)"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr " - 步骤 %1 / %2"
+
+#: kmylistbox.cpp:54
+msgid "Please add some files..."
+msgstr "请添加文件..."
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr "系统函数(&S)"
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr "系统函数"
+
+#: dateplugin.cpp:134
+msgid "Insert the current date"
+msgstr "å–得当å‰æ—¥æœŸåŠæ—¶é—´(&G)"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr "用格å¼åŒ–字符串yyyy-MM-ddæ’入当å‰æ—¥æœŸ"
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr "æ’入当å‰å¹´ä»½æ•°å­—"
+
+#: dateplugin.cpp:137
+msgid "Insert the current month as number"
+msgstr "æ’入当å‰æœˆä»½æ•°å­—"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr "æ’入当å‰æ—¥æœŸæ•°å­—"
+
+#: dateplugin.cpp:139
+msgid "Insert the current time"
+msgstr "æ’入当å‰æ—¶é—´"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr "æ’入当å‰å°æ—¶æ•°"
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr "æ’入当å‰åˆ†é’Ÿæ•°"
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr "æ’入当å‰ç§’æ•°"
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr "æ’入您的用户å"
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr "æ’入您的组å"
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr "æ’入文件生æˆæ—¥æœŸ"
+
+#: dateplugin.cpp:146
+msgid "Insert the formatted file creation date"
+msgstr "æ’入格å¼åŒ–的文件生æˆæ—¥æœŸ"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr "æ’入文件修改日期"
+
+#: dateplugin.cpp:148
+msgid "Insert the formatted modification date"
+msgstr "æ’入格å¼åŒ–的文件修改日期"
+
+#: dateplugin.cpp:149
+msgid "Insert the date of the last file access"
+msgstr "æ’入访问日期"
+
+#: dateplugin.cpp:150
+msgid "Insert the formatted date of the last file access"
+msgstr "æ’入格å¼åŒ–的访问日期"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr "手工修改文件å(&C)"
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr "åå‘选择(&I)"
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr "请选择你想æ’入的文本"
+
+#: coorddialog.cpp:129
+msgid "Preview: "
+msgstr "预览: "
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "日期与时间"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "日期与时间(&T)"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "å˜æ›´å­˜å–日期åŠæ—¶é—´(&A)"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "å˜æ›´ä¿®æ”¹æ—¥æœŸåŠæ—¶é—´(&M)"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "时间:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "å°æ—¶"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "分钟"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "秒钟"
+
+#: datetime.cpp:102
+msgid "&Get Current Date && Time"
+msgstr "å–å¾—ç›®å‰æ—¥æœŸåŠæ—¶é—´(&G)"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "无法å˜æ›´æ–‡ä»¶%1日期"
+
+#: fileplugin.cpp:140
+msgid "Supported tokens:"
+msgstr "支æŒçš„è®°å·ï¼š"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr "首个文件的åºå·ã€‚<br>文件å总是以它们显示在结果列表中的åŒæ ·æ–¹å¼æ ‡æ•°"
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
+
+#~ msgid "&Save Settings"
+#~ msgstr "储存设定(&S)"
+
+#, fuzzy
+#~ msgid "&Destination Directory"
+#~ msgstr "目的目录"
+
+#, fuzzy
+#~ msgid "&Previous Name:"
+#~ msgstr "预览影åƒ(&I)"
+
+#, fuzzy
+#~ msgid "Setup Filename"
+#~ msgstr "文件å"
+
+#, fuzzy
+#~ msgid "&Easy Mode..."
+#~ msgstr "å†åº¦æ›´å(&R)"
+
+#, fuzzy
+#~ msgid "Add Direct&ory..."
+#~ msgstr "添加目录(&D)"
+
+#, fuzzy
+#~ msgid "&Rename Directory..."
+#~ msgstr "å†åº¦æ›´å(&R)"
+
+#, fuzzy
+#~ msgid "Add all files of a directory. Adding recursively is possible, too."
+#~ msgstr "递归添加目录里的所有文件,<br>å³æ˜¯æ‰€æœ‰å­ç›®å½•é‡Œçš„所有文件"
+
+#~ msgid "The given destination directory does not exist!"
+#~ msgstr "所给予的目的目录ä¸å­˜åœ¨ï¼"
+
+#~ msgid "&Add Files"
+#~ msgstr "添加文件(&A)"
+
+#~ msgid "Add &Directory"
+#~ msgstr "添加目录(&D)"
+
+#, fuzzy
+#~ msgid "&Remove File"
+#~ msgstr "移除文件(&R)"
+
+#~ msgid "FileOperation"
+#~ msgstr "FileOperation"
+
+#~ msgid "KMyIntSpinBox"
+#~ msgstr "KMyIntSpinBox"
+
+#, fuzzy
+#~ msgid "NumberDialog"
+#~ msgstr "SkipDialog"
+
+#~ msgid "KMyHistoryCombo"
+#~ msgstr "KMyHistoryCombo"
+
+#~ msgid "ReplaceDialog"
+#~ msgstr "ReplaceDialog"
+
+#~ msgid "KMyListBox"
+#~ msgstr "KMyListBox"
+
+#~ msgid "MyInputDialog"
+#~ msgstr "MyInputDialog"
+
+#, fuzzy
+#~ msgid "CommandPlugin"
+#~ msgstr "æ’件"
+
+#~ msgid "Plugin"
+#~ msgstr "æ’件"
+
+#, fuzzy
+#~ msgid "UndoDialog"
+#~ msgstr "ConfDialog"
+
+#~ msgid "MyDirPlugin"
+#~ msgstr "MyDirPlugin"
+
+#~ msgid "MyPermPlugin"
+#~ msgstr "MyPermPlugin"
+
+#~ msgid "KMyListView"
+#~ msgstr "KMyListView"
+
+#~ msgid "PicturePlugin"
+#~ msgstr "å½±åƒæ’件"
+
+#~ msgid "MyDatePlugin"
+#~ msgstr "MyDataPlugin"
+
+#~ msgid "wizard"
+#~ msgstr "ç²¾çµ"
+
+#, fuzzy
+#~ msgid "FilePlugin"
+#~ msgstr "æ’件"
+
+#, fuzzy
+#~ msgid "HelpDialog"
+#~ msgstr "SkipDialog"
+
+#, fuzzy
+#~ msgid "CoordDialog"
+#~ msgstr "ConfDialog"
+
+#, fuzzy
+#~ msgid "KRenameImpl"
+#~ msgstr "已更å"
+
+#~ msgid "ConfDialog"
+#~ msgstr "ConfDialog"
+
+#~ msgid "ProgressDialog"
+#~ msgstr "ProgressDialog"
+
+#~ msgid "Rename output files again"
+#~ msgstr "é‡æ–°æ›´å输出文件"
+
+#, fuzzy
+#~ msgid "&Append number"
+#~ msgstr "添加数字(&A)"
+
+#~ msgid "Creating symbolic links in: %1"
+#~ msgstr "建立符å·é“¾æŽ¥äºŽï¼š%1"
+
+#~ msgid ""
+#~ "A symbolic link will be created in the destination directory for each "
+#~ "file."
+#~ msgstr "将会为æ¯ä¸ªæ–‡ä»¶å»ºç«‹ä¸€ä¸ªç¬¦å·é“¾æŽ¥äºŽç›®çš„目录中。"
+
+#~ msgid "Renaming %1 files."
+#~ msgstr "正在更改%1文件å称。"
+
+#~ msgid "Overwriting file %1."
+#~ msgstr "覆盖文件%1。"
+
+#~ msgid "Can't rename %1 to %2."
+#~ msgstr "无法将文件%1æ›´å至%2。"
+
+#~ msgid "If the filename is file.tar.bz2, .tar.bz2 is used as file extension."
+#~ msgstr "若此文件是.tar.bz2档,则.tar.bz2将会被使用为扩展å。"
+
+#~ msgid "If the filename is file.tar.bz2, .bz2 is used as file extension."
+#~ msgstr "若此文件为.tar.bz2,则.bz2将会被使用为扩展å。"
+
+#~ msgid "The file extension starts at the given dot."
+#~ msgstr "此扩展å开始于所指定的点。"
+
+#~ msgid "Can't overwrite %1."
+#~ msgstr "无法覆盖%1。"
+
+#~ msgid "<b>Picture Plugin</b>"
+#~ msgstr "<b>å½±åƒæ’件</b>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt>Rename pictures using information like their resolution or color mode."
+#~ "</qt>"
+#~ msgstr "使用影åƒçš„解æžåº¦æˆ–色彩模å¼çš„资讯æ¥æ›´åå½±åƒã€‚"
+
+#, fuzzy
+#~ msgid "<qt>This plugin supports the following tokens:</qt>"
+#~ msgstr "æ­¤æ’件支æŒä»¥ä¸‹æ›¿æ¢ç¬¦å·ï¼š"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt><b>[resolution]</b> insert resolution<br><b>[xres]</b> insert x "
+#~ "resolution<br></qt>"
+#~ msgstr ""
+#~ "<b>[解æžåº¦]</b>æ’入解æžåº¦<br><b>[x解æžåº¦]</b>æ’å…¥x解æžåº¦<br><b>[y解æžåº¦]</"
+#~ "b> æ’å…¥y解æžåº¦<br><b>[压缩]</b>æ’入压缩模å¼(ä»…é™PNG)<br>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt><b>[yres]</b> insert y resolution<br><b>[bitdepth]</b> insert "
+#~ "bitdepth<br></qt>"
+#~ msgstr ""
+#~ "<b>[注解]</b>æ’入注解<br><b>[ä½å…ƒæ·±åº¦]</b>æ’å…¥ä½å…ƒæ·±åº¦<br><b>[色彩模å¼]</"
+#~ "b> æ’入色彩模å¼(ä»…é™PNG)<br>"
+
+#~ msgid "Supported image formats: "
+#~ msgstr "支æŒçš„å½±åƒæ ¼å¼ï¼š"
+
+#~ msgid ""
+#~ "Drag files or directories into this list to add them.<br>Double click on "
+#~ "a file to open it."
+#~ msgstr "拖曳文件或目录至此列表中以添加它们,<br>åŒå‡»æ–‡ä»¶ä»¥å¼€å¯å®ƒã€‚"
+
+#, fuzzy
+#~ msgid "minute"
+#~ msgstr "分钟"
+
+#, fuzzy
+#~ msgid "MetaInfoDialog"
+#~ msgstr "ConfDialog"
+
+#, fuzzy
+#~ msgid "Add Dir Recursivel&y..."
+#~ msgstr "递归添加目录(&Y)"
+
+#~ msgid "Add all files of a directory"
+#~ msgstr "添加目录里的所有文件"
+
+#~ msgid ""
+#~ "Please install the kdeutils package to use the regular expressions editor."
+#~ msgstr "请安装KDEUTILS套件以使用正规表达å¼ç¼–辑器。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<b>$</b> old filename<br><b>%</b> old filename converted to lower "
+#~ "case<br><b>&</b> old filename converted to upper case<br><b>*</b> first "
+#~ "letter of every word uppercase<br><b>#</b> Adds a number to the filename "
+#~ "(add more #'s for leading zeros)<br><b>/</b> creates a subdirectory<br><b>"
+#~ "[x-y]</b> Characters x to y of the old filename<br><b>[%x-y]</b> "
+#~ "Characters x to y converted to lower case"
+#~ msgstr ""
+#~ "<u>åˆæ³•æ›¿æ¢ç¬¦å·ä¸ºï¼š</u><br><b>$</b>原文件å<br><b>%</b>原文件å转æ¢è‡³å°å†™ "
+#~ "<br><b>&</b>原文件å转æ¢è‡³å¤§å†™<br><b>*</b>首字大写<br><b>#</b>添加一数字至"
+#~ "æ¡£å<br> <b>[x-y]</b>原文件åçš„å­—å…ƒx至y<br><b>[%x-y]</b>å­—å…ƒx至y转æ¢è‡³å°å†™"
+#~ "<br> <b>[date]</b>添加目å‰æ—¥æœŸè‡³æ–‡ä»¶å<br><b>[year],[month],[day],[time],"
+#~ "[hour], [minute],[second]</b>"
+
+#~ msgid "Start Index:"
+#~ msgstr "开始索引:"
+
+#~ msgid "ERROR: %1"
+#~ msgstr "错误:%1"
+
+#~ msgid "WARNING: %1"
+#~ msgstr "警示:%1"
+
+#~ msgid "Visible Plugins"
+#~ msgstr "å¯è§†æ’件"
+
+#~ msgid "Invisible Plugins"
+#~ msgstr "ä¸å¯è§†æ’件"
+
+#~ msgid "&Save As..."
+#~ msgstr "å¦å­˜æ–°æ¡£(&S)..."
+
+#~ msgid "Save output in a text file."
+#~ msgstr "储存输出至文字档。"
+
+#~ msgid "Saved output to file %1."
+#~ msgstr "储存输出至文件%1。"
+
+#~ msgid "RegExp:"
+#~ msgstr "RegExp:"
+
+#~ msgid "SkipDialog"
+#~ msgstr "SkipDialog"
+
+#, fuzzy
+#~ msgid "&Visible Pages"
+#~ msgstr "å¯è§†æ’件"
+
+#, fuzzy
+#~ msgid "&Visible Plugins"
+#~ msgstr "å¯è§†æ’件"
+
+#~ msgid "Skip &Numbers"
+#~ msgstr "跳过数字(&N)"
+
+#~ msgid "&Find and replace"
+#~ msgstr "查找与替æ¢(&F)"
+
+#~ msgid "Select numbers that should be skipped."
+#~ msgstr "选å–è¦è·³è¿‡çš„数字。"
+
+#, fuzzy
+#~ msgid "ExtensionDialog"
+#~ msgstr "ConfDialog"
+
+#, fuzzy
+#~ msgid "MyHelpCombo"
+#~ msgstr "KMyHistoryCombo"
+
+#~ msgid "Preferences"
+#~ msgstr "å好"
+
+#, fuzzy
+#~ msgid "&File Extension Handling..."
+#~ msgstr "扩展å"
+
+#~ msgid ""
+#~ "File %1 cannot be added to the list because it is already in the list."
+#~ msgstr "文件%1无法添加至列表中因为它已存在列表中。"
+
+#~ msgid "O&K to all"
+#~ msgstr "确定所有(&K)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Directory %1 cannot be added to the list because it is already in the "
+#~ "list."
+#~ msgstr "文件%1无法添加至列表中因为它已存在列表中。"
+
+#, fuzzy
+#~ msgid "&Default"
+#~ msgstr "解压缩"
+
+#~ msgid "A&bout"
+#~ msgstr "关于(&B)"
+
+#, fuzzy
+#~ msgid "number"
+#~ msgstr "æ•°å­—"
+
+#~ msgid "add dir to plugin path"
+#~ msgstr "添加目录至æ’件路径"
+
+#~ msgid "(No Genre)"
+#~ msgstr "(æ— Genre)"
+
+#~ msgid "Mp3/Ogg Renamer"
+#~ msgstr "MP3/OGGæ›´å器"
+
+#~ msgid "&Mp3/Ogg Renamer"
+#~ msgstr "MP3/OGGæ›´å器(&M)"
+
+#~ msgid "<b>MP3/Ogg Vorbis Plugin</b>"
+#~ msgstr "<b>MP3/OGG VORBISæ’件</b>"
+
+#~ msgid ""
+#~ "Rename MP3 or Ogg Vorbis files based on the contents of their ID3 tags."
+#~ msgstr "以ID3标签内容更åMP3或OGG VORBIS文件。"
+
+#~ msgid ""
+#~ "<b>[artist]</b> insert Artist<br><b>[title]</b> insert Title<br><b>[album]"
+#~ "</b> insert Album<br><b>[mp3year]</b> insert Year<br><b>[comment]</b> "
+#~ "insert Comment<br>"
+#~ msgstr ""
+#~ "<b>[歌手]</b>æ’入歌手<br><b>[æ­Œå]</b>æ’入歌å<br><b>[专辑]</b>æ’入专辑"
+#~ "<br> <b>[mp3年份]</b>æ’入年份<br><b>[注解]</b>æ’入注解<br>"
+
+#~ msgid ""
+#~ "<b>[genre]</b> insert Genre<br><b>[copyright]</b> insert Copyright (OGG "
+#~ "only)<br><b>[organization]</b> insert Organization (OGG only)<br><b>"
+#~ "[location]</b> insert Location (OGG only)<br>"
+#~ msgstr ""
+#~ "<b>[genre]</b>æ’å…¥Genre<br><b>[版æƒ]</b>æ’入版æƒ(ä»…é™OGG)<br><b>[组织]</"
+#~ "b> æ’入组织(ä»…é™OGG)<br><b>[地区]</b>æ’入地区(ä»…é™OGG)<br>"
+
+#~ msgid ""
+#~ "The <b>Mp3/Ogg Renamer</b> plugin was written by:<br>Dominik Seichter "
+#~ "domseichter@web.de"
+#~ msgstr ""
+#~ "æ­¤<b>MP3/OGGæ›´å器</b>æ’件是由:Dominik Seichter domseichter@web.de所撰写"
+
+#, fuzzy
+#~ msgid "Can't open file: "
+#~ msgstr "无法开å¯æ–‡ä»¶ï¼š%1"
+
+#~ msgid "Grayscale"
+#~ msgstr "ç°é˜¶"
+
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgid "RGB"
+#~ msgstr "RGB"
+
+#~ msgid "Palette"
+#~ msgstr "色盘"
+
+#~ msgid "Grayscale/Alpha"
+#~ msgstr "ç°é˜¶/ALPHA"
+
+#~ msgid "RGB/Alpha"
+#~ msgstr "RGB/ALPHA"
+
+#~ msgid "Adding Files"
+#~ msgstr "正在添加文件"
+
+#~ msgid "Advanced Options"
+#~ msgstr "进阶选项"
+
+#~ msgid "&Preferences"
+#~ msgstr "å好(&P)"
+
+#~ msgid ""
+#~ "<u>Decription:</u><br>\n"
+#~ "Uncheck this checkbox to change the file extension manually."
+#~ msgstr ""
+#~ "<u>说明:</u><br>\n"
+#~ "å选此选å–盒以手动更改扩展å。"
diff --git a/po/zh_TW.Big5.po b/po/zh_TW.Big5.po
new file mode 100644
index 0000000..2cfd132
--- /dev/null
+++ b/po/zh_TW.Big5.po
@@ -0,0 +1,1896 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-10-16 10:49+0200\n"
+"PO-Revision-Date: 2002-06-24 13:11+0800\n"
+"Last-Translator: 劉盛光 <stacker_liew_200@yahoo.com.tw>\n"
+"Language-Team: zh_TW.Big5 <zh@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: batchrenamer.cpp:126
+msgid "Filenames Processed after %1 seconds."
+msgstr "檔å處ç†è€—時%1秒。"
+
+#: batchrenamer.cpp:248
+#, fuzzy
+msgid "Can't create undo script :"
+msgstr "無法建立符號連接%1。"
+
+#: batchrenamer.cpp:261
+msgid "Files will be copied to: %1"
+msgstr "檔案å³å°‡è¤‡è£½è‡³ï¼š%1"
+
+#: batchrenamer.cpp:263
+msgid "Files will be moved to: %1"
+msgstr "檔案å³å°‡ç§»å‹•è‡³ï¼š%1"
+
+#: batchrenamer.cpp:265
+#, fuzzy
+msgid "Symbolic links will be created in: %1"
+msgstr "檔案å³å°‡è¤‡è£½è‡³ï¼š%1"
+
+#: batchrenamer.cpp:267 krenameimpl.cpp:477
+msgid "Input files will be renamed."
+msgstr "輸入檔案將會被更å。"
+
+#: batchrenamer.cpp:320
+msgid "Undo is not possible for remote file: %1"
+msgstr ""
+
+#: batchrenamer.cpp:332
+#, fuzzy
+msgid "Renamed %1 files successfully."
+msgstr "æˆåŠŸæ›´å檔案%1。"
+
+#: batchrenamer.cpp:336
+#, fuzzy
+msgid "%2 errors occurred!"
+msgstr "%2錯誤發生ï¼"
+
+#: batchrenamer.cpp:338
+msgid "Elapsed time: %1 seconds"
+msgstr "耗時%1秒"
+
+#: batchrenamer.cpp:339
+msgid "KRename finished the renaming process."
+msgstr ""
+
+#: batchrenamer.cpp:340
+#, fuzzy
+msgid "Press close to quit!"
+msgstr "僅此而已ï¼è«‹æŒ‰ä¸‹é—œé–‰ä»¥çµæŸï¼"
+
+#: batchrenamer.cpp:350
+msgid "Can't set executable bit on undo script."
+msgstr ""
+
+#: commandplugin.cpp:38
+#, fuzzy
+msgid "Command Plugin"
+msgstr "外掛程å¼"
+
+#: commandplugin.cpp:43
+#, fuzzy
+msgid "&Command Plugin"
+msgstr "目錄外掛程å¼(&D)"
+
+#: commandplugin.cpp:54
+msgid "You did not specify a command to execute."
+msgstr ""
+
+#: commandplugin.cpp:69
+#, fuzzy
+msgid "<b>Command Plugin</b>"
+msgstr "<b>å½±åƒå¤–掛程å¼</b>"
+
+#: commandplugin.cpp:73
+msgid ""
+"<qt>Executes a shell command on every file after it has been renamed. Add %1 "
+"to the command line arguments to get the filename of the renamed file.</qt>"
+msgstr ""
+
+#: commandplugin.cpp:76
+msgid "Command:"
+msgstr ""
+
+#: commandplugin.cpp:81
+msgid "&Execute without blocking (not recommended)"
+msgstr ""
+
+#: commandplugin.cpp:84 replacedialog.cpp:71 helpdialog.cpp:98
+msgid "&Add"
+msgstr "新增(&A)"
+
+#: commandplugin.cpp:149
+msgid " exited with error: %1"
+msgstr ""
+
+#: replacedialog.cpp:39
+msgid "Find and Replace"
+msgstr "æœå°‹èˆ‡å–代"
+
+#: replacedialog.cpp:45
+#, fuzzy
+msgid "Find"
+msgstr "æœå°‹ï¼š"
+
+#: replacedialog.cpp:46
+#, fuzzy
+msgid "Replace With"
+msgstr "å–代為:"
+
+#: replacedialog.cpp:47
+#, fuzzy
+msgid "Regular Expression"
+msgstr "æ­£è¦å¼è¡¨é”å¼"
+
+#: replacedialog.cpp:58
+msgid "Find:"
+msgstr "æœå°‹ï¼š"
+
+#: replacedialog.cpp:60
+#, fuzzy
+msgid "Replace with:"
+msgstr "å–代為:"
+
+#: replacedialog.cpp:65
+#, fuzzy
+msgid "&Regular expression"
+msgstr "æ­£è¦å¼è¡¨é”å¼"
+
+#: replacedialog.cpp:67
+msgid "&Edit..."
+msgstr ""
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "yes"
+msgstr ""
+
+#: replacedialog.cpp:117 replacedialog.cpp:147
+msgid "no"
+msgstr ""
+
+#: replacedialog.cpp:131
+#, fuzzy
+msgid "Add a text that should be replaced."
+msgstr "新增一個以å–代的字串ï¼"
+
+#: replacedialog.cpp:138
+#, fuzzy
+msgid "You can't replace the same text twice."
+msgstr "您無法é‡è¦†å–代åŒæ¨£çš„字串ï¼"
+
+#: replacedialog.cpp:144
+#, fuzzy
+msgid "Regular expression"
+msgstr "æ­£è¦å¼è¡¨é”å¼"
+
+#: translitplugin.cpp:29
+msgid "Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:34
+msgid "&Transliteration Plugin"
+msgstr ""
+
+#: translitplugin.cpp:50
+#, fuzzy
+msgid ""
+"<qt>This plugin transliterates names written with non-english characters.</"
+"qt>"
+msgstr "此外掛程å¼æ›´å後排åºåœ¨å­—目錄中的檔案。"
+
+#: ProgressDialog.cpp:57
+msgid "Progress"
+msgstr "處ç†"
+
+#: ProgressDialog.cpp:70
+msgid "Messages"
+msgstr ""
+
+#: ProgressDialog.cpp:85
+#, fuzzy
+msgid "Restart KRename..."
+msgstr "é‡æ–°å•Ÿå‹•KRENAME"
+
+#: ProgressDialog.cpp:87
+#, fuzzy
+msgid "Rename Processed Files &Again..."
+msgstr "é‡æ–°æ›´å檔案(&A)"
+
+#: ProgressDialog.cpp:88
+#, fuzzy
+msgid "Rename Unprocessed Files &Again..."
+msgstr "é‡æ–°æ›´å檔案(&A)"
+
+#: ProgressDialog.cpp:89
+#, fuzzy
+msgid "Rename All Files &Again..."
+msgstr "é‡æ–°æ›´å檔案(&A)"
+
+#: ProgressDialog.cpp:91
+#, fuzzy
+msgid "&Rename More..."
+msgstr "å†åº¦æ›´å(&R)"
+
+#: ProgressDialog.cpp:96
+#, fuzzy
+msgid "&Open Destination..."
+msgstr "目的"
+
+#: ProgressDialog.cpp:164
+msgid "Error: %1"
+msgstr ""
+
+#: ProgressDialog.cpp:177
+msgid "Warning: %1"
+msgstr ""
+
+#: ProgressDialog.cpp:288
+msgid "User pressed cancel!"
+msgstr "使用者按下å–消éµï¼"
+
+#: ProgressDialog.cpp:289
+msgid "Aborting..."
+msgstr "正在放棄中..."
+
+#: ProgressDialog.cpp:344
+msgid "Undo: "
+msgstr ""
+
+#: ProgressDialog.cpp:348
+msgid "Undoing the renaming operation has been completed."
+msgstr ""
+
+#: confdialog.cpp:49 guimodeselector.cpp:52
+msgid "Look and Feel"
+msgstr ""
+
+#: confdialog.cpp:59 guimodeselector.cpp:65
+msgid "Use &wizard style GUI (beginners)"
+msgstr ""
+
+#: confdialog.cpp:61 guimodeselector.cpp:67
+msgid "Use &tabbed GUI (advanced users)"
+msgstr ""
+
+#: confdialog.cpp:63 guimodeselector.cpp:69
+msgid "Configure the look and feel of the KRename GUI:<br>"
+msgstr ""
+
+#: confdialog.cpp:74 main.cpp:49
+#, fuzzy
+msgid "KRename"
+msgstr "已更å"
+
+#: confdialog.cpp:79
+msgid "&Load file plugins on start"
+msgstr ""
+
+#: confdialog.cpp:80
+msgid "Auto &resize columns in preview"
+msgstr ""
+
+#: confdialog.cpp:84
+msgid "&Thumbnail size:"
+msgstr ""
+
+#: confdialog.cpp:88
+msgid "&Number of template history items:"
+msgstr ""
+
+#: confdialog.cpp:97
+msgid ""
+"Disabling this option decreases KRename's startup time, because no "
+"KFilePlugins are loaded."
+msgstr ""
+
+#: fileoperation.cpp:57
+#, fuzzy
+msgid "File %1 exists already!"
+msgstr "輸出檔案%1已存在。"
+
+#: fileoperation.cpp:79
+#, fuzzy
+msgid "Can't create symlinks on different hosts for file %1."
+msgstr "無法建立符號連接%1。"
+
+#: _translatorinfo.cpp:1
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "劉盛光"
+
+#: _translatorinfo.cpp:3
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+msgstr "stacker_liew@hotmail.com"
+
+#: numberdialog.cpp:48
+#, fuzzy
+msgid "&Numbering"
+msgstr "數字"
+
+#: numberdialog.cpp:57 krenameimpl.cpp:701
+#, fuzzy
+msgid "Start &index:"
+msgstr "啟始索引:"
+
+#: numberdialog.cpp:62
+#, fuzzy
+msgid "Step &by:"
+msgstr "步階:"
+
+#: numberdialog.cpp:64
+#, fuzzy
+msgid "&Reset counter for every directory"
+msgstr "目的目錄"
+
+#: numberdialog.cpp:67
+#, fuzzy
+msgid "S&kip Numbers"
+msgstr "跳越數字"
+
+#: numberdialog.cpp:77
+msgid "&Add Number"
+msgstr "新增數字(&A)"
+
+#: numberdialog.cpp:80
+msgid "&Remove Number"
+msgstr "移除數字(&R)"
+
+#: numberdialog.cpp:104
+msgid "Number of the first file."
+msgstr ""
+
+#: numberdialog.cpp:105
+msgid "The counter is increased/decreased by this value."
+msgstr "計數器是以此數值éžå¢ž/éžæ¸›ã€‚"
+
+#: numberdialog.cpp:106
+msgid ""
+"Add all numbers that should be skipped by krename during the rename process."
+"<br>E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ..."
+msgstr ""
+"新增所有在Krename處ç†éŽç¨‹ä¸­å°‡è¢«è·³è¶Šçš„數字。 <br>例如:若2將被跳越,則檔案將會"
+"被標示為:檔案0ã€æª”案1ã€æª”案3ã€..."
+
+#: numberdialog.cpp:108
+msgid ""
+"<qt>The counter is set to the start index in every directory. This setting "
+"applies to all used counters.</qt>"
+msgstr ""
+
+#: main.cpp:50
+#, fuzzy
+msgid ""
+"KRename is a batch file renamer which can rename a\n"
+"list of files based on a set of expressions.\n"
+"\n"
+"If you like KRename you may want to support it.\n"
+"Testing, bug fixes and feature request are as welcome\n"
+"as financial support (everybody needs money ;)\n"
+"See help files for details.\n"
+msgstr ""
+"Krename是一個批次檔案更å程å¼ï¼Œå®ƒå¯ä»¥åŸºæ–¼ä¸€å€‹è¡¨é”å¼ç‚ºä¸€é€£ä¸²æª”案更å。 "
+"<br><br><b>若您喜歡Krename也想支æŒå®ƒã€‚</b>測試ã€é™¤èŸ²ã€åŠŸèƒ½è«‹æ±‚〠<br>財務</"
+"br>æ´åŠ©(任何人都需è¦éŒ¢;))詳情請洽輔助檔案。<br><br>"
+
+#: main.cpp:62
+msgid "file will be added to the list of files for renaming"
+msgstr "檔案將會被加入到待更å的檔案列表中。"
+
+#: main.cpp:63
+msgid "add directory recursively"
+msgstr "éžè¿´æ–°å¢žç›®éŒ„"
+
+#: main.cpp:64
+#, fuzzy
+msgid "set a template"
+msgstr "範本:"
+
+#: main.cpp:65
+msgid "set a template for the file extension"
+msgstr ""
+
+#: main.cpp:66
+msgid "enable a plugin for use"
+msgstr ""
+
+#: main.cpp:67
+#, fuzzy
+msgid "copy files to directory"
+msgstr "複製檔案至目的目錄(&C)"
+
+#: main.cpp:68
+#, fuzzy
+msgid "move files to directory"
+msgstr "移動檔案至目的目錄(&M)"
+
+#: main.cpp:69
+msgid "load the profile named [profile] on startup"
+msgstr ""
+
+#: main.cpp:70
+msgid "start renaming immediately"
+msgstr ""
+
+#: main.cpp:71
+msgid "create no realtime preview"
+msgstr "建立無真實時間é è¦–"
+
+#: main.cpp:80
+msgid "Website, testing, very good ideas and keeping me coding!"
+msgstr "網站ã€æ¸¬è©¦ã€å¥½é»žå­åŠè®“我繼續寫程å¼ï¼"
+
+#: main.cpp:83
+msgid "Thanks to him for creating RedHat 7.x packages and some other help."
+msgstr "æ„Ÿè¬ä»–因為建立RedHat 7.X套件åŠä¸€äº›å…¶ä»–的輔助。"
+
+#: main.cpp:85
+#, fuzzy
+msgid ""
+"Fixed a bug with startIndex and added the BatchRenamer class\n"
+"to his excellent image viewer showimg."
+msgstr ""
+"修正一些startIndex的臭蟲åŠæ–°å¢žBatchRenamer類別至他的超棒影åƒé¡¯è¦–器showimg。"
+
+#: main.cpp:88
+msgid "Fixed a bug that caused krename not closing open files."
+msgstr "修正一個能夠導致Krenameä¸æœƒé—œé–‰æ‰€é–‹å•Ÿæª”案的臭蟲。"
+
+#: main.cpp:90
+msgid ""
+"Thanks for his great job at apps.kde.com and help with contributing krename "
+"to apps.kde.com."
+msgstr ""
+"æ„Ÿè¬ä»–在apps.kde.com裡的功勞,åŒæ™‚也感è¬ä»–幫助我把Krenameè²¢ç»äºˆapps.kde.com。"
+
+#: main.cpp:92
+msgid ""
+"Thanks for noatun and the ID3/Ogg Tag code is based on his noatun modules."
+msgstr "æ„Ÿè¬noatunåŠID3/Ogg,標籤程å¼ç¢¼æ˜¯åŸºæ–¼ä»–çš„noatun模組。"
+
+#: main.cpp:94
+msgid "Gave me a good start into writing plugins with his application scribus."
+msgstr "用他的scribus應用程å¼ï¼Œåœ¨æˆ‘寫外掛程å¼æ™‚給我一個好的開始點。"
+
+#: main.cpp:96
+msgid ""
+"Parts of the PNG support are copied from his KFile plugin for png support."
+msgstr "部份的PNG支æ´æ˜¯å¾žä»–çš„KFile給png支æ´çš„外掛程å¼è™•æŠ„éŽä¾†çš„。"
+
+#: main.cpp:98
+msgid "Created the Gentoo Ebuild scripts for Krename."
+msgstr "建立了Krename的Gentoo Ebuild的腳本。"
+
+#: main.cpp:100
+msgid "Some GCC 3.1 fixes for Gentoo."
+msgstr ""
+
+#: main.cpp:102
+msgid "Thanks for creating the Mandrake RPM"
+msgstr ""
+
+#: main.cpp:104
+msgid "Italian translation"
+msgstr ""
+
+#: main.cpp:105
+msgid "Provided a gcc3.x namespace patch"
+msgstr ""
+
+#: main.cpp:106
+msgid "Provided the new preview and move features"
+msgstr ""
+
+#: main.cpp:107
+msgid ""
+"Fixed problems with the spec file and contributed rpms for every SuSE "
+"version you can imagine and is also the new Gentoo maintainer for KRename"
+msgstr ""
+
+#: main.cpp:108
+msgid "Provided SuSE RPMs and very good suggestions"
+msgstr ""
+
+#: main.cpp:109
+msgid "Contributed a Spanish translation"
+msgstr ""
+
+#: main.cpp:110
+msgid "Provided a RedHat RPM and was big help in improving KRename"
+msgstr ""
+
+#: main.cpp:111
+msgid "Translated KRename to Japanese"
+msgstr ""
+
+#: main.cpp:112
+msgid "Translated KRename into French"
+msgstr ""
+
+#: main.cpp:113
+msgid "Translated KRename into Polish"
+msgstr ""
+
+#: main.cpp:114
+msgid "Translated KRename into Russian"
+msgstr ""
+
+#: main.cpp:115
+msgid "Translated KRename into Bosnian"
+msgstr ""
+
+#: main.cpp:133
+msgid ""
+"<b>Krename was started from root!</b><br>When started from root, Krename may "
+"damage your system if you do not know exactly what you are doing!"
+msgstr ""
+"<b>Krename以root開始ï¼</b><br>當以root開始時,若您ä¸å¤ªç¢ºå®šæ‚¨åœ¨åšä½•äº‹æ™‚,"
+"Krename å¯èƒ½æœƒå±å®³åˆ°æ‚¨çš„系統ï¼"
+
+#: pictureplugin.cpp:41
+msgid "Picture Plugin"
+msgstr "å½±åƒå¤–掛程å¼"
+
+#: pictureplugin.cpp:46
+msgid "P&icture Plugin"
+msgstr "å½±åƒå¤–掛程å¼(&I)"
+
+#: encodingplugin.cpp:37
+msgid "Encoding Conversion Plugin"
+msgstr ""
+
+#: encodingplugin.cpp:42
+msgid "&Encoding Conversion Plugin"
+msgstr ""
+
+#: encodingplugin.cpp:64
+msgid ""
+"<qt>This plugin is able to convert filenames between different encodings. "
+"For example you can convert filenames from KOI8-R to UTF-8 encoding.</qt>"
+msgstr ""
+
+#: encodingplugin.cpp:72
+msgid "Encoding of Input Files:"
+msgstr ""
+
+#: encodingplugin.cpp:73 encodingplugin.cpp:78
+msgid "&Use local encoding: %1"
+msgstr ""
+
+#: encodingplugin.cpp:77
+msgid "Encoding of Output Files:"
+msgstr ""
+
+#: helpdialog.cpp:89
+msgid "Token"
+msgstr ""
+
+#: helpdialog.cpp:90
+#, fuzzy
+msgid "Description"
+msgstr "目的"
+
+#: krenameimpl.cpp:80
+#, fuzzy
+msgid "F&iles"
+msgstr "新增檔案(&A)"
+
+#: krenameimpl.cpp:81
+#, fuzzy
+msgid "Des&tination"
+msgstr "目的"
+
+#: krenameimpl.cpp:82
+#, fuzzy
+msgid "P&lugins"
+msgstr "外掛程å¼"
+
+#: krenameimpl.cpp:83
+#, fuzzy
+msgid "File&name"
+msgstr "檔å"
+
+#: krenameimpl.cpp:302
+msgid "E&xtras"
+msgstr ""
+
+#: krenameimpl.cpp:303
+#, fuzzy
+msgid "&Profiles..."
+msgstr "新增檔案(&A)"
+
+#: krenameimpl.cpp:305
+msgid "&Undo Old Renaming Action..."
+msgstr ""
+
+#: krenameimpl.cpp:311
+msgid "&Load KDE file plugins"
+msgstr ""
+
+#: krenameimpl.cpp:312
+#, fuzzy
+msgid "&Reload Plugin Data"
+msgstr "目錄外掛程å¼(&D)"
+
+#: krenameimpl.cpp:348 kmylistview.cpp:86
+#, fuzzy
+msgid "&Add..."
+msgstr "新增(&A)"
+
+#: krenameimpl.cpp:351
+#, fuzzy
+msgid "Re&move"
+msgstr "移除檔案(&R)"
+
+#: krenameimpl.cpp:354
+msgid "R&emove All"
+msgstr "移除所有(&E)"
+
+#: krenameimpl.cpp:357
+msgid "Sort: Unsorted"
+msgstr ""
+
+#: krenameimpl.cpp:358
+msgid "Sort: Ascending"
+msgstr ""
+
+#: krenameimpl.cpp:359
+msgid "Sort: Descending"
+msgstr ""
+
+#: krenameimpl.cpp:360
+msgid "Sort: Random"
+msgstr ""
+
+#: krenameimpl.cpp:361
+msgid "Sort: Numeric"
+msgstr ""
+
+#: krenameimpl.cpp:364
+#, fuzzy
+msgid "&Preview"
+msgstr "é è¦–å½±åƒ(&I)"
+
+#: krenameimpl.cpp:375
+msgid "&Display name"
+msgstr ""
+
+#: krenameimpl.cpp:404
+#, fuzzy
+msgid "Add one or more files or directories"
+msgstr "新增一或多個檔案"
+
+#: krenameimpl.cpp:405
+msgid "Remove selected files"
+msgstr "移除所é¸å–的檔案"
+
+#: krenameimpl.cpp:406
+msgid "Remove all files"
+msgstr "移除所有檔案"
+
+#: krenameimpl.cpp:407
+msgid "Enable/disable preview of pictures."
+msgstr "打開/關閉影åƒé è¦–。"
+
+#: krenameimpl.cpp:408
+msgid "Displays the number of files in the list."
+msgstr "顯視列表中檔案的數目。"
+
+#: krenameimpl.cpp:409 krenameimpl.cpp:535
+msgid "Move selected items up"
+msgstr "å‘上移動é¸å–çš„é …ç›®"
+
+#: krenameimpl.cpp:410 krenameimpl.cpp:536
+msgid "Move selected items down"
+msgstr "å‘下移動é¸å–çš„é …ç›®"
+
+#: krenameimpl.cpp:411
+#, fuzzy
+msgid "Enable/disable display of file name."
+msgstr "打開/關閉影åƒé è¦–。"
+
+#: krenameimpl.cpp:412
+msgid "Move selected items (select the new location with the mouse)"
+msgstr ""
+
+#: krenameimpl.cpp:424
+msgid "O&ptions"
+msgstr ""
+
+#: krenameimpl.cpp:432
+msgid "&Rename input files"
+msgstr "æ›´å輸入檔案(&R)"
+
+#: krenameimpl.cpp:436
+#, fuzzy
+msgid "Cop&y files to destination directory"
+msgstr "複製檔案至目的目錄(&C)"
+
+#: krenameimpl.cpp:439
+msgid "&Move files to destination directory"
+msgstr "移動檔案至目的目錄(&M)"
+
+#: krenameimpl.cpp:442
+#, fuzzy
+msgid "Create symbolic &links in destination directory"
+msgstr "建立符號連接於目的目錄(&C)"
+
+#: krenameimpl.cpp:449
+msgid "&Overwrite existing files"
+msgstr "覆蓋已存在的檔案(&O)"
+
+#: krenameimpl.cpp:460
+msgid "&Undo Renaming"
+msgstr ""
+
+#: krenameimpl.cpp:462
+msgid "&Create an undo script"
+msgstr ""
+
+#: krenameimpl.cpp:467 undodialog.cpp:46
+msgid ""
+"*.krename|KRename undo scripts (*.krename)\n"
+"*|All Files (*)"
+msgstr ""
+
+#: krenameimpl.cpp:478
+msgid "Copies all files to the destination directory and renames them."
+msgstr "複製所有檔案至目的目錄並更å。"
+
+#: krenameimpl.cpp:479
+msgid "Moves all files to the destination directory and renames them."
+msgstr "移動所有檔案至目的目錄並更å。"
+
+#: krenameimpl.cpp:507
+msgid "Origin"
+msgstr "原始"
+
+#: krenameimpl.cpp:508
+msgid "Renamed"
+msgstr "已更å"
+
+#: krenameimpl.cpp:532
+msgid "Add a template.<br>Example: <i>picture###</i>"
+msgstr "新增一範本。<br>範例:<i>å½±åƒ###</i>"
+
+#: krenameimpl.cpp:533
+msgid ""
+"Add a template for the file extension.<br>It behaves like the filename "
+"template."
+msgstr "新增一範本予延伸檔å。<br>它就åƒæª”å範本。"
+
+#: krenameimpl.cpp:534
+#, fuzzy
+msgid ""
+"Checking this checkbox is the same as setting the extension template to $"
+msgstr "é¸å–æ­¤é¸å–盒與設定延伸範本至$是相åŒçš„。"
+
+#: krenameimpl.cpp:537
+msgid "Double click on an item to modify it."
+msgstr "雙擊一項目以更改它。"
+
+#: krenameimpl.cpp:538
+msgid "Help Dialog with all tokens supported by KRename."
+msgstr ""
+
+#: krenameimpl.cpp:539 krenameimpl.cpp:540
+msgid ""
+"<qt>Find and replace characters or part string of the source filename in the "
+"destination filename.</qt>"
+msgstr ""
+
+#: krenameimpl.cpp:541
+msgid ""
+"<qt>You can use \".gz\" and \".tar.gz\" as file extension of the file backup."
+"tar.gz depending on this setting.</qt>"
+msgstr ""
+
+#: krenameimpl.cpp:549
+#, fuzzy
+msgid "&Template:"
+msgstr "範本:"
+
+#: krenameimpl.cpp:560
+msgid "&Functions..."
+msgstr ""
+
+#: krenameimpl.cpp:564
+msgid "&Use extension of the input file"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: krenameimpl.cpp:569
+#, fuzzy
+msgid "Find &and Replace..."
+msgstr "æœå°‹èˆ‡å–代"
+
+#: krenameimpl.cpp:572
+#, fuzzy
+msgid "&Numbering..."
+msgstr "正在放棄中..."
+
+#: krenameimpl.cpp:573
+#, fuzzy
+msgid "&Insert Part of Filename..."
+msgstr "打開/關閉影åƒé è¦–。"
+
+#: krenameimpl.cpp:578
+#, fuzzy
+msgid "old filename"
+msgstr "檔å"
+
+#: krenameimpl.cpp:579
+msgid "old filename converted to lower case"
+msgstr ""
+
+#: krenameimpl.cpp:580
+msgid "old filename converted to upper case"
+msgstr ""
+
+#: krenameimpl.cpp:581
+msgid "first letter of every word upper case"
+msgstr ""
+
+#: krenameimpl.cpp:582
+msgid "first letter of filename upper case"
+msgstr ""
+
+#: krenameimpl.cpp:583
+msgid "number (try also ##, ###, ... for leading zeros)"
+msgstr ""
+
+#: krenameimpl.cpp:584
+msgid "counter with custom start value 0 and custom stepping 1"
+msgstr ""
+
+#: krenameimpl.cpp:585
+#, fuzzy
+msgid "create a subdirectory"
+msgstr "目的目錄"
+
+#: krenameimpl.cpp:586
+msgid "strip whitespaces leading and trailing"
+msgstr ""
+
+#: krenameimpl.cpp:587
+msgid "character x to y of old filename"
+msgstr ""
+
+#: krenameimpl.cpp:588
+msgid "y characters of old filename starting at x"
+msgstr ""
+
+#: krenameimpl.cpp:589
+#, fuzzy
+msgid "insert name of directory"
+msgstr "目的目錄"
+
+#: krenameimpl.cpp:590
+#, fuzzy
+msgid "insert name of parent directory"
+msgstr "目的目錄"
+
+#: krenameimpl.cpp:591
+#, fuzzy
+msgid "insert the length of the input filename"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: krenameimpl.cpp:592
+msgid "Built-in Functions:"
+msgstr ""
+
+#: krenameimpl.cpp:595
+msgid "Insert '$'"
+msgstr ""
+
+#: krenameimpl.cpp:596
+msgid "Insert '%'"
+msgstr ""
+
+#: krenameimpl.cpp:597
+msgid "Insert '&'"
+msgstr ""
+
+#: krenameimpl.cpp:598
+msgid "Insert '*'"
+msgstr ""
+
+#: krenameimpl.cpp:599
+msgid "Insert '/'"
+msgstr ""
+
+#: krenameimpl.cpp:600
+msgid "Insert '\\\\'"
+msgstr ""
+
+#: krenameimpl.cpp:601
+msgid "Insert '['"
+msgstr ""
+
+#: krenameimpl.cpp:602
+msgid "Insert ']'"
+msgstr ""
+
+#: krenameimpl.cpp:603
+msgid "Special Characters:"
+msgstr ""
+
+#: krenameimpl.cpp:640
+#, fuzzy
+msgid "File extension starts at:"
+msgstr "延伸啟始於"
+
+#: krenameimpl.cpp:657
+#, fuzzy
+msgid "&Filename"
+msgstr "檔å"
+
+#: krenameimpl.cpp:660
+#, fuzzy
+msgid "&Prefix:"
+msgstr "é è¦–å½±åƒ(&I)"
+
+#: krenameimpl.cpp:666
+msgid "&Suffix:"
+msgstr ""
+
+#: krenameimpl.cpp:673
+msgid "Convert to lower case "
+msgstr ""
+
+#: krenameimpl.cpp:674
+msgid "Convert to upper case"
+msgstr ""
+
+#: krenameimpl.cpp:675
+msgid "Capitalize"
+msgstr ""
+
+#: krenameimpl.cpp:677
+#, fuzzy
+msgid "&Name:"
+msgstr "數字"
+
+#: krenameimpl.cpp:679
+#, fuzzy
+msgid "Use original name"
+msgstr "é è¦–å½±åƒ(&I)"
+
+#: krenameimpl.cpp:681
+#, fuzzy
+msgid "Custom name"
+msgstr "自定點(&C)"
+
+#: krenameimpl.cpp:687
+#, fuzzy
+msgid "&Extension:"
+msgstr "延伸檔å"
+
+#: krenameimpl.cpp:689
+#, fuzzy
+msgid "Use original extension"
+msgstr "é è¦–å½±åƒ(&I)"
+
+#: krenameimpl.cpp:691
+#, fuzzy
+msgid "Custom extension"
+msgstr "延伸檔å"
+
+#: krenameimpl.cpp:698
+#, fuzzy
+msgid "&Number"
+msgstr "數字"
+
+#: krenameimpl.cpp:704
+#, fuzzy
+msgid "&Number of digits:"
+msgstr "數字"
+
+#: krenameimpl.cpp:707
+#, fuzzy
+msgid "&Find and Replace..."
+msgstr "æœå°‹èˆ‡å–代"
+
+#: krenameimpl.cpp:714 krenameimpl.cpp:718
+#, fuzzy
+msgid "Number"
+msgstr "數字"
+
+#: krenameimpl.cpp:715 krenameimpl.cpp:719
+#, fuzzy
+msgid "Date"
+msgstr "解壓縮"
+
+#: krenameimpl.cpp:744
+msgid ""
+"<qt>Insert a special KRename command which inserts file information into the "
+"filename.</qt>"
+msgstr ""
+
+#: krenameimpl.cpp:900
+msgid "&Use this plugin"
+msgstr "使用此外掛程å¼(&U)"
+
+#: krenameimpl.cpp:1005
+msgid "Starting conversion of %1 files."
+msgstr "開始轉æ›%1檔案。"
+
+#: krenameimpl.cpp:1049
+msgid "Specify a template to use for renaming files."
+msgstr "指定一範本以更å檔案。"
+
+#: krenameimpl.cpp:1053
+msgid "Please give a destination directory !"
+msgstr "請給予一目的目錄ï¼"
+
+#: krenameimpl.cpp:1058
+msgid "Please give the name of the undo script!"
+msgstr ""
+
+#: krenameimpl.cpp:1068
+msgid "Files: <b>%1</b>"
+msgstr "檔案:<b>%1</b>"
+
+#: krenameimpl.cpp:1165
+msgid "The directory %1 does not exist. KRename will create it for you."
+msgstr ""
+
+#: krenameimpl.cpp:1701
+#, fuzzy
+msgid "First Dot"
+msgstr "首個點(&F)"
+
+#: krenameimpl.cpp:1702
+#, fuzzy
+msgid "Last Dot"
+msgstr "尾個點(&L)"
+
+#: tabs.cpp:46
+msgid "&Finish"
+msgstr ""
+
+#: profiledlg.cpp:55
+msgid "KRename: Wizard default profile"
+msgstr ""
+
+#: profiledlg.cpp:56
+msgid "KRename: Tabbed default profile"
+msgstr ""
+
+#: profiledlg.cpp:395
+#, fuzzy
+msgid "Profiles"
+msgstr "處ç†"
+
+#: profiledlg.cpp:407
+#, fuzzy
+msgid "&Save As Profile..."
+msgstr "打開/關閉影åƒé è¦–。"
+
+#: profiledlg.cpp:408
+msgid "&Load Profile"
+msgstr ""
+
+#: profiledlg.cpp:409
+msgid "&Delete Profile"
+msgstr ""
+
+#: profiledlg.cpp:410
+msgid "&Use as default profile on startup"
+msgstr ""
+
+#: profiledlg.cpp:427
+msgid ""
+"<qt>Save KRename's current settings as a new profile. The settings are saved "
+"and can be restored with Load Profile later.</qt>"
+msgstr ""
+
+#: profiledlg.cpp:429
+msgid "<qt>Load all settings stored in this profile.</qt>"
+msgstr ""
+
+#: profiledlg.cpp:503
+msgid ""
+"Do you really want to load the profile and overwrite the current settings: %1"
+msgstr ""
+
+#: profiledlg.cpp:509
+msgid "The profile \"%1\" could not be found."
+msgstr ""
+
+#: profiledlg.cpp:529
+#, fuzzy
+msgid "Profile Name"
+msgstr "檔å"
+
+#: profiledlg.cpp:529
+#, fuzzy
+msgid "Please enter a name for the new profile:"
+msgstr "請輸入一個全新的檔å:"
+
+#: profiledlg.cpp:537
+msgid "This profile does already exist. Please choose another name."
+msgstr ""
+
+#: profiledlg.cpp:552
+msgid "You cannot delete default profiles!"
+msgstr ""
+
+#: profiledlg.cpp:557
+#, fuzzy
+msgid "Do you really want to delete the profile: %1"
+msgstr "您確實è¦é€€å‡ºKrenameï¹–"
+
+#: undodialog.cpp:33
+msgid "Undo Renaming"
+msgstr ""
+
+#: undodialog.cpp:39
+msgid "Undo script:"
+msgstr ""
+
+#: undodialog.cpp:51
+msgid ""
+"<qt>Undo Scripts are normal shell scripts which can also be executed "
+"manually from the command line.</qt>"
+msgstr ""
+
+#: undodialog.cpp:74
+msgid ""
+"This script does not seem to be a Krename undo script. Execution of this "
+"script can be dangerous. Continue ?"
+msgstr ""
+
+#: undodialog.cpp:86
+#, fuzzy
+msgid "Unable to start the given undo script!"
+msgstr "此延伸檔å啟始於所指定的點。"
+
+#: undodialog.cpp:118
+#, fuzzy
+msgid "Finished successfully"
+msgstr "æˆåŠŸæ›´å檔案%1。"
+
+#: dsdirselectdialog.cpp:46
+msgid "Add directory names &with filenames"
+msgstr ""
+
+#: dsdirselectdialog.cpp:47
+#, fuzzy
+msgid "Add subdirectories &recursively"
+msgstr "éžè¿´æ–°å¢žç›®éŒ„"
+
+#: dsdirselectdialog.cpp:51
+#, fuzzy
+msgid "Add &hidden directories"
+msgstr "新增目錄(&D)"
+
+#: dsdirselectdialog.cpp:53
+#, fuzzy
+msgid "Add directory names only"
+msgstr "éžè¿´æ–°å¢žç›®éŒ„"
+
+#: dsdirselectdialog.cpp:56
+msgid ""
+"Walk recursively through the directory tree and add also the content of all "
+"subdirectories to the list of files to rename."
+msgstr ""
+
+#: dsdirselectdialog.cpp:57
+msgid ""
+"If not checked, KRename will ignore directories starting with a dot during "
+"recursive adding."
+msgstr ""
+
+#: dsdirselectdialog.cpp:58
+msgid ""
+"Add only the directory names and not the names of the files in the directory "
+"to KRename."
+msgstr ""
+
+#: dsdirselectdialog.cpp:59
+msgid ""
+"This option causes KRename to add also the name of the base directory of the "
+"selected files to its list."
+msgstr ""
+
+#: permission.cpp:42
+msgid "Permissions"
+msgstr "權é™"
+
+#: permission.cpp:47
+msgid "&Permissions"
+msgstr "權é™(&P)"
+
+#: permission.cpp:78
+msgid "Access permissions"
+msgstr "å­˜å–權é™"
+
+#: permission.cpp:84
+msgid "Change &Permissions"
+msgstr "變更權é™(&P)"
+
+#: permission.cpp:86
+msgid "Class"
+msgstr "類別"
+
+#: permission.cpp:89
+msgid "Read"
+msgstr "讀å–"
+
+#: permission.cpp:92
+msgid "Write"
+msgstr "寫入"
+
+#: permission.cpp:95
+msgid "Exec"
+msgstr "執行"
+
+#: permission.cpp:101
+msgid "Special"
+msgstr "特殊"
+
+#: permission.cpp:104
+msgid "User"
+msgstr "使用者"
+
+#: permission.cpp:107
+msgid "Group"
+msgstr "群組"
+
+#: permission.cpp:110
+msgid "Others"
+msgstr "其他"
+
+#: permission.cpp:113
+#, fuzzy
+msgid "UID"
+msgstr "設定UID"
+
+#: permission.cpp:116
+#, fuzzy
+msgid "GID"
+msgstr "設定GID"
+
+#: permission.cpp:119
+msgid "Sticky"
+msgstr "é»è²¼"
+
+#: permission.cpp:135
+msgid "Change &Owner"
+msgstr "變更æ“有者(&O)"
+
+#: permission.cpp:137
+msgid "Ownership"
+msgstr "æ“有權"
+
+#: permission.cpp:149
+msgid "User:"
+msgstr "使用者:"
+
+#: permission.cpp:151
+msgid "Group:"
+msgstr "群組:"
+
+#: permission.cpp:248
+msgid "Can't chmod %1."
+msgstr "無法chmod%1。"
+
+#: permission.cpp:252
+msgid "Can't chown %1."
+msgstr "無法chown%1。"
+
+#: myinputdialog.cpp:37
+msgid "Please input a new filename:"
+msgstr "請輸入一個全新的檔å:"
+
+#: myinputdialog.cpp:45
+msgid "&Revert Changes"
+msgstr "åå‘改變(&R)"
+
+#: myinputdialog.cpp:49
+#, fuzzy
+msgid "Use &Input Filename"
+msgstr "請輸入一個全新的檔å:"
+
+#: myinputdialog.cpp:52
+msgid "&Ok"
+msgstr "確定(&O)"
+
+#: myinputdialog.cpp:75
+#, fuzzy
+msgid "Use the filename that is generated by KRename instead of your changes."
+msgstr "使用由Krename所產生的檔案以å–代您的更改。"
+
+#: mydirplugin.cpp:37
+msgid "Dir Plugin"
+msgstr "目錄外掛程å¼"
+
+#: mydirplugin.cpp:42
+msgid "&Dir Plugin"
+msgstr "目錄外掛程å¼(&D)"
+
+#: mydirplugin.cpp:71
+#, fuzzy
+msgid "<qt>This plugin sorts files after renaming in subdirectories.</qt>"
+msgstr "此外掛程å¼æ›´å後排åºåœ¨å­—目錄中的檔案。"
+
+#: mydirplugin.cpp:83
+#, fuzzy
+msgid "Files per directory:"
+msgstr "檔案/目錄:"
+
+#: mydirplugin.cpp:90
+msgid "Start index:"
+msgstr "啟始索引:"
+
+#: mydirplugin.cpp:105
+#, fuzzy
+msgid "Output &Directory"
+msgstr "輸出目錄"
+
+#: wizard.cpp:81
+msgid " - Step %1 of %2"
+msgstr ""
+
+#: kmylistbox.cpp:54
+#, fuzzy
+msgid "Please add some files..."
+msgstr "請新增更多檔案ï¼"
+
+#: dateplugin.cpp:111
+msgid "&System Functions"
+msgstr ""
+
+#: dateplugin.cpp:116
+msgid "System Functions"
+msgstr ""
+
+#: dateplugin.cpp:134
+#, fuzzy
+msgid "Insert the current date"
+msgstr "å–å¾—ç›®å‰æ—¥æœŸåŠæ™‚é–“(&G)"
+
+#: dateplugin.cpp:135
+msgid "Insert the current date using the formatting string yyyy-MM-dd"
+msgstr ""
+
+#: dateplugin.cpp:136
+msgid "Insert the current year"
+msgstr ""
+
+#: dateplugin.cpp:137
+#, fuzzy
+msgid "Insert the current month as number"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: dateplugin.cpp:138
+msgid "Insert the current day as number"
+msgstr ""
+
+#: dateplugin.cpp:139
+#, fuzzy
+msgid "Insert the current time"
+msgstr "å–å¾—ç›®å‰æ—¥æœŸåŠæ™‚é–“(&G)"
+
+#: dateplugin.cpp:140
+msgid "Insert the current hour as number"
+msgstr ""
+
+#: dateplugin.cpp:141
+msgid "Insert the current minute as number"
+msgstr ""
+
+#: dateplugin.cpp:142
+msgid "Insert the current second as number"
+msgstr ""
+
+#: dateplugin.cpp:143
+msgid "Insert your username"
+msgstr ""
+
+#: dateplugin.cpp:144
+msgid "Insert your groupname"
+msgstr ""
+
+#: dateplugin.cpp:145
+msgid "Insert the files creation date"
+msgstr ""
+
+#: dateplugin.cpp:146
+#, fuzzy
+msgid "Insert the formatted file creation date"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: dateplugin.cpp:147
+msgid "Insert the files modification date"
+msgstr ""
+
+#: dateplugin.cpp:148
+#, fuzzy
+msgid "Insert the formatted modification date"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: dateplugin.cpp:149
+#, fuzzy
+msgid "Insert the date of the last file access"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: dateplugin.cpp:150
+#, fuzzy
+msgid "Insert the formatted date of the last file access"
+msgstr "使用輸入檔案的延伸檔å(&U)"
+
+#: kmylistview.cpp:81
+msgid "&Change Filename Manually"
+msgstr ""
+
+#: coorddialog.cpp:63
+msgid "&Invert selection"
+msgstr ""
+
+#: coorddialog.cpp:66
+msgid "Please select the text you want to insert:"
+msgstr ""
+
+#: coorddialog.cpp:129
+#, fuzzy
+msgid "Preview: "
+msgstr "é è¦–å½±åƒ(&I)"
+
+#: datetime.cpp:44
+msgid "Date & Time"
+msgstr "日期與時間"
+
+#: datetime.cpp:49
+msgid "Date && &Time"
+msgstr "日期與時間(&T)"
+
+#: datetime.cpp:81
+msgid "Change &access date && time"
+msgstr "變更存å–日期åŠæ™‚é–“(&A)"
+
+#: datetime.cpp:84
+msgid "Change &modification date && time"
+msgstr "變更修改日期åŠæ™‚é–“(&M)"
+
+#: datetime.cpp:87
+msgid "Time:"
+msgstr "時間:"
+
+#: datetime.cpp:90
+msgid "h"
+msgstr "å°æ™‚"
+
+#: datetime.cpp:94
+msgid "min"
+msgstr "分é˜"
+
+#: datetime.cpp:98
+msgid "s"
+msgstr "秒é˜"
+
+#: datetime.cpp:102
+#, fuzzy
+msgid "&Get Current Date && Time"
+msgstr "å–å¾—ç›®å‰æ—¥æœŸåŠæ™‚é–“(&G)"
+
+#: datetime.cpp:152 datetime.cpp:168 datetime.cpp:171 datetime.cpp:177
+#: datetime.cpp:192 datetime.cpp:207 datetime.cpp:210 datetime.cpp:223
+msgid "Can't change date of file %1."
+msgstr "無法變更檔案%1日期。"
+
+#: fileplugin.cpp:140
+#, fuzzy
+msgid "Supported tokens:"
+msgstr "支æ´çš„å½±åƒæ ¼å¼ï¼š"
+
+#~ msgid ""
+#~ "Number of the first file.<br>The files are always numbered the same way "
+#~ "as they are shown in the result list."
+#~ msgstr ""
+#~ "首個檔案的數字。<br>此檔案總是以它們顯示在æˆæžœåˆ—表中的åŒæ¨£æ–¹å¼æ¨™æ•¸ã€‚"
+
+#~ msgid "Krename"
+#~ msgstr "Krename"
+
+#~ msgid "&Save Settings"
+#~ msgstr "儲存設定(&S)"
+
+#, fuzzy
+#~ msgid "&Destination Directory"
+#~ msgstr "目的目錄"
+
+#, fuzzy
+#~ msgid "&Previous Name:"
+#~ msgstr "é è¦–å½±åƒ(&I)"
+
+#, fuzzy
+#~ msgid "Setup Filename"
+#~ msgstr "檔å"
+
+#, fuzzy
+#~ msgid "&Easy Mode..."
+#~ msgstr "å†åº¦æ›´å(&R)"
+
+#, fuzzy
+#~ msgid "Add Direct&ory..."
+#~ msgstr "新增目錄(&D)"
+
+#, fuzzy
+#~ msgid "&Rename Directory..."
+#~ msgstr "å†åº¦æ›´å(&R)"
+
+#, fuzzy
+#~ msgid "Add all files of a directory. Adding recursively is possible, too."
+#~ msgstr "éžè¿´æ–°å¢žç›®éŒ„裡的所有檔案,<br>å³æ˜¯æ‰€æœ‰å­ç›®éŒ„裡的所有檔案"
+
+#~ msgid "The given destination directory does not exist!"
+#~ msgstr "所給予的目的目錄ä¸å­˜åœ¨ï¼"
+
+#~ msgid "&Add Files"
+#~ msgstr "新增檔案(&A)"
+
+#~ msgid "Add &Directory"
+#~ msgstr "新增目錄(&D)"
+
+#, fuzzy
+#~ msgid "&Remove File"
+#~ msgstr "移除檔案(&R)"
+
+#~ msgid "FileOperation"
+#~ msgstr "FileOperation"
+
+#~ msgid "KMyIntSpinBox"
+#~ msgstr "KMyIntSpinBox"
+
+#, fuzzy
+#~ msgid "NumberDialog"
+#~ msgstr "SkipDialog"
+
+#~ msgid "KMyHistoryCombo"
+#~ msgstr "KMyHistoryCombo"
+
+#~ msgid "ReplaceDialog"
+#~ msgstr "ReplaceDialog"
+
+#~ msgid "KMyListBox"
+#~ msgstr "KMyListBox"
+
+#~ msgid "MyInputDialog"
+#~ msgstr "MyInputDialog"
+
+#, fuzzy
+#~ msgid "CommandPlugin"
+#~ msgstr "外掛程å¼"
+
+#~ msgid "Plugin"
+#~ msgstr "外掛程å¼"
+
+#, fuzzy
+#~ msgid "UndoDialog"
+#~ msgstr "ConfDialog"
+
+#~ msgid "MyDirPlugin"
+#~ msgstr "MyDirPlugin"
+
+#~ msgid "MyPermPlugin"
+#~ msgstr "MyPermPlugin"
+
+#~ msgid "KMyListView"
+#~ msgstr "KMyListView"
+
+#~ msgid "PicturePlugin"
+#~ msgstr "å½±åƒå¤–掛程å¼"
+
+#~ msgid "MyDatePlugin"
+#~ msgstr "MyDataPlugin"
+
+#~ msgid "wizard"
+#~ msgstr "ç²¾éˆ"
+
+#, fuzzy
+#~ msgid "FilePlugin"
+#~ msgstr "外掛程å¼"
+
+#, fuzzy
+#~ msgid "HelpDialog"
+#~ msgstr "SkipDialog"
+
+#, fuzzy
+#~ msgid "CoordDialog"
+#~ msgstr "ConfDialog"
+
+#, fuzzy
+#~ msgid "KRenameImpl"
+#~ msgstr "已更å"
+
+#~ msgid "ConfDialog"
+#~ msgstr "ConfDialog"
+
+#~ msgid "ProgressDialog"
+#~ msgstr "ProgressDialog"
+
+#~ msgid "Rename output files again"
+#~ msgstr "é‡æ–°æ›´å輸出檔案"
+
+#, fuzzy
+#~ msgid "&Append number"
+#~ msgstr "新增數字(&A)"
+
+#~ msgid "Creating symbolic links in: %1"
+#~ msgstr "建立符號連接於:%1"
+
+#~ msgid ""
+#~ "A symbolic link will be created in the destination directory for each "
+#~ "file."
+#~ msgstr "將會為æ¯å€‹æª”案建立一個符號連接於目的目錄中。"
+
+#~ msgid "Renaming %1 files."
+#~ msgstr "正在更改%1檔案å稱。"
+
+#~ msgid "Overwriting file %1."
+#~ msgstr "覆蓋檔案%1。"
+
+#~ msgid "Can't rename %1 to %2."
+#~ msgstr "無法將檔案%1æ›´å至%2。"
+
+#~ msgid "If the filename is file.tar.bz2, .tar.bz2 is used as file extension."
+#~ msgstr "若此檔案是.tar.bz2檔,則.tar.bz2將會被使用為延伸檔å。"
+
+#~ msgid "If the filename is file.tar.bz2, .bz2 is used as file extension."
+#~ msgstr "若此檔案為.tar.bz2,則.bz2將會被使用為延伸檔å。"
+
+#~ msgid "The file extension starts at the given dot."
+#~ msgstr "此延伸檔å啟始於所指定的點。"
+
+#~ msgid "Can't overwrite %1."
+#~ msgstr "無法覆蓋%1。"
+
+#~ msgid "<b>Picture Plugin</b>"
+#~ msgstr "<b>å½±åƒå¤–掛程å¼</b>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt>Rename pictures using information like their resolution or color mode."
+#~ "</qt>"
+#~ msgstr "使用影åƒçš„解æžåº¦æˆ–色彩模å¼çš„資訊來更åå½±åƒã€‚"
+
+#, fuzzy
+#~ msgid "<qt>This plugin supports the following tokens:</qt>"
+#~ msgstr "此外掛程å¼æ”¯æ´ä»¥ä¸‹å–代符號:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt><b>[resolution]</b> insert resolution<br><b>[xres]</b> insert x "
+#~ "resolution<br></qt>"
+#~ msgstr ""
+#~ "<b>[解æžåº¦]</b>æ’入解æžåº¦<br><b>[x解æžåº¦]</b>æ’å…¥x解æžåº¦<br><b>[y解æžåº¦]</"
+#~ "b> æ’å…¥y解æžåº¦<br><b>[壓縮]</b>æ’入壓縮模å¼(僅é™PNG)<br>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<qt><b>[yres]</b> insert y resolution<br><b>[bitdepth]</b> insert "
+#~ "bitdepth<br></qt>"
+#~ msgstr ""
+#~ "<b>[註解]</b>æ’入註解<br><b>[ä½å…ƒæ·±åº¦]</b>æ’å…¥ä½å…ƒæ·±åº¦<br><b>[色彩模å¼]</"
+#~ "b> æ’入色彩模å¼(僅é™PNG)<br>"
+
+#~ msgid "Supported image formats: "
+#~ msgstr "支æ´çš„å½±åƒæ ¼å¼ï¼š"
+
+#~ msgid ""
+#~ "Drag files or directories into this list to add them.<br>Double click on "
+#~ "a file to open it."
+#~ msgstr "拖曳檔案或目錄至此列表中以新增它們,<br>雙擊檔案以開啟它。"
+
+#, fuzzy
+#~ msgid "minute"
+#~ msgstr "分é˜"
+
+#, fuzzy
+#~ msgid "MetaInfoDialog"
+#~ msgstr "ConfDialog"
+
+#, fuzzy
+#~ msgid "Add Dir Recursivel&y..."
+#~ msgstr "éžè¿´æ–°å¢žç›®éŒ„(&Y)"
+
+#~ msgid "Add all files of a directory"
+#~ msgstr "新增目錄裡的所有檔案"
+
+#~ msgid ""
+#~ "Please install the kdeutils package to use the regular expressions editor."
+#~ msgstr "請安è£KDEUTILS套件以使用正è¦è¡¨é”å¼ç·¨è¼¯å™¨ã€‚"
+
+#, fuzzy
+#~ msgid ""
+#~ "<b>$</b> old filename<br><b>%</b> old filename converted to lower "
+#~ "case<br><b>&</b> old filename converted to upper case<br><b>*</b> first "
+#~ "letter of every word uppercase<br><b>#</b> Adds a number to the filename "
+#~ "(add more #'s for leading zeros)<br><b>/</b> creates a subdirectory<br><b>"
+#~ "[x-y]</b> Characters x to y of the old filename<br><b>[%x-y]</b> "
+#~ "Characters x to y converted to lower case"
+#~ msgstr ""
+#~ "<u>åˆæ³•å–代符號為:</u><br><b>$</b>舊檔å<br><b>%</b>舊檔å轉æ›è‡³å°å¯« "
+#~ "<br><b>&</b>舊檔å轉æ›è‡³å¤§å¯«<br><b>*</b>首字大寫<br><b>#</b>新增一數字至檔"
+#~ "å<br> <b>[x-y]</b>舊檔åçš„å­—å…ƒx至y<br><b>[%x-y]</b>å­—å…ƒx至y轉æ›è‡³å°å¯«"
+#~ "<br> <b>[date]</b>新增目å‰æ—¥æœŸè‡³æª”å<br><b>[year],[month],[day],[time],"
+#~ "[hour], [minute],[second]</b>"
+
+#~ msgid "Start Index:"
+#~ msgstr "啟始索引:"
+
+#~ msgid "ERROR: %1"
+#~ msgstr "錯誤:%1"
+
+#~ msgid "WARNING: %1"
+#~ msgstr "警示:%1"
+
+#~ msgid "Visible Plugins"
+#~ msgstr "å¯è¦–外掛程å¼"
+
+#~ msgid "Invisible Plugins"
+#~ msgstr "ä¸å¯è¦–外掛程å¼"
+
+#~ msgid "&Save As..."
+#~ msgstr "å¦å­˜æ–°æª”(&S)..."
+
+#~ msgid "Save output in a text file."
+#~ msgstr "儲存輸出至文字檔。"
+
+#~ msgid "Saved output to file %1."
+#~ msgstr "儲存輸出至檔案%1。"
+
+#~ msgid "RegExp:"
+#~ msgstr "RegExp:"
+
+#~ msgid "SkipDialog"
+#~ msgstr "SkipDialog"
+
+#, fuzzy
+#~ msgid "&Visible Pages"
+#~ msgstr "å¯è¦–外掛程å¼"
+
+#, fuzzy
+#~ msgid "&Visible Plugins"
+#~ msgstr "å¯è¦–外掛程å¼"
+
+#~ msgid "Skip &Numbers"
+#~ msgstr "跳越數字(&N)"
+
+#~ msgid "&Find and replace"
+#~ msgstr "æœå°‹èˆ‡å–代(&F)"
+
+#~ msgid "Select numbers that should be skipped."
+#~ msgstr "é¸å–è¦è·³è¶Šçš„數字。"
+
+#, fuzzy
+#~ msgid "ExtensionDialog"
+#~ msgstr "ConfDialog"
+
+#, fuzzy
+#~ msgid "MyHelpCombo"
+#~ msgstr "KMyHistoryCombo"
+
+#~ msgid "Preferences"
+#~ msgstr "å好"
+
+#, fuzzy
+#~ msgid "&File Extension Handling..."
+#~ msgstr "延伸檔å"
+
+#~ msgid ""
+#~ "File %1 cannot be added to the list because it is already in the list."
+#~ msgstr "檔案%1無法新增至列表中因為它已存在列表中。"
+
+#~ msgid "O&K to all"
+#~ msgstr "確定所有(&K)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Directory %1 cannot be added to the list because it is already in the "
+#~ "list."
+#~ msgstr "檔案%1無法新增至列表中因為它已存在列表中。"
+
+#, fuzzy
+#~ msgid "&Default"
+#~ msgstr "解壓縮"
+
+#~ msgid "A&bout"
+#~ msgstr "關於(&B)"
+
+#, fuzzy
+#~ msgid "number"
+#~ msgstr "數字"
+
+#~ msgid "add dir to plugin path"
+#~ msgstr "新增目錄至外掛程å¼è·¯å¾‘"
+
+#~ msgid "(No Genre)"
+#~ msgstr "(ç„¡Genre)"
+
+#~ msgid "Mp3/Ogg Renamer"
+#~ msgstr "MP3/OGGæ›´å器"
+
+#~ msgid "&Mp3/Ogg Renamer"
+#~ msgstr "MP3/OGGæ›´å器(&M)"
+
+#~ msgid "<b>MP3/Ogg Vorbis Plugin</b>"
+#~ msgstr "<b>MP3/OGG VORBIS外掛程å¼</b>"
+
+#~ msgid ""
+#~ "Rename MP3 or Ogg Vorbis files based on the contents of their ID3 tags."
+#~ msgstr "以ID3標籤內容更åMP3或OGG VORBIS檔案。"
+
+#~ msgid ""
+#~ "<b>[artist]</b> insert Artist<br><b>[title]</b> insert Title<br><b>[album]"
+#~ "</b> insert Album<br><b>[mp3year]</b> insert Year<br><b>[comment]</b> "
+#~ "insert Comment<br>"
+#~ msgstr ""
+#~ "<b>[歌手]</b>æ’入歌手<br><b>[æ­Œå]</b>æ’入歌å<br><b>[專輯]</b>æ’入專輯"
+#~ "<br> <b>[mp3年份]</b>æ’入年份<br><b>[註解]</b>æ’入註解<br>"
+
+#~ msgid ""
+#~ "<b>[genre]</b> insert Genre<br><b>[copyright]</b> insert Copyright (OGG "
+#~ "only)<br><b>[organization]</b> insert Organization (OGG only)<br><b>"
+#~ "[location]</b> insert Location (OGG only)<br>"
+#~ msgstr ""
+#~ "<b>[genre]</b>æ’å…¥Genre<br><b>[版權]</b>æ’入版權(僅é™OGG)<br><b>[組織]</"
+#~ "b> æ’入組織(僅é™OGG)<br><b>[地å€]</b>æ’入地å€(僅é™OGG)<br>"
+
+#~ msgid ""
+#~ "The <b>Mp3/Ogg Renamer</b> plugin was written by:<br>Dominik Seichter "
+#~ "domseichter@web.de"
+#~ msgstr ""
+#~ "æ­¤<b>MP3/OGGæ›´å器</b>外掛程å¼æ˜¯ç”±ï¼šDominik Seichter domseichter@web.de所"
+#~ "撰寫"
+
+#, fuzzy
+#~ msgid "Can't open file: "
+#~ msgstr "無法開啟檔案:%1"
+
+#~ msgid "Grayscale"
+#~ msgstr "ç°éšŽ"
+
+#~ msgid "Unknown"
+#~ msgstr "未知"
+
+#~ msgid "RGB"
+#~ msgstr "RGB"
+
+#~ msgid "Palette"
+#~ msgstr "色盤"
+
+#~ msgid "Grayscale/Alpha"
+#~ msgstr "ç°éšŽ/ALPHA"
+
+#~ msgid "RGB/Alpha"
+#~ msgstr "RGB/ALPHA"
+
+#~ msgid "Adding Files"
+#~ msgstr "正在新增檔案"
+
+#~ msgid "Advanced Options"
+#~ msgstr "進階é¸é …"
+
+#~ msgid "&Preferences"
+#~ msgstr "å好(&P)"
+
+#~ msgid ""
+#~ "<u>Decription:</u><br>\n"
+#~ "Uncheck this checkbox to change the file extension manually."
+#~ msgstr ""
+#~ "<u>說明:</u><br>\n"
+#~ "åé¸æ­¤é¸å–盒以手動更改延伸檔å。"
diff --git a/stamp-h.in b/stamp-h.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stamp-h.in
diff --git a/subdirs b/subdirs
new file mode 100644
index 0000000..cc16503
--- /dev/null
+++ b/subdirs
@@ -0,0 +1,3 @@
+doc
+krename
+po