OSDN Git Service

imported kcolorchooser and kcharselect
authorIvailo Monev <xakepa10@gmail.com>
Fri, 28 Nov 2014 12:49:10 +0000 (12:49 +0000)
committerIvailo Monev <xakepa10@gmail.com>
Fri, 28 Nov 2014 12:49:10 +0000 (12:49 +0000)
20 files changed:
CMakeLists.txt
kcharselect/CMakeLists.txt [new file with mode: 0644]
kcharselect/COPYING [new file with mode: 0644]
kcharselect/COPYING.LIB [new file with mode: 0644]
kcharselect/CTestConfig.cmake [new file with mode: 0644]
kcharselect/KCharSelect.desktop [new file with mode: 0755]
kcharselect/Mainpage.dox [new file with mode: 0644]
kcharselect/Messages.sh [new file with mode: 0644]
kcharselect/kcharselect-generate-datafile.py [new file with mode: 0755]
kcharselect/kcharselectdia.cc [new file with mode: 0644]
kcharselect/kcharselectdia.h [new file with mode: 0644]
kcharselect/kcharselectui.rc [new file with mode: 0644]
kcharselect/main.cc [new file with mode: 0644]
kcolorchooser/CMakeLists.txt [new file with mode: 0644]
kcolorchooser/COPYING [new file with mode: 0644]
kcolorchooser/Messages.sh [new file with mode: 0644]
kcolorchooser/hi16-app-kcolorchooser.png [new file with mode: 0644]
kcolorchooser/hi22-app-kcolorchooser.png [new file with mode: 0644]
kcolorchooser/kcolorchooser.cpp [new file with mode: 0644]
kcolorchooser/kcolorchooser.desktop [new file with mode: 0644]

index c24ba35..b45a710 100644 (file)
@@ -32,6 +32,8 @@ macro_optional_add_subdirectory (kfilemetadata)
 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)
diff --git a/kcharselect/CMakeLists.txt b/kcharselect/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2e94193
--- /dev/null
@@ -0,0 +1,36 @@
+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}   )
diff --git a/kcharselect/COPYING b/kcharselect/COPYING
new file mode 100644 (file)
index 0000000..5185fd3
--- /dev/null
@@ -0,0 +1,346 @@
+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.
diff --git a/kcharselect/COPYING.LIB b/kcharselect/COPYING.LIB
new file mode 100644 (file)
index 0000000..2d2d780
--- /dev/null
@@ -0,0 +1,510 @@
+
+                  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!
+
+
diff --git a/kcharselect/CTestConfig.cmake b/kcharselect/CTestConfig.cmake
new file mode 100644 (file)
index 0000000..0b97cc6
--- /dev/null
@@ -0,0 +1,13 @@
+## 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)
diff --git a/kcharselect/KCharSelect.desktop b/kcharselect/KCharSelect.desktop
new file mode 100755 (executable)
index 0000000..b236d31
--- /dev/null
@@ -0,0 +1,156 @@
+[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;
diff --git a/kcharselect/Mainpage.dox b/kcharselect/Mainpage.dox
new file mode 100644 (file)
index 0000000..7b1f9a0
--- /dev/null
@@ -0,0 +1,8 @@
+/** @mainpage kcharselect
+
+The kcharselect application
+
+*/
+
+// DOXYGEN_REFERENCES = kdecore
+// DOXYGEN_SET_PROJECT_NAME = kcharselect
diff --git a/kcharselect/Messages.sh b/kcharselect/Messages.sh
new file mode 100644 (file)
index 0000000..474d691
--- /dev/null
@@ -0,0 +1,3 @@
+#! /bin/sh
+$EXTRACTRC *.rc >> rc.cpp
+$XGETTEXT *.cc *.cpp -o $podir/kcharselect.pot 
diff --git a/kcharselect/kcharselect-generate-datafile.py b/kcharselect/kcharselect-generate-datafile.py
new file mode 100755 (executable)
index 0000000..79afebe
--- /dev/null
@@ -0,0 +1,829 @@
+#!/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."
diff --git a/kcharselect/kcharselectdia.cc b/kcharselect/kcharselectdia.cc
new file mode 100644 (file)
index 0000000..493ead2
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ * 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"
diff --git a/kcharselect/kcharselectdia.h b/kcharselect/kcharselectdia.h
new file mode 100644 (file)
index 0000000..bd71deb
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * 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
diff --git a/kcharselect/kcharselectui.rc b/kcharselect/kcharselectui.rc
new file mode 100644 (file)
index 0000000..d8556ee
--- /dev/null
@@ -0,0 +1,18 @@
+<!DOCTYPE kpartgui>
+<kpartgui name="kcharselect" version="2">
+<MenuBar>
+  <Menu name="edit"><text>&amp;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>
diff --git a/kcharselect/main.cc b/kcharselect/main.cc
new file mode 100644 (file)
index 0000000..67cefa5
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * 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();
+}
diff --git a/kcolorchooser/CMakeLists.txt b/kcolorchooser/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b89efec
--- /dev/null
@@ -0,0 +1,24 @@
+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}   )
+
diff --git a/kcolorchooser/COPYING b/kcolorchooser/COPYING
new file mode 100644 (file)
index 0000000..89de354
--- /dev/null
@@ -0,0 +1,17 @@
+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.
diff --git a/kcolorchooser/Messages.sh b/kcolorchooser/Messages.sh
new file mode 100644 (file)
index 0000000..d8bff92
--- /dev/null
@@ -0,0 +1,2 @@
+#! /bin/sh
+$XGETTEXT *.cpp -o $podir/kcolorchooser.pot
diff --git a/kcolorchooser/hi16-app-kcolorchooser.png b/kcolorchooser/hi16-app-kcolorchooser.png
new file mode 100644 (file)
index 0000000..739d5e4
Binary files /dev/null and b/kcolorchooser/hi16-app-kcolorchooser.png differ
diff --git a/kcolorchooser/hi22-app-kcolorchooser.png b/kcolorchooser/hi22-app-kcolorchooser.png
new file mode 100644 (file)
index 0000000..88ec333
Binary files /dev/null and b/kcolorchooser/hi22-app-kcolorchooser.png differ
diff --git a/kcolorchooser/kcolorchooser.cpp b/kcolorchooser/kcolorchooser.cpp
new file mode 100644 (file)
index 0000000..3530119
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+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();
+}  
diff --git a/kcolorchooser/kcolorchooser.desktop b/kcolorchooser/kcolorchooser.desktop
new file mode 100644 (file)
index 0000000..83a6052
--- /dev/null
@@ -0,0 +1,161 @@
+[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;