macro_optional_add_subdirectory (libkscreen)
# FIXME: make kget find libktorrent
macro_optional_add_subdirectory (libktorrent)
+macro_optional_add_subdirectory (kcharselect)
+macro_optional_add_subdirectory (kcolorchooser)
macro_optional_add_subdirectory (kfloppy)
macro_optional_add_subdirectory (kget)
macro_optional_add_subdirectory (kgpg)
--- /dev/null
+project(kcharselect)
+
+########### next target ###############
+
+if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+ find_package(KDE4)
+ include( KDE4Defaults )
+ include_directories(${KDE4_INCLUDES})
+
+ add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
+ add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
+
+ # If definitions like -D_GNU_SOURCE are needed for these checks they
+ # should be added to _KDE4_PLATFORM_DEFINITIONS when it is originally
+ # defined outside this file. Here we include these definitions in
+ # CMAKE_REQUIRED_DEFINITIONS so they will be included in the build of
+ # checks below.
+ set( CMAKE_REQUIRED_DEFINITIONS ${_KDE4_PLATFORM_DEFINITIONS} )
+endif()
+
+set(kcharselect_SRCS kcharselectdia.cc main.cc )
+
+kde4_add_app_icon(kcharselect_SRCS "${KDE4_INSTALL_DIR}/share/icons/oxygen/*/apps/accessories-character-map.png")
+
+kde4_add_executable(kcharselect ${kcharselect_SRCS})
+
+target_link_libraries(kcharselect ${KDE4_KDEUI_LIBS} )
+
+install(TARGETS kcharselect ${INSTALL_TARGETS_DEFAULT_ARGS} )
+
+########### install files ###############
+
+install( PROGRAMS KCharSelect.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+install( FILES kcharselectui.rc DESTINATION ${DATA_INSTALL_DIR}/kcharselect)
+
+kde4_install_icons( ${ICON_INSTALL_DIR} )
--- /dev/null
+NOTE! The GPL below is copyrighted by the Free Software Foundation, but
+the instance of code that it refers to (the kde programs) are copyrighted
+by the authors who actually wrote it.
+
+---------------------------------------------------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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.
+\f
+ 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.)
+\f
+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.
+\f
+ 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.
+\f
+ 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
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 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
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+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 and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard. To achieve this, non-free programs must
+be allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, 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 library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete 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 distribute a copy of this License along with the
+Library.
+
+ 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.
+\f
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+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 Library, 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 Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+\f
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you 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.
+
+ If distribution of 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 satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be 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.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library 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.
+
+ 9. 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 Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+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 with
+this License.
+\f
+ 11. 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 Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library 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 Library.
+
+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.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library 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.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser 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 Library
+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 Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+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
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "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
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. 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 LIBRARY 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
+LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
--- /dev/null
+## This file should be placed in the root directory of your project.
+## Then modify the CMakeLists.txt file in the root directory of your
+## project to incorporate the testing dashboard.
+## # The following are required to uses Dart and the Cdash dashboard
+## ENABLE_TESTING()
+## INCLUDE(CTest)
+set(CTEST_PROJECT_NAME "kcharselect")
+set(CTEST_NIGHTLY_START_TIME "20:00:00 CET")
+
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "my.cdash.org")
+set(CTEST_DROP_LOCATION "/submit.php?project=kcharselect")
+set(CTEST_DROP_SITE_CDASH TRUE)
--- /dev/null
+[Desktop Entry]
+GenericName=Character Selector
+GenericName[af]=Karakter Kiesser
+GenericName[ar]=أداة اختيار الرموز
+GenericName[ast]=Seleutor de carauter
+GenericName[bg]=Избор на знаци
+GenericName[br]=Dibaber arouezenn
+GenericName[bs]=Birač znakova
+GenericName[ca]=Selector de caràcters
+GenericName[ca@valencia]=Selector de caràcters
+GenericName[cs]=Výběr znaků
+GenericName[cy]=Dewisydd Nod
+GenericName[da]=Tegnvælger
+GenericName[de]=Tabelle zur Zeichenauswahl
+GenericName[el]=Επιλογέας χαρακτήρων
+GenericName[en_GB]=Character Selector
+GenericName[eo]=Elektilo por signoj
+GenericName[es]=Selector de caracteres
+GenericName[et]=Sümbolite valija
+GenericName[eu]=Karaktere-hautatzailea
+GenericName[fa]=گزیننده نویسه
+GenericName[fi]=Merkkivalitsin
+GenericName[fr]=Sélecteur de caractères
+GenericName[ga]=Roghnóir Carachtar
+GenericName[gl]=Selector de caracteres
+GenericName[he]=בוחר תווים
+GenericName[hne]=अक्छर चुनइया
+GenericName[hr]=Izbor znakova
+GenericName[hu]=Karakterválasztó
+GenericName[ia]=Selector de character
+GenericName[id]=Selektor Karakter
+GenericName[is]=Stafaval
+GenericName[it]=Selettore di caratteri
+GenericName[ja]=文字の選択
+GenericName[kk]=Таңба тергіш
+GenericName[km]=កម្មវិធីជ្រើសតួអក្សរ
+GenericName[ko]=문자 선택기
+GenericName[lt]=Simbolių parinkimas
+GenericName[lv]=Rakstzīmju atlasītājs
+GenericName[mk]=Избирач на знаци
+GenericName[mr]=अक्षर निवड
+GenericName[ms]=Character Selector
+GenericName[nb]=Tegnvelger
+GenericName[nds]=Tekenköör
+GenericName[ne]=क्यारेक्टर चयनकर्ता
+GenericName[nl]=Speciale tekens
+GenericName[nn]=Teiknveljar
+GenericName[pa]=ਅੱਖਰ ਚੋਣਕਾਰ
+GenericName[pl]=Wybór pojedynczego znaku
+GenericName[pt]=Selector de Caracteres
+GenericName[pt_BR]=Seletor de caracteres
+GenericName[ro]=Selector de caractere
+GenericName[ru]=Выбор символа
+GenericName[sk]=Výber znakov
+GenericName[sl]=Izbirnik znakov
+GenericName[sq]=Zgjedhës i Gërmave
+GenericName[sr]=Бирач знакова
+GenericName[sr@ijekavian]=Бирач знакова
+GenericName[sr@ijekavianlatin]=Birač znakova
+GenericName[sr@latin]=Birač znakova
+GenericName[sv]=Teckenväljare
+GenericName[ta]= எழுத்து தேர்ந்தெடுப்பான்
+GenericName[tg]=Интихобгари Аломатҳо
+GenericName[th]=เครื่องมือเลือกอักขระ
+GenericName[tr]=Karakter Seçici
+GenericName[ug]=ھەرپ تاللىغۇچ
+GenericName[uk]=Таблиця символів
+GenericName[uz]=Harf tanlagich
+GenericName[uz@cyrillic]=Ҳарф танлагич
+GenericName[vi]=Trình Chọn Kí Tự
+GenericName[wa]=Tchoezixheu di caracteres
+GenericName[xh]=Umkhethi womsebenzi
+GenericName[x-test]=xxCharacter Selectorxx
+GenericName[zh_CN]=字符选择器
+GenericName[zh_TW]=字元選擇器
+Exec=kcharselect -caption %c
+Icon=accessories-character-map
+Type=Application
+Terminal=false
+X-DocPath=kcharselect/index.html
+Name=KCharSelect
+Name[af]=Kcharselect
+Name[ar]=منتقي الحروف ك
+Name[ast]=KCharSelect
+Name[bg]=CharSelect
+Name[br]=KCharSelect
+Name[bs]=KCharSelect
+Name[ca]=KCharSelect
+Name[ca@valencia]=KCharSelect
+Name[cs]=KCharSelect
+Name[cy]=KDewisNod
+Name[da]=KCharSelect
+Name[de]=KCharSelect
+Name[el]=KCharSelect
+Name[en_GB]=KCharSelect
+Name[eo]=KCharSelect
+Name[es]=KCharSelect
+Name[et]=KCharSelect
+Name[eu]=KCharSelect
+Name[fi]=KCharSelect
+Name[fr]=KCharSelect
+Name[ga]=KCharSelect
+Name[gl]=KCharSelect
+Name[he]=KCharSelect
+Name[hne]=के-चर-सलेक्ट
+Name[hr]=KCharSelect
+Name[hu]=KCharSelect
+Name[ia]=KCharSelect
+Name[id]=KCharSelect
+Name[is]=KCharSelect
+Name[it]=KCharSelect
+Name[ja]=KCharSelect
+Name[kk]=KCharSelect
+Name[km]=KCharSelect
+Name[ko]=KCharSelect
+Name[lt]=KCharSelect
+Name[lv]=KCharSelect
+Name[mk]=KCharSelect
+Name[mr]=के-कॅर-सिलेक्ट
+Name[ms]=KCharSelect
+Name[nb]=KCharSelect
+Name[nds]=KCharSelect
+Name[ne]=केडीई क्यारेक्टर चयन
+Name[nl]=Speciale tekens
+Name[nn]=KCharSelect
+Name[pa]=ਕੇ-ਅੱਖਰ ਚੁਣੋ
+Name[pl]=Wybór znaków
+Name[pt]=KCharSelect
+Name[pt_BR]=KCharSelect
+Name[ro]=KCharSelect
+Name[ru]=KCharSelect
+Name[sk]=KCharSelect
+Name[sl]=KCharSelect
+Name[sq]=KCharSelect
+Name[sr]=К‑бирач-знакова
+Name[sr@ijekavian]=К‑бирач-знакова
+Name[sr@ijekavianlatin]=K‑birač-znakova
+Name[sr@latin]=K‑birač-znakova
+Name[sv]=Kcharselect
+Name[ta]= கேஎழுத்துதேர்வு
+Name[tg]=KИнтихобгари Аломатҳо
+Name[th]=เลือกอักขระ-K
+Name[tr]=KCharSelect
+Name[ug]=KCharSelect
+Name[uk]=KCharSelect
+Name[uz]=KCharSelect
+Name[uz@cyrillic]=KCharSelect
+Name[vi]=KCharSelect
+Name[wa]=KCharSelect
+Name[xh]=Itshati yokukheta i K
+Name[x-test]=xxKCharSelectxx
+Name[zh_CN]=KCharSelect
+Name[zh_TW]=KDE 字元選擇
+X-KDE-StartupNotify=true
+X-DBUS-StartupType=Multi
+Categories=Qt;KDE;Utility;
--- /dev/null
+/** @mainpage kcharselect
+
+The kcharselect application
+
+*/
+
+// DOXYGEN_REFERENCES = kdecore
+// DOXYGEN_SET_PROJECT_NAME = kcharselect
--- /dev/null
+#! /bin/sh
+$EXTRACTRC *.rc >> rc.cpp
+$XGETTEXT *.cc *.cpp -o $podir/kcharselect.pot
--- /dev/null
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# This script generates a data file containing all Unicode information needed by KCharSelect.
+#
+#############################################################################
+# Copyright (C) 2007 Daniel Laidig <d.laidig@gmx.de>
+#
+# This script is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This script 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
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; see the file COPYING.LIB. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#############################################################################
+#
+# The current directory must contain the following files that can be found at
+# http://www.unicode.org/Public/UNIDATA/:
+# - UnicodeData.txt
+# - Unihan_Readings.txt (you need to uncompress it from Unihan.zip)
+# - NamesList.txt
+# - Blocks.txt
+#
+# The generated file is named "kcharselect-data" and has to be put in kdelibs/kdeui/widgets/.
+# Additionally a translation dummy named "kcharselect-translation.cpp" is generated and has
+# to be placed in the same directory.
+#
+# FILE STRUCTURE
+#
+# The generated file is a binary file. The first 40 bytes are the header
+# and contain the position of each part of the file. Each entry is uint32.
+#
+# pos content
+# 0 names strings begin
+# 4 names offsets begin
+# 8 details strings begin
+# 12 details offsets begin
+# 16 block strings begin
+# 20 block offsets begin
+# 24 section strings begin
+# 28 section offsets begin
+# 32 unihan strings begin
+# 36 unihan offsets begin
+#
+# The string parts always contain all strings in a row, followed by a 0x00 byte.
+# There is one exception: The data for seeAlso in details is only 2 bytes (as is always is _one_
+# unicode character) and _not_ followed by a 0x00 byte.
+#
+# The offset parts contain entries with a fixed length. Unicode characters are always uint16 and offsets uint32.
+# Offsets are positions in the data file.
+#
+# names_offsets:
+# each entry 6 bytes
+# 16bit: unicode
+# 32bit: offset to name in names_strings
+#
+# names_strings:
+# the first byte is the category (same values as QChar::Category),
+# directly followed by the character name (terminated by 0x00)
+#
+# nameslist_offsets:
+# char, alias, alias_count, note, note_count, approxEquiv, approxEquiv_coutn, equiv, equiv_count, seeAlso, seeAlso_count
+# 16 32 8 32 8 32 8 32 8 32 8
+# => each entry 27 bytes
+#
+# blocks_offsets:
+# each entry 4 bytes
+# 16bit: start unicode
+# 16bit: end unicode
+# Note that there is no string offset.
+#
+# section_offsets:
+# each entry 4 bytes
+# 16bit: section offset
+# 16bit: block offset
+# Note that these offsets are _not_ positions in the data file but indexes.
+# For example 0x0403 means the fourth section includes the third block.
+#
+# unihan_offsets:
+# each entry 30 bytes
+# 16bit: unicode
+# 32bit: offset to unihan_strings for Definition
+# 32bit: offset to unihan_strings for Cantonese
+# 32bit: offset to unihan_strings for Mandarin
+# 32bit: offset to unihan_strings for Tang
+# 32bit: offset to unihan_strings for Korean
+# 32bit: offset to unihan_strings for JapaneseKun
+# 32bit: offset to unihan_strings for JapaneseOn
+
+from struct import *
+import sys
+import re
+import StringIO
+
+# based on http://www.unicode.org/charts/
+sectiondata = '''
+SECTION European Alphabets
+Basic Latin
+Latin-1 Supplement
+Latin Extended-A
+Latin Extended-B
+Latin Extended-C
+Latin Extended-D
+Latin Extended Additional
+Armenian
+Coptic
+Cyrillic
+Cyrillic Supplement
+Cyrillic Extended-A
+Cyrillic Extended-B
+Georgian
+Georgian Supplement
+Glagolitic
+Greek and Coptic
+Greek Extended
+Ogham
+Runic
+
+SECTION African Scripts
+Bamum
+Ethiopic
+Ethiopic Supplement
+Ethiopic Extended
+Ethiopic Extended-A
+NKo
+Tifinagh
+Vai
+
+SECTION Middle Eastern Scripts
+Arabic
+Arabic Supplement
+Arabic Presentation Forms-A
+Arabic Presentation Forms-B
+Hebrew
+Mandaic
+Samaritan
+Syriac
+
+SECTION South Asian Scripts
+Bengali
+Common Indic Number Forms
+Devanagari
+Devanagari Extended
+Gujarati
+Gurmukhi
+Kannada
+Lepcha
+Limbu
+Malayalam
+Meetei Mayek
+Ol Chiki
+Oriya
+Saurashtra
+Sinhala
+Syloti Nagri
+Tamil
+Telugu
+Thaana
+Vedic Extensions
+
+SECTION Philippine Scripts
+Buhid
+Hanunoo
+Tagalog
+Tagbanwa
+
+
+SECTION South East Asian Scripts
+Balinese
+Batak
+Buginese
+Cham
+Javanese
+Kayah Li
+Khmer
+Khmer Symbols
+Lao
+Myanmar
+Myanmar Extended-A
+New Tai Lue
+Rejang
+Sundanese
+Tai Le
+Tai Tham
+Tai Viet
+Thai
+
+SECTION East Asian Scripts
+Bopomofo
+Bopomofo Extended
+CJK Unified Ideographs
+CJK Unified Ideographs Extension A
+CJK Compatibility
+CJK Compatibility Ideographs
+CJK Compatibility Forms
+CJK Radicals Supplement
+CJK Strokes
+CJK Symbols and Punctuation
+Enclosed CJK Letters and Months
+Hangul Jamo
+Hangul Jamo Extended-A
+Hangul Jamo Extended-B
+Hangul Compatibility Jamo
+Hangul Syllables
+Hiragana
+Ideographic Description Characters
+Kanbun
+Kangxi Radicals
+Katakana
+Katakana Phonetic Extensions
+Lisu
+Yi Radicals
+Yi Syllables
+
+SECTION Central Asian Scripts
+Mongolian
+Phags-pa
+Tibetan
+
+SECTION Other Scripts
+Cherokee
+Unified Canadian Aboriginal Syllabics
+Unified Canadian Aboriginal Syllabics Extended
+
+SECTION Symbols
+Braille Patterns
+Control Pictures
+Currency Symbols
+Dingbats
+Enclosed Alphanumerics
+General Punctuation
+Miscellaneous Symbols
+Miscellaneous Technical
+Optical Character Recognition
+Small Form Variants
+Supplemental Punctuation
+Vertical Forms
+Yijing Hexagram Symbols
+
+SECTION Mathematical Symbols
+Arrows
+Block Elements
+Box Drawing
+Supplemental Arrows-A
+Supplemental Arrows-B
+Geometric Shapes
+Letterlike Symbols
+Mathematical Operators
+Supplemental Mathematical Operators
+Miscellaneous Mathematical Symbols-A
+Miscellaneous Mathematical Symbols-B
+Miscellaneous Symbols and Arrows
+Number Forms
+Superscripts and Subscripts
+
+SECTION Phonetic Symbols
+IPA Extensions
+Modifier Tone Letters
+Phonetic Extensions
+Phonetic Extensions Supplement
+Spacing Modifier Letters
+
+SECTION Combining Diacritical Marks
+Combining Diacritical Marks
+Combining Diacritical Marks Supplement
+Combining Diacritical Marks for Symbols
+Combining Half Marks
+
+SECTION Other
+Alphabetic Presentation Forms
+Halfwidth and Fullwidth Forms
+High Private Use Surrogates
+High Surrogates
+Low Surrogates
+Private Use Area
+Specials
+Variation Selectors
+'''
+# TODO: rename "Other Scripts" to "American Scripts"
+
+categoryMap = { # same values as QChar::Category
+ "Mn": 1,
+ "Mc": 2,
+ "Me": 3,
+ "Nd": 4,
+ "Nl": 5,
+ "No": 6,
+ "Zs": 7,
+ "Zl": 8,
+ "Zp": 9,
+ "Cc": 10,
+ "Cf": 11,
+ "Cs": 12,
+ "Co": 13,
+ "Cn": 14,
+ "Lu": 15,
+ "Ll": 16,
+ "Lt": 17,
+ "Lm": 18,
+ "Lo": 19,
+ "Pc": 20,
+ "Pd": 21,
+ "Ps": 22,
+ "Pe": 23,
+ "Pi": 24,
+ "Pf": 25,
+ "Po": 26,
+ "Sm": 27,
+ "Sc": 28,
+ "Sk": 29,
+ "So": 30
+}
+
+
+class Names:
+ def __init__(self):
+ self.names = []
+ self.controlpos = -1
+ def addName(self, uni, name, category):
+ self.names.append([uni, name, category])
+
+ def calculateStringSize(self):
+ size = 0
+ hadcontrol = False
+ for entry in self.names:
+ if entry[1] == "<control>":
+ if not hadcontrol:
+ size += len(entry[1]) + 2
+ hadcontrol = True
+ else:
+ size += len(entry[1]) + 2
+ return size
+
+ def calculateOffsetSize(self):
+ return len(self.names)*6
+
+ def writeStrings(self, out, pos):
+ hadcontrol = False
+ for entry in self.names:
+ if entry[1] == "<control>":
+ if not hadcontrol:
+ out.write(pack("=b", entry[2]))
+ out.write(entry[1] + "\0")
+ size = len(entry[1]) + 2
+ entry[1] = pos
+ self.controlpos = pos
+ pos += size
+ hadcontrol = True
+ else:
+ entry[1] = self.controlpos
+ else:
+ out.write(pack("=b", entry[2]))
+ out.write(entry[1] + "\0")
+ size = len(entry[1]) + 2
+ entry[1] = pos
+ pos += size
+ return pos
+
+ def writeOffsets(self, out, pos):
+ for entry in self.names:
+ out.write(pack("=HI", int(entry[0], 16), entry[1]))
+ pos += 6
+ return pos
+
+class Details:
+ def __init__(self):
+ self.details = {}
+ def addEntry(self, char, category, text):
+ if not self.details.has_key(char):
+ self.details[char] = {}
+ if not self.details[char].has_key(category):
+ self.details[char][category] = []
+ self.details[char][category].append(text)
+
+ def calculateStringSize(self):
+ size = 0
+ for char in self.details.values():
+ for cat in char.values():
+ for s in cat:
+ if type(s) is str:
+ size += len(s) + 1
+ else:
+ size += 2
+ return size
+
+ def calculateOffsetSize(self):
+ return len(self.details)*27
+
+ def writeStrings(self, out, pos):
+ for char in self.details.values():
+ for cat in char.values():
+ for i in range(0, len(cat)):
+ s = cat[i]
+ if type(s) is str:
+ out.write(s + "\0")
+ size = len(s) + 1
+ else:
+ out.write(pack("=H", s))
+ size = 2
+ cat[i] = pos
+ pos += size
+ return pos
+
+ def writeOffsets(self, out, pos):
+ for char in self.details.keys():
+ alias = 0
+ alias_count = 0
+ note = 0
+ note_count = 0
+ approxEquiv = 0
+ approxEquiv_count = 0
+ equiv = 0
+ equiv_count = 0
+ seeAlso = 0
+ seeAlso_count = 0
+ if self.details[char].has_key("alias"):
+ alias = self.details[char]["alias"][0]
+ alias_count = len(self.details[char]["alias"])
+
+ if self.details[char].has_key("note"):
+ note = self.details[char]["note"][0]
+ note_count = len(self.details[char]["note"])
+
+ if self.details[char].has_key("approxEquiv"):
+ approxEquiv = self.details[char]["approxEquiv"][0]
+ approxEquiv_count = len(self.details[char]["approxEquiv"])
+
+ if self.details[char].has_key("equiv"):
+ equiv = self.details[char]["equiv"][0]
+ equiv_count = len(self.details[char]["equiv"])
+
+ if self.details[char].has_key("seeAlso"):
+ seeAlso = self.details[char]["seeAlso"][0]
+ seeAlso_count = len(self.details[char]["seeAlso"])
+
+ out.write(pack("=HIbIbIbIbIb", char, alias, alias_count, note, note_count, approxEquiv, approxEquiv_count, equiv, equiv_count, seeAlso, seeAlso_count))
+ pos += 27
+
+ return pos
+
+class SectionsBlocks:
+ def __init__(self):
+ self.sections = []
+ self.blocks = []
+ self.blockList = []
+ self.sectionList = []
+
+ def addBlock(self, begin, end, name):
+ self.blocks.append([begin, end, name])
+ self.blockList.append(name)
+
+ def addSection(self, section, block):
+ self.sections.append([section, block])
+ if not section in self.sectionList:
+ self.sectionList.append(section)
+
+ def calculateBlockStringSize(self):
+ size = 0
+ for block in self.blocks:
+ size += len(block[2]) + 1
+ return size
+
+ def calculateBlockOffsetSize(self):
+ return len(self.blocks) * 4
+
+ def calculateSectionStringSize(self):
+ size = 0
+ lastsection = ""
+ for section in self.sections:
+ if section[0] != lastsection:
+ size += len(section[0]) + 1
+ lastsection = section[0]
+ return size
+
+ def calculateSectionOffsetSize(self):
+ return len(self.sections) * 4
+
+ def writeBlockStrings(self, out, pos):
+ index = 0
+ for block in self.blocks:
+ out.write(block[2] + "\0")
+ size = len(block[2]) + 1
+ found = False
+ for section in self.sections:
+ if section[1] == block[2]:
+ print "found", section
+ section[1] = index
+ found = True
+ if not found:
+ print "Error: Did not find any category for block \""+block[2]+"\""
+ sys.exit(1)
+ block[2] = index
+ pos += size
+ index += 1
+ return pos
+
+ def writeBlockOffsets(self, out, pos):
+ for block in self.blocks:
+ out.write(pack("=HH", int(block[0], 16), int(block[1], 16)))
+ pos += 4
+ return pos
+
+ def writeSectionStrings(self, out, pos):
+ lastsection = ""
+ lastpos = 0
+ index = -1
+ for section in self.sections:
+ if section[0] != lastsection:
+ index += 1
+ lastsection = section[0]
+ out.write(section[0] + "\0")
+ size = len(section[0]) + 1
+ section[0] = index
+ lastpos = pos
+ pos += size
+ else:
+ section[0] = index
+ return pos
+
+ def writeSectionOffsets(self, out, pos):
+ for section in self.sections:
+ out.write(pack("=HH", section[0], section[1]))
+ pos += 4
+ return pos
+
+ def getBlockList(self):
+ return self.blockList
+
+ def getSectionList(self):
+ return self.sectionList
+
+class Unihan:
+ def __init__(self):
+ self.unihan = {}
+
+ def addUnihan(self, uni, category, value):
+ uni = int(uni, 16)
+ if category != "kDefinition" and category != "kCantonese" and category != "kMandarin" and category != "kTang" and category != "kKorean" and category != "kJapaneseKun" and category != "kJapaneseOn":
+ return
+ if not self.unihan.has_key(uni):
+ self.unihan[uni] = [None, None, None, None, None, None, None]
+ if category == "kDefinition":
+ self.unihan[uni][0] = value
+ elif category == "kCantonese":
+ self.unihan[uni][1] = value
+ elif category == "kMandarin":
+ self.unihan[uni][2] = value
+ elif category == "kTang":
+ self.unihan[uni][3] = value
+ elif category == "kKorean":
+ self.unihan[uni][4] = value
+ elif category == "kJapaneseKun":
+ self.unihan[uni][5] = value
+ elif category == "kJapaneseOn":
+ self.unihan[uni][6] = value
+
+ def calculateStringSize(self):
+ size = 0
+ for char in self.unihan.keys():
+ for entry in self.unihan[char]:
+ if entry != None:
+ size += len(entry) + 1
+ return size
+
+ def calculateOffsetSize(self):
+ return len(self.unihan) * 30
+
+ def writeStrings(self, out, pos):
+ for char in self.unihan.keys():
+ for i in range(0, 7):
+ if self.unihan[char][i] != None:
+ out.write(self.unihan[char][i] + "\0")
+ size = len(self.unihan[char][i]) + 1
+ self.unihan[char][i] = pos
+ pos += size
+ return pos
+
+ def writeOffsets(self, out, pos):
+ for char in self.unihan.keys():
+ out.write(pack("=H", char))
+ for i in range(0, 7):
+ if self.unihan[char][i] != None:
+ out.write(pack("=I", self.unihan[char][i]))
+ else:
+ out.write(pack("=I", 0))
+ pos += 30
+ return pos
+
+class Parser:
+ def parseUnicodeData(self, inUnicodeData, names):
+ regexp = re.compile(r'^([^;]+);([^;]+);([^;]+)')
+ for line in inUnicodeData:
+ line = line[:-1]
+ m = regexp.match(line)
+ if not m:
+ continue
+ uni = m.group(1)
+ name = m.group(2)
+ category = m.group(3)
+ if len(uni) > 4:
+ continue
+ names.addName(uni, name, categoryMap[category])
+
+ def parseDetails(self, inNamesList, details):
+ invalidRegexp = re.compile(r'^@')
+ unicodeRegexp = re.compile(r'^([0-9A-F]+)')
+
+ aliasRegexp = re.compile(r'^\s+=\s+(.+)$') #equal
+ seeAlsoRegexp = re.compile(r'^\s+x\s+.*([0-9A-F]{4,6})\)$') #ex
+ noteRegexp = re.compile(r'^\s+\*\s+(.+)$') #star
+ approxEquivalentRegexp = re.compile(r'^\s+#\s+(.+)$') #pound
+ equivalentRegexp = re.compile(r'^\s+:\s+(.+)$') #colon
+
+ drop = 0
+ currChar = 0
+
+ for line in inNamesList:
+ line = line[:-1]
+ m1 = unicodeRegexp.match(line)
+ m2 = aliasRegexp.match(line)
+ m3 = noteRegexp.match(line)
+ m4 = approxEquivalentRegexp.match(line)
+ m5 = equivalentRegexp.match(line)
+ m6 = seeAlsoRegexp.match(line)
+ if invalidRegexp.match(line):
+ continue
+ elif m1:
+ currChar = int(m1.group(1), 16)
+ if len(m1.group(1)) > 4: #limit to 16bit
+ drop = 1
+ continue
+ elif drop == 1:
+ continue
+ elif m2:
+ value = m2.group(1)
+ details.addEntry(currChar, "alias", value)
+ elif m3:
+ value = m3.group(1)
+ details.addEntry(currChar, "note", value)
+ elif m4:
+ value = m4.group(1)
+ details.addEntry(currChar, "approxEquiv", value)
+ elif m5:
+ value = m5.group(1)
+ details.addEntry(currChar, "equiv", value)
+ elif m6:
+ value = int(m6.group(1), 16)
+ details.addEntry(currChar, "seeAlso", value)
+ def parseBlocks(self, inBlocks, sectionsBlocks):
+ regexp = re.compile(r'^([0-9A-F]+)\.\.([0-9A-F]+); (.+)$')
+ for line in inBlocks:
+ line = line[:-1]
+ m = regexp.match(line)
+ if not m:
+ continue
+ if len(m.group(1)) > 4:
+ continue
+ sectionsBlocks.addBlock(m.group(1), m.group(2), m.group(3))
+ def parseSections(self, inSections, sectionsBlocks):
+ currSection = ""
+ for line in inSections:
+ line = line[:-1]
+ if len(line) == 0:
+ continue;
+ temp = line.split(" ")
+ if temp[0] == "SECTION":
+ currSection = line[8:]
+ elif currSection != "":
+ sectionsBlocks.addSection(currSection, line)
+ else:
+ print "error in data file"
+ sys.exit(1)
+ def parseUnihan(self, inUnihan, unihan):
+ regexp = re.compile(r'^U\+([0-9A-F]+)\s+([^\s]+)\s+(.+)$')
+ count = 0
+ for line in inUnihan:
+ if count % 100000 == 0:
+ print "\b.",; sys.stdout.flush()
+ count += 1
+ line = line[:-1]
+ m = regexp.match(line)
+ if not m:
+ continue
+ if len(m.group(1)) <= 4:
+ unihan.addUnihan(m.group(1), m.group(2), m.group(3))
+
+def writeTranslationDummy(out, data):
+ out.write("""/* This file is part of the KDE libraries
+
+ Copyright (C) 2007 Daniel Laidig <d.laidig@gmx.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+ This file is autogenerated by kdeutils/kcharselect/kcharselect-generate-datafile.py
+*/\n\n""")
+ for group in data:
+ for entry in group[1]:
+ out.write("I18N_NOOP2(\""+group[0]+"\", \""+entry+"\");\n")
+
+out = open("kcharselect-data", "wb")
+outTranslationDummy = open("kcharselect-translation.cpp", "wb")
+
+inUnicodeData = open("UnicodeData.txt", "r")
+inNamesList = open("NamesList.txt", "r")
+inBlocks = open("Blocks.txt", "r")
+inSections = StringIO.StringIO(sectiondata)
+inUnihan = open("Unihan_Readings.txt", "r")
+
+if calcsize('=H') != 2 or calcsize('=I') != 4:
+ print "Error: Sizes of ushort and uint are not 16 and 32 bit as expected"
+ sys.exit(1)
+
+names = Names()
+details = Details()
+sectionsBlocks = SectionsBlocks()
+unihan = Unihan()
+
+parser = Parser()
+
+print "========== parsing files ==================="
+parser.parseUnicodeData(inUnicodeData, names)
+print ".",; sys.stdout.flush()
+parser.parseDetails(inNamesList, details)
+print "\b.",; sys.stdout.flush()
+parser.parseBlocks(inBlocks, sectionsBlocks)
+print "\b.",; sys.stdout.flush()
+parser.parseSections(inSections, sectionsBlocks)
+print "\b.",; sys.stdout.flush()
+parser.parseUnihan(inUnihan, unihan)
+print "\b.",; sys.stdout.flush()
+
+print "done."
+
+pos = 0
+
+#write header, size: 40 bytes
+print "========== writing header =================="
+out.write(pack("=I", 40))
+print "names strings begin", 40
+
+namesOffsetBegin = names.calculateStringSize() + 40
+out.write(pack("=I", namesOffsetBegin))
+print "names offsets begin", namesOffsetBegin
+
+detailsStringBegin = namesOffsetBegin + names.calculateOffsetSize()
+out.write(pack("=I", detailsStringBegin))
+print "details strings begin", detailsStringBegin
+
+detailsOffsetBegin = detailsStringBegin + details.calculateStringSize()
+out.write(pack("=I", detailsOffsetBegin))
+print "details offsets begin", detailsOffsetBegin
+
+blocksStringBegin = detailsOffsetBegin + details.calculateOffsetSize()
+out.write(pack("=I", blocksStringBegin))
+print "block strings begin", blocksStringBegin
+
+blocksOffsetBegin = blocksStringBegin + sectionsBlocks.calculateBlockStringSize()
+out.write(pack("=I", blocksOffsetBegin))
+print "block offsets begin", blocksOffsetBegin
+
+sectionStringBegin = blocksOffsetBegin + sectionsBlocks.calculateBlockOffsetSize()
+out.write(pack("=I", sectionStringBegin))
+print "section strings begin", sectionStringBegin
+
+sectionOffsetBegin = sectionStringBegin + sectionsBlocks.calculateSectionStringSize()
+out.write(pack("=I", sectionOffsetBegin))
+print "section offsets begin", sectionOffsetBegin
+
+unihanStringBegin = sectionOffsetBegin + sectionsBlocks.calculateSectionOffsetSize()
+out.write(pack("=I", unihanStringBegin))
+print "unihan strings begin", unihanStringBegin
+
+unihanOffsetBegin = unihanStringBegin + unihan.calculateStringSize()
+out.write(pack("=I", unihanOffsetBegin))
+print "unihan offsets begin", unihanOffsetBegin
+
+end = unihanOffsetBegin + unihan.calculateOffsetSize()
+print "end should be", end
+
+pos += 40
+
+print "========== writing data ===================="
+
+pos = names.writeStrings(out, pos)
+print "names strings written, position", pos
+pos = names.writeOffsets(out, pos)
+print "names offsets written, position", pos
+pos = details.writeStrings(out, pos)
+print "details strings written, position", pos
+pos = details.writeOffsets(out, pos)
+print "details offsets written, position", pos
+pos = sectionsBlocks.writeBlockStrings(out, pos)
+print "block strings written, position", pos
+pos = sectionsBlocks.writeBlockOffsets(out, pos)
+print "block offsets written, position", pos
+pos = sectionsBlocks.writeSectionStrings(out, pos)
+print "section strings written, position", pos
+pos = sectionsBlocks.writeSectionOffsets(out, pos)
+print "section offsets written, position", pos
+pos = unihan.writeStrings(out, pos)
+print "unihan strings written, position", pos
+pos = unihan.writeOffsets(out, pos)
+print "unihan offsets written, position", pos
+
+print "========== writing translation dummy ======"
+translationData = [["KCharSelect section name", sectionsBlocks.getSectionList()], ["KCharselect unicode block name",sectionsBlocks.getBlockList()]]
+writeTranslationDummy(outTranslationDummy, translationData)
+print "done. make sure to copy both kcharselect-data and kcharselect-translation.cpp."
--- /dev/null
+/*
+ * Copyright 1999 Reginald Stadlbauer <reggie@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kcharselectdia.h"
+
+#include <KAction>
+#include <KActionCollection>
+#include <KApplication>
+#include <KConfig>
+#include <KDebug>
+#include <KDialog>
+#include <KGlobal>
+#include <KIcon>
+#include <KLocale>
+#include <KStandardAction>
+#include <KStandardShortcut>
+#include <KToggleAction>
+
+/******************************************************************/
+/* class KCharSelectDia */
+/******************************************************************/
+
+//==================================================================
+KCharSelectDia::KCharSelectDia()
+ : KXmlGuiWindow()
+{
+ KSharedConfig::Ptr config = KGlobal::config();
+ KConfigGroup gr = config->group("General");
+
+ vFont = gr.readEntry("selectedFont", KGlobalSettings::generalFont());
+ vChr = QChar(static_cast<unsigned short>(gr.readEntry("char", 33)));
+ _rtl = gr.readEntry("rtl", false);
+
+ QWidget *mainWidget = new QWidget(this);
+ setCentralWidget(mainWidget);
+
+ grid = new QGridLayout( mainWidget );
+ grid->setMargin( KDialog::marginHint() );
+ grid->setSpacing( KDialog::spacingHint() );
+
+ // Add character selection widget from library kdeui
+ charSelect = new KCharSelect(mainWidget, actionCollection());
+ charSelect->setCurrentChar(vChr);
+ charSelect->setCurrentFont(vFont);
+ charSelect->resize(charSelect->sizeHint());
+ connect(charSelect,SIGNAL(currentCharChanged(const QChar &)),
+ SLOT(charChanged(const QChar &)));
+ connect(charSelect,SIGNAL(charSelected(const QChar &)),
+ SLOT(add(const QChar &)));
+ connect(charSelect,SIGNAL(currentFontChanged(const QFont &)),
+ SLOT(fontSelected(const QFont &)));
+ grid->addWidget(charSelect, 0, 0, 1, 4);
+
+ // Build line editor
+ lined = new KLineEdit(mainWidget);
+ lined->resize(lined->sizeHint());
+ lined->setClearButtonShown(true);
+
+ lined->setFont( vFont );
+
+ connect(lined,SIGNAL(textChanged(const QString &)),
+ SLOT(lineEditChanged()));
+ grid->addWidget(lined, 1, 0, 1, 3);
+
+ bClip = new KPushButton( KGuiItem( i18n( "&To Clipboard" ),
+ QLatin1String( "edit-copy" ) ), mainWidget );
+ bClip->setFixedSize( bClip->sizeHint() );
+ connect(bClip,SIGNAL(clicked()),this,SLOT(toClip()));
+ grid->addWidget(bClip, 1, 3);
+
+ // Build menu
+ KStandardAction::quit( this, SLOT(close()), actionCollection() );
+
+ KAction *action = actionCollection()->addAction( QLatin1String( "copy_clip" ) );
+ action->setText( i18n("&To Clipboard") );
+ action->setIcon( KIcon( QLatin1String( "edit-copy" )) );
+ connect(action, SIGNAL(triggered(bool)), SLOT(toClip()));
+ action->setShortcuts(KStandardShortcut::shortcut(KStandardShortcut::Copy));
+
+ action = actionCollection()->addAction( QLatin1String( "copy_utf_8" ) );
+ action->setText( i18n("To Clipboard &UTF-8") );
+ connect(action, SIGNAL(triggered(bool) ), SLOT(toClipUTF8()));
+ action = actionCollection()->addAction( QLatin1String( "copy_html" ) );
+ action->setText( i18n("To Clipboard &HTML") );
+ connect(action, SIGNAL(triggered(bool) ), SLOT(toClipHTML()));
+
+ action = actionCollection()->addAction( QLatin1String( "from_clip" ) );
+ action->setText( i18n("&From Clipboard") );
+ action->setIcon( KIcon( QLatin1String( "edit-paste" )) );
+ connect(action, SIGNAL(triggered(bool)), SLOT(fromClip()));
+ action->setShortcuts(KStandardShortcut::shortcut(KStandardShortcut::Paste));
+ action = actionCollection()->addAction( QLatin1String( "from_clip_utf8" ) );
+ action->setText( i18n( "From Clipboard UTF-8") );
+ connect(action, SIGNAL(triggered(bool) ), SLOT(fromClipUTF8()));
+
+ i18n("From Clipboard HTML"); // Intended for future use
+
+ action = actionCollection()->addAction( QLatin1String( "flip" ) );
+ action->setText( i18n("&Flip Text") );
+ connect(action, SIGNAL(triggered(bool) ), SLOT(flipText()));
+
+ action = new KToggleAction( i18n("&Reverse Direction"), this );
+ action->setChecked(_rtl);
+ actionCollection()->addAction( QLatin1String( "rtl" ), action );
+ connect(action, SIGNAL(toggled(bool) ), SLOT(setRtl(bool)));
+
+ charSelect->setFocus();
+
+ if(_rtl)
+ lined->setAlignment( Qt::AlignRight );
+ else
+ lined->setAlignment( Qt::AlignLeft );
+
+ setupGUI(ToolBar|Keys|Save|Create);
+}
+
+//==================================================================
+void KCharSelectDia::closeEvent(QCloseEvent *event)
+{
+ KSharedConfig::Ptr config = KGlobal::config();
+ KConfigGroup gr = config->group("General");
+
+ gr.writeEntry("selectedFont", vFont);
+ gr.writeEntry("char", static_cast<int>(vChr.unicode()));
+ gr.writeEntry("rtl", _rtl);
+
+ KXmlGuiWindow::closeEvent(event);
+}
+
+//==================================================================
+void KCharSelectDia::charChanged(const QChar &_chr)
+{
+ vChr = _chr;
+}
+
+//==================================================================
+void KCharSelectDia::fontSelected(const QFont &_font)
+{
+ lined->setFont( _font );
+
+ vFont = _font;
+}
+
+//==================================================================
+void KCharSelectDia::add(const QChar &_chr)
+{
+ charChanged(_chr);
+
+ QString str = lined->text();
+ const int pos = lined->cursorPosition();
+ str.insert(pos, _chr);
+ lined->setText(str);
+ lined->setCursorPosition(pos + 1);
+}
+
+//==================================================================
+void KCharSelectDia::toClip()
+{
+ QString str = lined->text();
+ if (str.isEmpty())
+ str = vChr;
+ QClipboard *cb = QApplication::clipboard();
+ cb->setText(str,QClipboard::Clipboard);
+ cb->setText(str,QClipboard::Selection);
+}
+
+//==================================================================
+// UTF-8 is rapidly becoming the favored 8-bit encoding for
+// Unicode (iso10646-1).
+//
+void KCharSelectDia::toClipUTF8()
+{
+ QClipboard *cb = QApplication::clipboard();
+ QString str = lined->text();
+ if (str.isEmpty())
+ str = vChr;
+ cb->setText(QLatin1String( str.toUtf8() ));
+}
+
+//==================================================================
+// Put valid HTML 4.0 into the clipboard. Valid ISO-8859-1 Latin 1
+// characters are left undisturbed. Everything else, including the
+// "c0 control characters" often used by Windows, are clipped
+// as a HTML entity.
+//
+void KCharSelectDia::toClipHTML()
+{
+ QClipboard *cb = QApplication::clipboard();
+ QString input;
+ QString html;
+ QString tempstring;
+ QChar tempchar;
+ int i = 0;
+
+ input = lined->text();
+ if (input.isEmpty())
+ input = vChr;
+ const int inputLength = input.length();
+ for(i=0; i< inputLength; ++i )
+ {
+ tempchar = input.at(i);
+ if( tempchar.toLatin1() && ((tempchar.unicode() < 128) || (tempchar.unicode() >= 128+32)) )
+ {
+ html.append(input.at(i));
+ }
+ else
+ {
+ html.append(tempstring.sprintf("&#x%x;", tempchar.unicode()));
+ }
+ }
+ cb->setText(html);
+}
+
+//==================================================================
+//
+void KCharSelectDia::fromClip()
+{
+ QClipboard *cb = QApplication::clipboard();
+ lined->setText( cb->text() );
+}
+
+//==================================================================
+// UTF-8 is rapidly becoming the favored 8-bit encoding for
+// Unicode (iso10646-1). This function is handy for decoding
+// UTF-8 found in legacy applications, consoles, filenames, webpages,
+// etc.
+//
+void KCharSelectDia::fromClipUTF8()
+{
+ QClipboard *cb = QApplication::clipboard();
+ const QString str = cb->text();
+
+ lined->setText( str.fromUtf8( str.toLatin1() ) );
+}
+
+//==================================================================
+// Reverse the text held in the line edit buffer. This is crucial
+// for dealing with visual vs. logical representations of
+// right to left languages, and handy for working around all
+// manner of legacy character order issues.
+//
+void KCharSelectDia::flipText()
+{
+ QString input;
+ QString output;
+ int i;
+
+ input = lined->text();
+ const int nbLength = input.length();
+ for(i=0; i< nbLength; ++i )
+ {
+ output.prepend( input.at(i) );
+ }
+ lined->setText(output);
+}
+
+//==================================================================
+void KCharSelectDia::setRtl(bool rtl)
+{
+ _rtl = rtl;
+ if(_rtl)
+ lined->setAlignment( Qt::AlignRight );
+ else
+ lined->setAlignment( Qt::AlignLeft );
+}
+
+//==================================================================
+void KCharSelectDia::lineEditChanged()
+{
+ if(_rtl)
+ {
+ if(lined->cursorPosition())
+ lined->setCursorPosition( lined->cursorPosition() - 1 );
+ }
+}
+
+#include "kcharselectdia.moc"
--- /dev/null
+/*
+ * Copyright 1999 Reginald Stadlbauer <reggie@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KCHARSELECTDIA_H
+#define KCHARSELECTDIA_H
+
+#include <QClipboard>
+#include <QLayout>
+
+#include <KCharSelect>
+#include <KLineEdit>
+#include <KPushButton>
+#include <KXmlGuiWindow>
+
+/******************************************************************/
+/* class KCharSelectDia */
+/******************************************************************/
+
+class KCharSelectDia : public KXmlGuiWindow
+{
+ Q_OBJECT
+
+public:
+ KCharSelectDia();
+
+protected:
+ void closeEvent(QCloseEvent *event);
+
+ QGridLayout *grid;
+ KCharSelect *charSelect;
+ KLineEdit *lined;
+ KPushButton *bClip;
+
+ QChar vChr;
+ QFont vFont;
+ bool _rtl;
+
+protected slots:
+ void charChanged(const QChar &_chr);
+ void fontSelected(const QFont &_font);
+ void add()
+ { add(vChr); }
+ void add(const QChar &_chr);
+ void toClip();
+ void toClipUTF8();
+ void toClipHTML();
+ void fromClip();
+ void fromClipUTF8();
+ void flipText();
+ void setRtl(bool rtl);
+ void lineEditChanged();
+
+};
+
+#endif
--- /dev/null
+<!DOCTYPE kpartgui>
+<kpartgui name="kcharselect" version="2">
+<MenuBar>
+ <Menu name="edit"><text>&Edit</text>
+ <Action name="copy_clip"/>
+ <Action name="copy_utf_8"/>
+ <Action name="copy_html"/>
+ <Action name="from_clip"/>
+ <Action name="from_clip_utf8"/>
+ <Separator/>
+ <Action name="flip"/>
+ <Action name="rtl"/>
+ </Menu>
+</MenuBar>
+<ToolBar name="mainToolBar" hidden="true">
+ <text>Main Toolbar</text>
+</ToolBar>
+</kpartgui>
--- /dev/null
+/*
+ * Copyright 1999 Reginald Stadlbauer <reggie@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kcharselectdia.h"
+
+#include <KAboutData>
+#include <KApplication>
+#include <KCmdLineArgs>
+
+static const char version[] = "v1.11";
+static const char description[] = I18N_NOOP("KDE character selection utility");
+static const char text[] = I18N_NOOP("A wrapper around the KCharSelect widget.");
+static const char homepageUrl[] = "http://utils.kde.org/projects/kcharselect";
+
+/*================================================================*/
+int main(int argc, char **argv)
+{
+ KAboutData aboutData( "kcharselect", 0, ki18n("KCharSelect"),
+ version, ki18n(description), KAboutData::License_GPL,
+ KLocalizedString(), ki18n(text), homepageUrl );
+
+ aboutData.addAuthor(ki18n("Daniel Laidig"), ki18n("Author and maintainer"), "d.laidig@gmx.de" );
+ aboutData.addAuthor(ki18n("Reginald Stadlbauer"), ki18n("Author"), "reggie@kde.org");
+
+ aboutData.addCredit( ki18n("Daniel Laidig"), ki18n("New GUI, Unicode information, incremental search,"
+ " and general improvements"), "d.laidig@gmx.de" );
+ aboutData.addCredit( ki18n("Constantin Berzan"), ki18n("Previous maintainer"), "exit3219@gmail.com" );
+ aboutData.addCredit( ki18n("Nadeem Hasan"), ki18n( "GUI cleanup and fixes" ),
+ "nhasan@kde.org" );
+ aboutData.addCredit( ki18n("Ryan Cumming"), ki18n( "GUI cleanup and fixes" ),
+ "bodnar42@phalynx.dhs.org" );
+ aboutData.addCredit( ki18n("Benjamin C. Meyer"), ki18n("XMLUI conversion"),
+ "ben+kcharselect@meyerhome.net" );
+ aboutData.addCredit( ki18n("Bryce Nesbitt"), ki18n("RTL support") );
+
+ aboutData.setProgramIconName(QLatin1String( "accessories-character-map" ));
+ KCmdLineArgs::init( argc, argv, &aboutData );
+
+ KApplication app;
+
+ KCharSelectDia *dia = new KCharSelectDia;
+ dia->show();
+
+ return app.exec();
+}
--- /dev/null
+project(kcolorchooser)
+
+# search packages used by KDE
+find_package(KDE4 REQUIRED)
+include(KDE4Defaults)
+include(MacroLibrary)
+include(MacroOptionalAddSubdirectory)
+
+add_definitions (${QT_DEFINITIONS} ${QT_QTDBUS_DEFINITIONS} ${KDE4_DEFINITIONS})
+include_directories (${QDBUS_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES})
+
+set(kcolorchooser_SRCS kcolorchooser.cpp )
+
+kde4_add_app_icon(kcolorchooser_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/hi*-app-kcolorchooser.png")
+
+kde4_add_executable(kcolorchooser ${kcolorchooser_SRCS})
+
+target_link_libraries(kcolorchooser ${KDE4_KDEUI_LIBS})
+
+install(TARGETS kcolorchooser ${INSTALL_TARGETS_DEFAULT_ARGS} )
+install( PROGRAMS kcolorchooser.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
+
+kde4_install_icons( ${ICON_INSTALL_DIR} )
+
--- /dev/null
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- /dev/null
+#! /bin/sh
+$XGETTEXT *.cpp -o $podir/kcolorchooser.pot
--- /dev/null
+/*
+This file is part of KDE
+
+ Copyright (C) 1998-2000 Waldo Bastian (bastian@kde.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <iostream>
+
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <klocale.h>
+
+#include <kcolordialog.h>
+#include <kcolormimedata.h>
+#include <khelpmenu.h>
+
+#include <QtGui/QClipboard>
+
+static const char description[] =
+ I18N_NOOP("KDE Color Chooser");
+
+static const char version[] = "v1.0.1";
+
+
+int main(int argc, char *argv[])
+{
+ KAboutData aboutData("kcolorchooser", 0, ki18n("KColorChooser"),
+ version, ki18n(description), KAboutData::License_BSD,
+ ki18n("(c) 2000, Waldo Bastian"));
+ aboutData.addAuthor(ki18n("Waldo Bastian"),KLocalizedString(), "bastian@kde.org");
+ aboutData.setProductName("kdelibs/kdeui");
+ KCmdLineArgs::init( argc, argv, &aboutData );
+
+ KCmdLineOptions options;
+ options.add("print", ki18n("Print the selected color to stdout"));
+ options.add("color <color>", ki18n("Set initially selected color"));
+ KCmdLineArgs::addCmdLineOptions( options );
+
+ KApplication app;
+
+ KColorDialog dlg;
+
+ KHelpMenu *help = new KHelpMenu(&dlg, &aboutData);
+
+ QColor color = KColorMimeData::fromMimeData( QApplication::clipboard()->mimeData( QClipboard::Clipboard ));
+ if (!color.isValid()) {
+ color = Qt::blue; // Just a color
+ }
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if (args->isSet("color")) {
+ QColor c = QColor(args->getOption("color"));
+ if (c.isValid())
+ color = c;
+ }
+ dlg.setButtons(KDialog::Help | KDialog::Close);
+ dlg.setButtonMenu(KDialog::Help, (QMenu *)(help->menu()));
+ dlg.setColor(color);
+
+ app.connect(&dlg, SIGNAL(finished()), SLOT(quit()));
+
+ dlg.show();
+ app.exec();
+
+ const QColor c = dlg.color();
+ if ( args->isSet("print") && c.isValid() ) {
+ std::cout << c.name().toUtf8().constData() << std::endl;
+ }
+ args->clear();
+}
--- /dev/null
+[Desktop Entry]
+Type=Application
+Exec=kcolorchooser
+Icon=kcolorchooser
+Terminal=false
+X-DocPath=fundamentals/index.html#colors
+GenericName=Color Chooser
+GenericName[af]=Kleur Kieser
+GenericName[ar]=مختار اللون
+GenericName[ast]=Seleutor de colores
+GenericName[bg]=Избор на цвят
+GenericName[br]=Dibaber livioù
+GenericName[bs]=Birač boja
+GenericName[ca]=Selector de colors
+GenericName[ca@valencia]=Selector de colors
+GenericName[cs]=Výběr barev
+GenericName[cy]=Dewis Lliwiau
+GenericName[da]=Farvevælger
+GenericName[de]=Farbauswahl
+GenericName[el]=Επιλογέας χρωμάτων
+GenericName[en_GB]=Colour Chooser
+GenericName[eo]=Kolora elektilo
+GenericName[es]=Selector de colores
+GenericName[et]=Värvivalija
+GenericName[eu]=Kolore hautatzailea
+GenericName[fa]=انتخابکننده رنگ
+GenericName[fi]=Värivalitsin
+GenericName[fr]=Sélecteur de couleurs
+GenericName[ga]=Roghnóir Dathanna
+GenericName[gl]=Selector de cores
+GenericName[he]=בוחר צבעים
+GenericName[hi]=रंग चयनक
+GenericName[hne]=रंग चुनइया
+GenericName[hr]=Izbornik boja
+GenericName[hu]=Színválasztó
+GenericName[ia]=Selector de color
+GenericName[is]=Litavalstól
+GenericName[it]=Selettore di colori
+GenericName[ja]=色の選択
+GenericName[kk]=Түсті таңдау
+GenericName[km]=កម្មវិធីជ្រើសពណ៌
+GenericName[ko]=색상 선택기
+GenericName[ku]=Bijarkerê Rengan
+GenericName[lt]=Spalvų parinkiklis
+GenericName[lv]=Krāsu izvēlētājs
+GenericName[mk]=Избирач на бои
+GenericName[mr]=रंग निवडकर्ता
+GenericName[ms]=Pemilih Warna
+GenericName[nb]=Fargevelger
+GenericName[nds]=Klöörköör
+GenericName[ne]=रङ चयनकर्ता
+GenericName[nl]=Kleurenkiezer
+GenericName[nn]=Fargeveljar
+GenericName[pa]=ਰੰਗ ਸੰਰਚਨਾ
+GenericName[pl]=Wybór koloru
+GenericName[pt]=Selector de Cores
+GenericName[pt_BR]=Seletor de cores
+GenericName[ro]=Selector de culori
+GenericName[ru]=Выбор цвета
+GenericName[se]=Ivdneválljejeaddji
+GenericName[si]=වර්ණ තෝරණය
+GenericName[sk]=Výber farieb
+GenericName[sl]=Izbirnik barv
+GenericName[sr]=Бирач боја
+GenericName[sr@ijekavian]=Бирач боја
+GenericName[sr@ijekavianlatin]=Birač boja
+GenericName[sr@latin]=Birač boja
+GenericName[sv]=Färgväljare
+GenericName[ta]=வண்ணத் தேர்வு
+GenericName[tg]=Интихоби ранг
+GenericName[th]=เครื่องมือเลือกสี
+GenericName[tr]=Renk Seçici
+GenericName[ug]=رەڭ تاللىغۇچ
+GenericName[uk]=Вибір кольорів
+GenericName[uz]=Rang tanlovchi
+GenericName[uz@cyrillic]=Ранг танловчи
+GenericName[vi]=Trình chọn màu
+GenericName[wa]=Tchoezixheu di coleurs
+GenericName[xh]=Mkhethi Wombala
+GenericName[x-test]=xxColor Chooserxx
+GenericName[zh_CN]=颜色选择器
+GenericName[zh_HK]=顏色選擇器
+GenericName[zh_TW]=顏色選擇程式
+Name=KColorChooser
+Name[af]=K-kleur-kieser
+Name[ar]=كُولُرْتْشوزِر
+Name[ast]=KColorChooser
+Name[bg]=KColorChooser
+Name[br]=KColorChooser
+Name[bs]=KColorChooser
+Name[ca]=KColorChooser
+Name[ca@valencia]=KColorChooser
+Name[cs]=Výběr barev
+Name[cy]=KDewisLliw
+Name[da]=KColorChooser
+Name[de]=KColorChooser
+Name[el]=KColorChooser
+Name[en_GB]=KColorChooser
+Name[eo]=KColorChooser
+Name[es]=KColorChooser
+Name[et]=KColorChooser
+Name[eu]=KColorChooser
+Name[fi]=Värivalitsin
+Name[fr]=KColorChooser
+Name[ga]=KColorChooser
+Name[gl]=KColorChooser
+Name[he]=KColorChooser
+Name[hi]=केकलरचूज़र
+Name[hne]=केकलरचूजर
+Name[hr]=Izbornik boja
+Name[hu]=KColorChooser
+Name[ia]=KColorChooser
+Name[is]=KLitaval
+Name[it]=KColorChooser
+Name[ja]=KColorChooser
+Name[kk]=KColorChooser
+Name[km]=KColorChooser
+Name[ko]=KColorChooser
+Name[ku]=KColorChooser
+Name[lt]=KColorChooser
+Name[lv]=KColorChooser
+Name[mk]=KColorChooser
+Name[mr]=के-कलर-चूझर
+Name[ms]=KColorChooser
+Name[nb]=KColorChooser
+Name[nds]=KColorChooser
+Name[ne]=केडीई रङ चयनकर्ता
+Name[nl]=KColorChooser
+Name[nn]=KDE-fargeveljar
+Name[pa]=ਕੇ-ਰੰਗ-ਚੋਣਕਾਰ
+Name[pl]=Wybór koloru
+Name[pt]=KColorChooser
+Name[pt_BR]=KColorChooser
+Name[ro]=Selector culori
+Name[ru]=KColorChooser
+Name[se]=KDE-ivdneválljejeaddji
+Name[si]=KColorChooser
+Name[sk]=KColorChooser
+Name[sl]=KColorChooser
+Name[sr]=К‑бирач‑боја
+Name[sr@ijekavian]=К‑бирач‑боја
+Name[sr@ijekavianlatin]=K‑birač‑boja
+Name[sr@latin]=K‑birač‑boja
+Name[sv]=Kcolorchooser
+Name[ta]=கேவண்ணத் தேர்வு
+Name[tg]=KColorChooser
+Name[th]=เครื่องมือเลือกสี-K
+Name[tr]=KColorChooser
+Name[ug]=KColorChooser
+Name[uk]=KColorChooser
+Name[uz]=Rang tanlovchi
+Name[uz@cyrillic]=Ранг танловчи
+Name[vi]=KColorChooser
+Name[xh]=Umkhethi Wombala i K
+Name[x-test]=xxKColorChooserxx
+Name[zh_CN]=KColorChooser
+Name[zh_HK]=KColorChooser
+Name[zh_TW]=KColorChooser 顏色選擇器
+
+X-DBUS-StartupType=Multi
+Categories=Qt;KDE;Graphics;X-KDE-More;