summaryrefslogtreecommitdiffstats
path: root/klettres
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch)
treed3bb9f5d25a2dc09ca81adecf39621d871534297 /klettres
downloadtdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz
tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'klettres')
-rw-r--r--klettres/AUTHORS38
-rw-r--r--klettres/COPYING340
-rw-r--r--klettres/ChangeLog22
-rw-r--r--klettres/INSTALL167
-rw-r--r--klettres/Makefile.am13
-rw-r--r--klettres/TODO3
-rw-r--r--klettres/klettres.lsm14
-rw-r--r--klettres/klettres/Makefile.am59
-rw-r--r--klettres/klettres/data/Makefile.am6
-rw-r--r--klettres/klettres/data/langs/Makefile.am2
-rw-r--r--klettres/klettres/data/langs/cs.txt7
-rw-r--r--klettres/klettres/data/langs/da.txt3
-rw-r--r--klettres/klettres/data/langs/de.txt4
-rw-r--r--klettres/klettres/data/langs/es.txt2
-rw-r--r--klettres/klettres/data/langs/nds.txt4
-rw-r--r--klettres/klettres/data/langs/sk.txt16
-rw-r--r--klettres/klettres/data/sounds.xml878
-rw-r--r--klettres/klettres/en/alpha/A.oggbin0 -> 25008 bytes
-rw-r--r--klettres/klettres/en/alpha/B.oggbin0 -> 24706 bytes
-rw-r--r--klettres/klettres/en/alpha/C.oggbin0 -> 25527 bytes
-rw-r--r--klettres/klettres/en/alpha/D.oggbin0 -> 25669 bytes
-rw-r--r--klettres/klettres/en/alpha/E.oggbin0 -> 25567 bytes
-rw-r--r--klettres/klettres/en/alpha/F.oggbin0 -> 24947 bytes
-rw-r--r--klettres/klettres/en/alpha/G.oggbin0 -> 25916 bytes
-rw-r--r--klettres/klettres/en/alpha/H.oggbin0 -> 26892 bytes
-rw-r--r--klettres/klettres/en/alpha/I.oggbin0 -> 25618 bytes
-rw-r--r--klettres/klettres/en/alpha/J.oggbin0 -> 26934 bytes
-rw-r--r--klettres/klettres/en/alpha/K.oggbin0 -> 25965 bytes
-rw-r--r--klettres/klettres/en/alpha/L.oggbin0 -> 25784 bytes
-rw-r--r--klettres/klettres/en/alpha/M.oggbin0 -> 25840 bytes
-rw-r--r--klettres/klettres/en/alpha/N.oggbin0 -> 25870 bytes
-rw-r--r--klettres/klettres/en/alpha/O.oggbin0 -> 25600 bytes
-rw-r--r--klettres/klettres/en/alpha/P.oggbin0 -> 25290 bytes
-rw-r--r--klettres/klettres/en/alpha/Q.oggbin0 -> 25772 bytes
-rw-r--r--klettres/klettres/en/alpha/R.oggbin0 -> 26085 bytes
-rw-r--r--klettres/klettres/en/alpha/S.oggbin0 -> 25943 bytes
-rw-r--r--klettres/klettres/en/alpha/T.oggbin0 -> 25583 bytes
-rw-r--r--klettres/klettres/en/alpha/U.oggbin0 -> 25211 bytes
-rw-r--r--klettres/klettres/en/alpha/V.oggbin0 -> 26504 bytes
-rw-r--r--klettres/klettres/en/alpha/W.oggbin0 -> 26868 bytes
-rw-r--r--klettres/klettres/en/alpha/X.oggbin0 -> 25467 bytes
-rw-r--r--klettres/klettres/en/alpha/Y.oggbin0 -> 25555 bytes
-rw-r--r--klettres/klettres/en/alpha/Z.oggbin0 -> 26660 bytes
-rw-r--r--klettres/klettres/en/sounds.xml75
-rw-r--r--klettres/klettres/en/syllab/aw.oggbin0 -> 25704 bytes
-rw-r--r--klettres/klettres/en/syllab/car.oggbin0 -> 26369 bytes
-rw-r--r--klettres/klettres/en/syllab/ch.oggbin0 -> 25356 bytes
-rw-r--r--klettres/klettres/en/syllab/dog.oggbin0 -> 26648 bytes
-rw-r--r--klettres/klettres/en/syllab/fix.oggbin0 -> 25740 bytes
-rw-r--r--klettres/klettres/en/syllab/gas.oggbin0 -> 27049 bytes
-rw-r--r--klettres/klettres/en/syllab/gem.oggbin0 -> 26101 bytes
-rw-r--r--klettres/klettres/en/syllab/hot.oggbin0 -> 26028 bytes
-rw-r--r--klettres/klettres/en/syllab/jet.oggbin0 -> 25993 bytes
-rw-r--r--klettres/klettres/en/syllab/key.oggbin0 -> 25384 bytes
-rw-r--r--klettres/klettres/en/syllab/me.oggbin0 -> 26672 bytes
-rw-r--r--klettres/klettres/en/syllab/my.oggbin0 -> 27324 bytes
-rw-r--r--klettres/klettres/en/syllab/no.oggbin0 -> 25871 bytes
-rw-r--r--klettres/klettres/en/syllab/pet.oggbin0 -> 25933 bytes
-rw-r--r--klettres/klettres/en/syllab/saw.oggbin0 -> 27262 bytes
-rw-r--r--klettres/klettres/en/syllab/say.oggbin0 -> 25555 bytes
-rw-r--r--klettres/klettres/en/syllab/sit.oggbin0 -> 26503 bytes
-rw-r--r--klettres/klettres/en/syllab/sky.oggbin0 -> 27371 bytes
-rw-r--r--klettres/klettres/en/syllab/th.oggbin0 -> 6736 bytes
-rw-r--r--klettres/klettres/fontsdlg.ui38
-rw-r--r--klettres/klettres/fr/alpha/a-0.oggbin0 -> 15974 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-1.oggbin0 -> 15927 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-10.oggbin0 -> 17455 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-11.oggbin0 -> 16762 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-12.oggbin0 -> 16490 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-13.oggbin0 -> 17328 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-14.oggbin0 -> 16054 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-15.oggbin0 -> 16478 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-16.oggbin0 -> 17435 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-17.oggbin0 -> 16617 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-18.oggbin0 -> 17711 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-19.oggbin0 -> 16642 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-2.oggbin0 -> 17023 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-20.oggbin0 -> 16564 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-21.oggbin0 -> 17013 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-22.oggbin0 -> 19936 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-23.oggbin0 -> 16859 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-24.oggbin0 -> 18103 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-25.oggbin0 -> 16455 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-3.oggbin0 -> 16459 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-4.oggbin0 -> 15960 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-5.oggbin0 -> 15546 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-6.oggbin0 -> 17090 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-7.oggbin0 -> 16368 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-8.oggbin0 -> 17192 bytes
-rw-r--r--klettres/klettres/fr/alpha/a-9.oggbin0 -> 17196 bytes
-rw-r--r--klettres/klettres/fr/sounds.xml81
-rw-r--r--klettres/klettres/fr/syllab/ad-0.oggbin0 -> 15724 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-1.oggbin0 -> 15034 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-10.oggbin0 -> 15093 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-11.oggbin0 -> 14669 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-12.oggbin0 -> 15260 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-13.oggbin0 -> 14839 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-14.oggbin0 -> 17178 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-15.oggbin0 -> 14915 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-16.oggbin0 -> 15712 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-17.oggbin0 -> 16988 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-18.oggbin0 -> 15521 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-19.oggbin0 -> 16823 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-2.oggbin0 -> 16836 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-20.oggbin0 -> 15975 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-21.oggbin0 -> 15088 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-22.oggbin0 -> 15903 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-23.oggbin0 -> 17493 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-24.oggbin0 -> 16531 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-25.oggbin0 -> 17607 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-26.oggbin0 -> 17599 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-27.oggbin0 -> 17770 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-3.oggbin0 -> 15954 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-4.oggbin0 -> 16114 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-5.oggbin0 -> 16263 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-6.oggbin0 -> 16938 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-7.oggbin0 -> 16166 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-8.oggbin0 -> 15417 bytes
-rw-r--r--klettres/klettres/fr/syllab/ad-9.oggbin0 -> 16452 bytes
-rw-r--r--klettres/klettres/hi128-app-klettres.pngbin0 -> 5520 bytes
-rw-r--r--klettres/klettres/hi16-app-klettres.pngbin0 -> 603 bytes
-rw-r--r--klettres/klettres/hi22-app-klettres.pngbin0 -> 868 bytes
-rw-r--r--klettres/klettres/hi32-app-klettres.pngbin0 -> 1362 bytes
-rw-r--r--klettres/klettres/hi48-app-klettres.pngbin0 -> 2071 bytes
-rw-r--r--klettres/klettres/hisc-app-klettres.svgzbin0 -> 1445 bytes
-rw-r--r--klettres/klettres/icons/Makefile.am2
-rw-r--r--klettres/klettres/icons/cr128-action-klettres_desert.pngbin0 -> 3722 bytes
-rw-r--r--klettres/klettres/icons/cr128-action-klettres_grownup.pngbin0 -> 6344 bytes
-rw-r--r--klettres/klettres/icons/cr128-action-klettres_kids.pngbin0 -> 4449 bytes
-rw-r--r--klettres/klettres/icons/cr16-action-klettres_desert.pngbin0 -> 571 bytes
-rw-r--r--klettres/klettres/icons/cr16-action-klettres_grownup.pngbin0 -> 695 bytes
-rw-r--r--klettres/klettres/icons/cr16-action-klettres_kids.pngbin0 -> 642 bytes
-rw-r--r--klettres/klettres/icons/cr22-action-klettres_desert.pngbin0 -> 759 bytes
-rw-r--r--klettres/klettres/icons/cr22-action-klettres_grownup.pngbin0 -> 980 bytes
-rw-r--r--klettres/klettres/icons/cr22-action-klettres_kids.png.pngbin0 -> 917 bytes
-rw-r--r--klettres/klettres/icons/cr32-action-klettres_desert.pngbin0 -> 1038 bytes
-rw-r--r--klettres/klettres/icons/cr32-action-klettres_grownup.pngbin0 -> 1451 bytes
-rw-r--r--klettres/klettres/icons/cr32-action-klettres_kids.pngbin0 -> 1292 bytes
-rw-r--r--klettres/klettres/icons/cr48-action-klettres_desert.pngbin0 -> 1462 bytes
-rw-r--r--klettres/klettres/icons/cr48-action-klettres_grownup.pngbin0 -> 2220 bytes
-rw-r--r--klettres/klettres/icons/cr48-action-klettres_kids.pngbin0 -> 1686 bytes
-rw-r--r--klettres/klettres/icons/cr64-action-klettres_desert.pngbin0 -> 1926 bytes
-rw-r--r--klettres/klettres/icons/cr64-action-klettres_grownup.png.pngbin0 -> 3085 bytes
-rw-r--r--klettres/klettres/icons/cr64-action-klettres_kids.pngbin0 -> 2292 bytes
-rw-r--r--klettres/klettres/icons/crsc-action-klettres_desert.svgzbin0 -> 1857 bytes
-rw-r--r--klettres/klettres/icons/crsc-action-klettres_grownup.svgzbin0 -> 1992 bytes
-rw-r--r--klettres/klettres/icons/crsc-action-klettres_kids.svgzbin0 -> 2026 bytes
-rw-r--r--klettres/klettres/klettres.cpp527
-rw-r--r--klettres/klettres/klettres.desktop130
-rw-r--r--klettres/klettres/klettres.h151
-rw-r--r--klettres/klettres/klettres.kcfg53
-rw-r--r--klettres/klettres/klettresrc3
-rw-r--r--klettres/klettres/klettresui.rc49
-rw-r--r--klettres/klettres/klettresview.cpp225
-rw-r--r--klettres/klettres/klettresview.h107
-rw-r--r--klettres/klettres/klnewstuff.cpp61
-rw-r--r--klettres/klettres/klnewstuff.h39
-rw-r--r--klettres/klettres/main.cpp123
-rw-r--r--klettres/klettres/pics/Makefile.am2
-rw-r--r--klettres/klettres/pics/klettres_desert.pngbin0 -> 171415 bytes
-rw-r--r--klettres/klettres/pics/klettres_grownup.pngbin0 -> 65425 bytes
-rw-r--r--klettres/klettres/pics/klettres_kids.jpegbin0 -> 30244 bytes
-rw-r--r--klettres/klettres/pics/menubar.pngbin0 -> 219 bytes
-rw-r--r--klettres/klettres/prefs.kcfgc8
-rw-r--r--klettres/klettres/prefs_addons.h48
-rw-r--r--klettres/klettres/soundfactory.cpp148
-rw-r--r--klettres/klettres/soundfactory.h77
-rw-r--r--klettres/klettres/timer.cpp49
-rw-r--r--klettres/klettres/timer.h49
-rw-r--r--klettres/klettres/timerdlg.ui245
-rw-r--r--klettres/klettres/version.h28
171 files changed, 3896 insertions, 0 deletions
diff --git a/klettres/AUTHORS b/klettres/AUTHORS
new file mode 100644
index 00000000..25f799a8
--- /dev/null
+++ b/klettres/AUTHORS
@@ -0,0 +1,38 @@
+Anne-Marie Mahfouf <annma@kde.org>
+Original idea, main developer and maintainer
+
+Ludovic Grossard
+French sounds
+
+Geert Stams
+Dutch sounds
+
+Erik Kjaer Pedersen
+Danish sounds
+
+Eva Mikulčíková
+Czech sounds
+
+Silvia Motyčková & Jozef Říha
+Slovak sounds
+
+Alessandro Pasotti
+Italian sounds
+
+Primoz Anzur
+Original Icon
+
+Renaud Blanchard
+Background picture
+
+Robert Gogolok
+Support and coding guidance
+
+Chris Luetchford
+svg icon
+
+Peter Hedlund
+Code for generating special characters icons
+
+Waldo Bastian
+Port to KConfig XT, coding help
diff --git a/klettres/COPYING b/klettres/COPYING
new file mode 100644
index 00000000..37ba36f1
--- /dev/null
+++ b/klettres/COPYING
@@ -0,0 +1,340 @@
+ 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.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ 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/klettres/ChangeLog b/klettres/ChangeLog
new file mode 100644
index 00000000..52ca488f
--- /dev/null
+++ b/klettres/ChangeLog
@@ -0,0 +1,22 @@
+29 April 2002
+- add "Look and Feel" menu that allow 2 different styles. Style "kid" has no MenuBar, has a kid background pic and a toolbar.
+Style "grown-up" has a different background, a menuBar and a toolbar.
+Buttons appear consequently in the 2 styles to allow menuBar and other style.
+
+28 April 2002
+- better internationalization
+- i18n() the KLettres on the splash-screen
+- suppress the sound with the splash-screen as it was too long
+- add menubar, toolbar and statusbar, configurable using KAction
+- settings allow to choose the language and the level from the menuBar and toolBar
+- statusBar indicates level and language
+- suppressed the .ui file
+- fixed the bug in levels 3 & 4 (prevented upper-case letters and got it wrong in those 2 levels)
+
+25 February 2002
+- dutch sounds
+- setup dialog for language
+- if file or sound not found: warning
+- cleaned code
+- changed sounds from wav to mp3
+
diff --git a/klettres/INSTALL b/klettres/INSTALL
new file mode 100644
index 00000000..02a4a074
--- /dev/null
+++ b/klettres/INSTALL
@@ -0,0 +1,167 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes a while. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 4. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/klettres/Makefile.am b/klettres/Makefile.am
new file mode 100644
index 00000000..fec74446
--- /dev/null
+++ b/klettres/Makefile.am
@@ -0,0 +1,13 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+
+SUBDIRS = klettres
+
+EXTRA_DIST = klettres.kdevprj AUTHORS COPYING ChangeLog INSTALL README TODO klettres.lsm
+
+####### kdevelop will overwrite this part!!! (end)############
+# not a GNU package. You can remove this line, if
+# have all needed files, that a GNU package needs
+AUTOMAKE_OPTIONS = foreign
+
+
+include ../admin/Doxyfile.am
diff --git a/klettres/TODO b/klettres/TODO
new file mode 100644
index 00000000..c0f9cc70
--- /dev/null
+++ b/klettres/TODO
@@ -0,0 +1,3 @@
+APRIL 2005
+
+- fix backspace key problem \ No newline at end of file
diff --git a/klettres/klettres.lsm b/klettres/klettres.lsm
new file mode 100644
index 00000000..46729874
--- /dev/null
+++ b/klettres/klettres.lsm
@@ -0,0 +1,14 @@
+Begin3
+Title: KLettres
+Version: 0.2
+Entered-date:
+Description:
+Keywords:
+Author: Anne-Marie Mahfouf <annma@kde.org>
+Maintained-by: Anne-Marie Mahfouf <annma@kde.org>
+Primary-site:
+Home-page: http://edu.kde.org/klettres
+Original-site:
+Platforms: Linux and other Unices
+Copying-policy: GNU Public License
+End
diff --git a/klettres/klettres/Makefile.am b/klettres/klettres/Makefile.am
new file mode 100644
index 00000000..46b1c832
--- /dev/null
+++ b/klettres/klettres/Makefile.am
@@ -0,0 +1,59 @@
+####### kdevelop will overwrite this part!!! (begin)##########
+bin_PROGRAMS = klettres
+
+## INCLUDES were found outside kdevelop specific part
+
+klettres_SOURCES = fontsdlg.ui klettres.cpp klnewstuff.cpp main.cpp klettresview.cpp soundfactory.cpp prefs.kcfgc timerdlg.ui timer.cpp
+klettres_LDADD = $(LIB_KDEUI) -lknewstuff
+
+SUBDIRS = pics data icons
+
+xdg_apps_DATA = klettres.desktop
+kde_kcfg_DATA = klettres.kcfg
+kde_conf_DATA = klettresrc
+
+appdir = $(kde_datadir)/klettres
+app_DATA = klettresui.rc
+
+####### kdevelop will overwrite this part!!! (end)############
+# set the include path for X, qt and KDE
+INCLUDES= $(all_includes)
+
+METASOURCES = AUTO
+
+KDE_ICON = AUTO
+
+# the library search path.
+klettres_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/klettres.pot;
+
+LANGS = fr en
+SUBS = alpha syllab
+
+xmlen_DATA = en/sounds.xml
+xmlendir = $(kde_datadir)/klettres/en
+
+xmlfr_DATA = fr/sounds.xml
+xmlfrdir = $(kde_datadir)/klettres/fr
+
+install-data-local:
+ @for lang in $(LANGS); do \
+ for sub in $(SUBS); do \
+ $(mkinstalldirs) $(DESTDIR)$(kde_datadir)/klettres/$$lang/$$sub ;\
+ list=`cd $(srcdir)/$$lang/$$sub && ls -1d *` ;\
+ for file in $$list; do \
+ if test -f $(srcdir)/$$lang/$$sub/$$file; then \
+ echo $(INSTALL_DATA) $(srcdir)/$$lang/$$sub/$$file $(DESTDIR)$(kde_datadir)/klettres/$$lang/$$sub/$$file ;\
+ $(INSTALL_DATA) $(srcdir)/$$lang/$$sub/$$file $(DESTDIR)$(kde_datadir)/klettres/$$lang/$$sub/$$file ;\
+ fi ;\
+ done ;\
+ done ;\
+ done
+
+uninstall-local:
+ for lang in $(LANGS); do \
+ rm -rf $(DESTDIR)$(kde_datadir)/klettres/$$lang ;\
+ done
+
diff --git a/klettres/klettres/data/Makefile.am b/klettres/klettres/data/Makefile.am
new file mode 100644
index 00000000..5c8b00e6
--- /dev/null
+++ b/klettres/klettres/data/Makefile.am
@@ -0,0 +1,6 @@
+SUBDIRS = $(AUTODIRS)
+xml_DATA = sounds.xml
+xmldir = $(kde_datadir)/klettres/data
+
+
+
diff --git a/klettres/klettres/data/langs/Makefile.am b/klettres/klettres/data/langs/Makefile.am
new file mode 100644
index 00000000..6f39922b
--- /dev/null
+++ b/klettres/klettres/data/langs/Makefile.am
@@ -0,0 +1,2 @@
+txt_DATA=cs.txt da.txt sk.txt es.txt de.txt nds.txt
+txtdir=$(kde_datadir)/klettres
diff --git a/klettres/klettres/data/langs/cs.txt b/klettres/klettres/data/langs/cs.txt
new file mode 100644
index 00000000..7f78811e
--- /dev/null
+++ b/klettres/klettres/data/langs/cs.txt
@@ -0,0 +1,7 @@
+Ž \ No newline at end of file
diff --git a/klettres/klettres/data/langs/da.txt b/klettres/klettres/data/langs/da.txt
new file mode 100644
index 00000000..899e8cb2
--- /dev/null
+++ b/klettres/klettres/data/langs/da.txt
@@ -0,0 +1,3 @@
+Ø \ No newline at end of file
diff --git a/klettres/klettres/data/langs/de.txt b/klettres/klettres/data/langs/de.txt
new file mode 100644
index 00000000..8300c35a
--- /dev/null
+++ b/klettres/klettres/data/langs/de.txt
@@ -0,0 +1,4 @@
+ß \ No newline at end of file
diff --git a/klettres/klettres/data/langs/es.txt b/klettres/klettres/data/langs/es.txt
new file mode 100644
index 00000000..d8cd5ed1
--- /dev/null
+++ b/klettres/klettres/data/langs/es.txt
@@ -0,0 +1,2 @@
+Ü \ No newline at end of file
diff --git a/klettres/klettres/data/langs/nds.txt b/klettres/klettres/data/langs/nds.txt
new file mode 100644
index 00000000..455b2a2b
--- /dev/null
+++ b/klettres/klettres/data/langs/nds.txt
@@ -0,0 +1,4 @@
diff --git a/klettres/klettres/data/langs/sk.txt b/klettres/klettres/data/langs/sk.txt
new file mode 100644
index 00000000..9ae15968
--- /dev/null
+++ b/klettres/klettres/data/langs/sk.txt
@@ -0,0 +1,16 @@
+Ž \ No newline at end of file
diff --git a/klettres/klettres/data/sounds.xml b/klettres/klettres/data/sounds.xml
new file mode 100644
index 00000000..2b3650d4
--- /dev/null
+++ b/klettres/klettres/data/sounds.xml
@@ -0,0 +1,878 @@
+<!--
+ KDE EDU KLettres
+
+ Thanks to Eric Bischoff (KTuberling)
+
+ Modify this file if you want to add new sounds
+ or modify existing ones.
+
+ IMPORTANT: when you modify this file, save it using kwrite or kate with Save as and choose
+ utf8 in the encoding combobox on the right of the file title.
+-->
+
+<klettres>
+
+<language code="cs">
+
+ <menuitem>
+ <label>&amp;Czech</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="cs/alpha/a-0.ogg" />
+ <sound name="B" file="cs/alpha/a-1.ogg" />
+ <sound name="C" file="cs/alpha/a-2.ogg" />
+ <sound name="D" file="cs/alpha/a-3.ogg" />
+ <sound name="E" file="cs/alpha/a-4.ogg" />
+ <sound name="F" file="cs/alpha/a-5.ogg" />
+ <sound name="G" file="cs/alpha/a-6.ogg" />
+ <sound name="H" file="cs/alpha/a-7.ogg" />
+ <sound name="I" file="cs/alpha/a-8.ogg" />
+ <sound name="J" file="cs/alpha/a-9.ogg" />
+ <sound name="K" file="cs/alpha/a-10.ogg" />
+ <sound name="L" file="cs/alpha/a-11.ogg" />
+ <sound name="M" file="cs/alpha/a-12.ogg" />
+ <sound name="N" file="cs/alpha/a-13.ogg" />
+ <sound name="O" file="cs/alpha/a-14.ogg" />
+ <sound name="P" file="cs/alpha/a-15.ogg" />
+ <sound name="Q" file="cs/alpha/a-16.ogg" />
+ <sound name="R" file="cs/alpha/a-17.ogg" />
+ <sound name="S" file="cs/alpha/a-18.ogg" />
+ <sound name="T" file="cs/alpha/a-19.ogg" />
+ <sound name="U" file="cs/alpha/a-20.ogg" />
+ <sound name="V" file="cs/alpha/a-21.ogg" />
+ <sound name="W" file="cs/alpha/a-22.ogg" />
+ <sound name="X" file="cs/alpha/a-23.ogg" />
+ <sound name="Y" file="cs/alpha/a-24.ogg" />
+ <sound name="Z" file="cs/alpha/a-25.ogg" />
+ <sound name="Š" file="cs/alpha/a-26.ogg" />
+ <sound name="Ť" file="cs/alpha/a-27.ogg" />
+ <sound name="Ž" file="cs/alpha/a-28.ogg" />
+ <sound name="Č" file="cs/alpha/a-29.ogg" />
+ <sound name="Ď" file="cs/alpha/a-30.ogg" />
+ <sound name="Ř" file="cs/alpha/a-31.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="BA" file="cs/syllab/ad-0.ogg" />
+ <sound name="DO" file="cs/syllab/ad-1.ogg" />
+ <sound name="KA" file="cs/syllab/ad-2.ogg" />
+ <sound name="KO" file="cs/syllab/ad-3.ogg" />
+ <sound name="LE" file="cs/syllab/ad-4.ogg" />
+ <sound name="MÁ" file="cs/syllab/ad-5.ogg" />
+ <sound name="ME" file="cs/syllab/ad-6.ogg" />
+ <sound name="NE" file="cs/syllab/ad-7.ogg" />
+ <sound name="NO" file="cs/syllab/ad-8.ogg" />
+ <sound name="PI" file="cs/syllab/ad-9.ogg" />
+ <sound name="ŘE" file="cs/syllab/ad-10.ogg" />
+ <sound name="SE" file="cs/syllab/ad-11.ogg" />
+ <sound name="SI" file="cs/syllab/ad-12.ogg" />
+ <sound name="TA" file="cs/syllab/ad-13.ogg" />
+ <sound name="TE" file="cs/syllab/ad-14.ogg" />
+ <sound name="TO" file="cs/syllab/ad-15.ogg" />
+ <sound name="TU" file="cs/syllab/ad-16.ogg" />
+ <sound name="ZE" file="cs/syllab/ad-17.ogg" />
+ </syllables>
+
+ </language>
+
+<language code="da">
+
+ <menuitem>
+ <label>&amp;Danish</label>
+ </menuitem>
+ <alphabet>
+ <sound name="A" file="da/alpha/a-0.ogg" />
+ <sound name="B" file="da/alpha/a-1.ogg" />
+ <sound name="C" file="da/alpha/a-2.ogg" />
+ <sound name="D" file="da/alpha/a-3.ogg" />
+ <sound name="E" file="da/alpha/a-4.ogg" />
+ <sound name="F" file="da/alpha/a-5.ogg" />
+ <sound name="G" file="da/alpha/a-6.ogg" />
+ <sound name="H" file="da/alpha/a-7.ogg" />
+ <sound name="I" file="da/alpha/a-8.ogg" />
+ <sound name="J" file="da/alpha/a-9.ogg" />
+ <sound name="K" file="da/alpha/a-10.ogg" />
+ <sound name="L" file="da/alpha/a-11.ogg" />
+ <sound name="M" file="da/alpha/a-12.ogg" />
+ <sound name="N" file="da/alpha/a-13.ogg" />
+ <sound name="O" file="da/alpha/a-14.ogg" />
+ <sound name="P" file="da/alpha/a-15.ogg" />
+ <sound name="Q" file="da/alpha/a-16.ogg" />
+ <sound name="R" file="da/alpha/a-17.ogg" />
+ <sound name="S" file="da/alpha/a-18.ogg" />
+ <sound name="T" file="da/alpha/a-19.ogg" />
+ <sound name="U" file="da/alpha/a-20.ogg" />
+ <sound name="V" file="da/alpha/a-21.ogg" />
+ <sound name="W" file="da/alpha/a-22.ogg" />
+ <sound name="X" file="da/alpha/a-23.ogg" />
+ <sound name="Y" file="da/alpha/a-24.ogg" />
+ <sound name="Z" file="da/alpha/a-25.ogg" />
+ <sound name="Æ" file="da/alpha/a-26.ogg" />
+ <sound name="Ø" file="da/alpha/a-27.ogg" />
+ <sound name="Å" file="da/alpha/a-28.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="AD" file="da/syllab/ad-0.ogg" />
+ <sound name="BE" file="da/syllab/ad-1.ogg" />
+ <sound name="BÅ" file="da/syllab/ad-2.ogg" />
+ <sound name="DA" file="da/syllab/ad-3.ogg" />
+ <sound name="DY" file="da/syllab/ad-4.ogg" />
+ <sound name="EN" file="da/syllab/ad-5.ogg" />
+ <sound name="ER" file="da/syllab/ad-6.ogg" />
+ <sound name="ET" file="da/syllab/ad-7.ogg" />
+ <sound name="ES" file="da/syllab/ad-8.ogg" />
+ <sound name="FO" file="da/syllab/ad-9.ogg" />
+ <sound name="GA" file="da/syllab/ad-10.ogg" />
+ <sound name="HU" file="da/syllab/ad-11.ogg" />
+ <sound name="HØ" file="da/syllab/ad-12.ogg" />
+ <sound name="IN" file="da/syllab/ad-13.ogg" />
+ <sound name="LE" file="da/syllab/ad-14.ogg" />
+ <sound name="ME" file="da/syllab/ad-15.ogg" />
+ <sound name="MO" file="da/syllab/ad-16.ogg" />
+ <sound name="MU" file="da/syllab/ad-17.ogg" />
+ <sound name="NY" file="da/syllab/ad-18.ogg" />
+ <sound name="OG" file="da/syllab/ad-19.ogg" />
+ <sound name="OM" file="da/syllab/ad-20.ogg" />
+ <sound name="OP" file="da/syllab/ad-21.ogg" />
+ <sound name="RE" file="da/syllab/ad-22.ogg" />
+ <sound name="TE" file="da/syllab/ad-23.ogg" />
+ <sound name="UD" file="da/syllab/ad-24.ogg" />
+ <sound name="VI" file="da/syllab/ad-25.ogg" />
+ <sound name="VÆ" file="da/syllab/ad-26.ogg" />
+ <sound name="ÅR" file="da/syllab/ad-27.ogg" />
+ </syllables>
+
+ </language>
+
+ <language code="en">
+ <menuitem>
+ <label>&amp;English</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="en/alpha/A.ogg" />
+ <sound name="B" file="en/alpha/B.ogg" />
+ <sound name="C" file="en/alpha/C.ogg" />
+ <sound name="D" file="en/alpha/D.ogg" />
+ <sound name="E" file="en/alpha/E.ogg" />
+ <sound name="F" file="en/alpha/F.ogg" />
+ <sound name="G" file="en/alpha/G.ogg" />
+ <sound name="H" file="en/alpha/H.ogg" />
+ <sound name="I" file="en/alpha/I.ogg" />
+ <sound name="J" file="en/alpha/J.ogg" />
+ <sound name="K" file="en/alpha/K.ogg" />
+ <sound name="L" file="en/alpha/L.ogg" />
+ <sound name="M" file="en/alpha/M.ogg" />
+ <sound name="N" file="en/alpha/N.ogg" />
+ <sound name="O" file="en/alpha/O.ogg" />
+ <sound name="P" file="en/alpha/P.ogg" />
+ <sound name="Q" file="en/alpha/Q.ogg" />
+ <sound name="R" file="en/alpha/R.ogg" />
+ <sound name="S" file="en/alpha/S.ogg" />
+ <sound name="T" file="en/alpha/T.ogg" />
+ <sound name="U" file="en/alpha/U.ogg" />
+ <sound name="V" file="en/alpha/V.ogg" />
+ <sound name="W" file="en/alpha/W.ogg" />
+ <sound name="X" file="en/alpha/X.ogg" />
+ <sound name="Y" file="en/alpha/Y.ogg" />
+ <sound name="Z" file="en/alpha/Z.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="AR" file="en/syllab/ar.ogg" />
+ <sound name="AW" file="en/syllab/aw.ogg" />
+ <sound name="CAR" file="en/syllab/car.ogg" />
+ <sound name="DOG" file="en/syllab/dog.ogg" />
+ <sound name="FIX" file="en/syllab/fix.ogg" />
+ <sound name="GAS" file="en/syllab/gas.ogg" />
+ <sound name="GEM" file="en/syllab/gem.ogg" />
+ <sound name="HOT" file="en/syllab/hot.ogg" />
+ <sound name="JET" file="en/syllab/jet.ogg" />
+ <sound name="KEY" file="en/syllab/key.ogg" />
+ <sound name="ME" file="en/syllab/me.ogg" />
+ <sound name="MY" file="en/syllab/my.ogg" />
+ <sound name="NO" file="en/syllab/no.ogg" />
+ <sound name="PET" file="en/syllab/pet.ogg" />
+ <sound name="SAW" file="en/syllab/saw.ogg" />
+ <sound name="SAY" file="en/syllab/say.ogg" />
+ <sound name="SIT" file="en/syllab/sit.ogg" />
+ <sound name="SKY" file="en/syllab/sky.ogg" />
+ <sound name="TH" file="en/syllab/th.ogg" />
+ </syllables>
+
+ </language>
+
+ <language code="fr">
+
+ <menuitem>
+ <label>&amp;French</label>
+ </menuitem>
+ <alphabet>
+ <sound name="A" file="fr/alpha/a-0.ogg" />
+ <sound name="B" file="fr/alpha/a-1.ogg" />
+ <sound name="C" file="fr/alpha/a-2.ogg" />
+ <sound name="D" file="fr/alpha/a-3.ogg" />
+ <sound name="E" file="fr/alpha/a-4.ogg" />
+ <sound name="F" file="fr/alpha/a-5.ogg" />
+ <sound name="G" file="fr/alpha/a-6.ogg" />
+ <sound name="H" file="fr/alpha/a-7.ogg" />
+ <sound name="I" file="fr/alpha/a-8.ogg" />
+ <sound name="J" file="fr/alpha/a-9.ogg" />
+ <sound name="K" file="fr/alpha/a-10.ogg" />
+ <sound name="L" file="fr/alpha/a-11.ogg" />
+ <sound name="M" file="fr/alpha/a-12.ogg" />
+ <sound name="N" file="fr/alpha/a-13.ogg" />
+ <sound name="O" file="fr/alpha/a-14.ogg" />
+ <sound name="P" file="fr/alpha/a-15.ogg" />
+ <sound name="Q" file="fr/alpha/a-16.ogg" />
+ <sound name="R" file="fr/alpha/a-17.ogg" />
+ <sound name="S" file="fr/alpha/a-18.ogg" />
+ <sound name="T" file="fr/alpha/a-19.ogg" />
+ <sound name="U" file="fr/alpha/a-20.ogg" />
+ <sound name="V" file="fr/alpha/a-21.ogg" />
+ <sound name="W" file="fr/alpha/a-22.ogg" />
+ <sound name="X" file="fr/alpha/a-23.ogg" />
+ <sound name="Y" file="fr/alpha/a-24.ogg" />
+ <sound name="Z" file="fr/alpha/a-25.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="LA" file="fr/syllab/ad-0.ogg" />
+ <sound name="LE" file="fr/syllab/ad-1.ogg" />
+ <sound name="LI" file="fr/syllab/ad-2.ogg" />
+ <sound name="LO" file="fr/syllab/ad-3.ogg" />
+ <sound name="LU" file="fr/syllab/ad-4.ogg" />
+ <sound name="DE" file="fr/syllab/ad-5.ogg" />
+ <sound name="DA" file="fr/syllab/ad-6.ogg" />
+ <sound name="DI" file="fr/syllab/ad-7.ogg" />
+ <sound name="DO" file="fr/syllab/ad-8.ogg" />
+ <sound name="DU" file="fr/syllab/ad-9.ogg" />
+ <sound name="ME" file="fr/syllab/ad-10.ogg" />
+ <sound name="MA" file="fr/syllab/ad-11.ogg" />
+ <sound name="MO" file="fr/syllab/ad-12.ogg" />
+ <sound name="MI" file="fr/syllab/ad-13.ogg" />
+ <sound name="MU" file="fr/syllab/ad-14.ogg" />
+ <sound name="RA" file="fr/syllab/ad-15.ogg" />
+ <sound name="RE" file="fr/syllab/ad-16.ogg" />
+ <sound name="RI" file="fr/syllab/ad-17.ogg" />
+ <sound name="RO" file="fr/syllab/ad-18.ogg" />
+ <sound name="RU" file="fr/syllab/ad-19.ogg" />
+ <sound name="PO" file="fr/syllab/ad-20.ogg" />
+ <sound name="PA" file="fr/syllab/ad-21.ogg" />
+ <sound name="PI" file="fr/syllab/ad-22.ogg" />
+ <sound name="PU" file="fr/syllab/ad-23.ogg" />
+ <sound name="SA" file="fr/syllab/ad-24.ogg" />
+ <sound name="SI" file="fr/syllab/ad-25.ogg" />
+ <sound name="SO" file="fr/syllab/ad-26.ogg" />
+ <sound name="SU" file="fr/syllab/ad-27.ogg" />
+ </syllables>
+
+ </language>
+
+
+ <language code="nl">
+
+ <menuitem>
+ <label>D&amp;utch</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="nl/alpha/a-0.ogg" />
+ <sound name="B" file="nl/alpha/a-1.ogg" />
+ <sound name="D" file="nl/alpha/a-2.ogg" />
+ <sound name="E" file="nl/alpha/a-3.ogg" />
+ <sound name="F" file="nl/alpha/a-4.ogg" />
+ <sound name="G" file="nl/alpha/a-5.ogg" />
+ <sound name="H" file="nl/alpha/a-6.ogg" />
+ <sound name="I" file="nl/alpha/a-7.ogg" />
+ <sound name="J" file="nl/alpha/a-8.ogg" />
+ <sound name="K" file="nl/alpha/a-9.ogg" />
+ <sound name="L" file="nl/alpha/a-10.ogg" />
+ <sound name="M" file="nl/alpha/a-11.ogg" />
+ <sound name="N" file="nl/alpha/a-12.ogg" />
+ <sound name="O" file="nl/alpha/a-13.ogg" />
+ <sound name="P" file="nl/alpha/a-14.ogg" />
+ <sound name="R" file="nl/alpha/a-15.ogg" />
+ <sound name="S" file="nl/alpha/a-16.ogg" />
+ <sound name="T" file="nl/alpha/a-17.ogg" />
+ <sound name="U" file="nl/alpha/a-18.ogg" />
+ <sound name="V" file="nl/alpha/a-19.ogg" />
+ <sound name="W" file="nl/alpha/a-20.ogg" />
+ <sound name="Z" file="nl/alpha/a-21.ogg" />
+ </alphabet>
+ <syllables>
+ <sound name="AA" file="nl/syllab/ad-0.ogg" />
+ <sound name="AAN" file="nl/syllab/ad-1.ogg" />
+ <sound name="AAP" file="nl/syllab/ad-2.ogg" />
+ <sound name="EE" file="nl/syllab/ad-3.ogg" />
+ <sound name="EEN" file="nl/syllab/ad-4.ogg" />
+ <sound name="EET" file="nl/syllab/ad-5.ogg" />
+ <sound name="EI" file="nl/syllab/ad-6.ogg" />
+ <sound name="EN" file="nl/syllab/ad-7.ogg" />
+ <sound name="EU" file="nl/syllab/ad-8.ogg" />
+ <sound name="IE" file="nl/syllab/ad-9.ogg" />
+ <sound name="IK" file="nl/syllab/ad-10.ogg" />
+ <sound name="IN" file="nl/syllab/ad-11.ogg" />
+ <sound name="IS" file="nl/syllab/ad-12.ogg" />
+ <sound name="ME" file="nl/syllab/ad-13.ogg" />
+ <sound name="OE" file="nl/syllab/ad-14.ogg" />
+ <sound name="OM" file="nl/syllab/ad-15.ogg" />
+ <sound name="OO" file="nl/syllab/ad-16.ogg" />
+ <sound name="OOG" file="nl/syllab/ad-17.ogg" />
+ <sound name="OOM" file="nl/syllab/ad-18.ogg" />
+ <sound name="OOR" file="nl/syllab/ad-19.ogg" />
+ <sound name="OP" file="nl/syllab/ad-20.ogg" />
+ <sound name="TE" file="nl/syllab/ad-21.ogg" />
+ <sound name="UI" file="nl/syllab/ad-22.ogg" />
+ <sound name="UU" file="nl/syllab/ad-23.ogg" />
+ <sound name="UUR" file="nl/syllab/ad-24.ogg" />
+ <sound name="YS" file="nl/syllab/ad-25.ogg" />
+ </syllables>
+
+ </language>
+
+
+ <language code="sk">
+
+ <menuitem>
+ <label>&amp;Slovak</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="sk/alpha/a-0.ogg" />
+ <sound name="Á" file="sk/alpha/a-1.ogg" />
+ <sound name="Ä" file="sk/alpha/a-2.ogg" />
+ <sound name="B" file="sk/alpha/a-3.ogg" />
+ <sound name="C" file="sk/alpha/a-4.ogg" />
+ <sound name="Č" file="sk/alpha/a-5.ogg" />
+ <sound name="D" file="sk/alpha/a-6.ogg" />
+ <sound name="Ď" file="sk/alpha/a-7.ogg" />
+ <sound name="E" file="sk/alpha/a-8.ogg" />
+ <sound name="É" file="sk/alpha/a-9.ogg" />
+ <sound name="F" file="sk/alpha/a-10.ogg" />
+ <sound name="G" file="sk/alpha/a-11.ogg" />
+ <sound name="H" file="sk/alpha/a-12.ogg" />
+ <sound name="I" file="sk/alpha/a-14.ogg" />
+ <sound name="Í" file="sk/alpha/a-15.ogg" />
+ <sound name="J" file="sk/alpha/a-16.ogg" />
+ <sound name="K" file="sk/alpha/a-17.ogg" />
+ <sound name="L" file="sk/alpha/a-18.ogg" />
+ <sound name="Ĺ" file="sk/alpha/a-19.ogg" />
+ <sound name="Ľ" file="sk/alpha/a-20.ogg" />
+ <sound name="M" file="sk/alpha/a-21.ogg" />
+ <sound name="N" file="sk/alpha/a-22.ogg" />
+ <sound name="Ň" file="sk/alpha/a-23.ogg" />
+ <sound name="O" file="sk/alpha/a-24.ogg" />
+ <sound name="Ó" file="sk/alpha/a-25.ogg" />
+ <sound name="Ô" file="sk/alpha/a-26.ogg" />
+ <sound name="P" file="sk/alpha/a-27.ogg" />
+ <sound name="Q" file="sk/alpha/a-28.ogg" />
+ <sound name="R" file="sk/alpha/a-29.ogg" />
+ <sound name="Ŕ" file="sk/alpha/a-30.ogg" />
+ <sound name="S" file="sk/alpha/a-31.ogg" />
+ <sound name="Š" file="sk/alpha/a-32.ogg" />
+ <sound name="T" file="sk/alpha/a-33.ogg" />
+ <sound name="Ť" file="sk/alpha/a-34.ogg" />
+ <sound name="U" file="sk/alpha/a-35.ogg" />
+ <sound name="Ú" file="sk/alpha/a-36.ogg" />
+ <sound name="V" file="sk/alpha/a-37.ogg" />
+ <sound name="X" file="sk/alpha/a-38.ogg" />
+ <sound name="Y" file="sk/alpha/a-39.ogg" />
+ <sound name="Z" file="sk/alpha/a-40.ogg" />
+ <sound name="Ž" file="sk/alpha/a-41.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="AJ" file="sk/syllab/ad-0.ogg" />
+ <sound name="BA" file="sk/syllab/ad-1.ogg" />
+ <sound name="BU" file="sk/syllab/ad-2.ogg" />
+ <sound name="ČA" file="sk/syllab/ad-3.ogg" />
+ <sound name="ČE" file="sk/syllab/ad-4.ogg" />
+ <sound name="CI" file="sk/syllab/ad-5.ogg" />
+ <sound name="CO" file="sk/syllab/ad-6.ogg" />
+ <sound name="DA" file="sk/syllab/ad-7.ogg" />
+ <sound name="ĎA" file="sk/syllab/ad-8.ogg" />
+ <sound name="ĎO" file="sk/syllab/ad-9.ogg" />
+ <sound name="DO" file="sk/syllab/ad-10.ogg" />
+ <sound name="DZ" file="sk/syllab/ad-11.ogg" />
+ <sound name="EJ" file="sk/syllab/ad-12.ogg" />
+ <sound name="FA" file="sk/syllab/ad-13.ogg" />
+ <sound name="FU" file="sk/syllab/ad-14.ogg" />
+ <sound name="GA" file="sk/syllab/ad-15.ogg" />
+ <sound name="GU" file="sk/syllab/ad-16.ogg" />
+ <sound name="HA" file="sk/syllab/ad-17.ogg" />
+ <sound name="HU" file="sk/syllab/ad-18.ogg" />
+ <sound name="IA" file="sk/syllab/ad-19.ogg" />
+ <sound name="IE" file="sk/syllab/ad-20.ogg" />
+ <sound name="IU" file="sk/syllab/ad-21.ogg" />
+ <sound name="JA" file="sk/syllab/ad-22.ogg" />
+ <sound name="JAJ" file="sk/syllab/ad-23.ogg" />
+ <sound name="JE" file="sk/syllab/ad-24.ogg" />
+ <sound name="JEJ" file="sk/syllab/ad-25.ogg" />
+ <sound name="JO" file="sk/syllab/ad-26.ogg" />
+ <sound name="JOJ" file="sk/syllab/ad-27.ogg" />
+ <sound name="JUJ" file="sk/syllab/ad-28.ogg" />
+ <sound name="JÚ" file="sk/syllab/ad-29.ogg" />
+ <sound name="KA" file="sk/syllab/ad-30.ogg" />
+ <sound name="KO" file="sk/syllab/ad-31.ogg" />
+ <sound name="LA" file="sk/syllab/ad-32.ogg" />
+ <sound name="LÁ" file="sk/syllab/ad-33.ogg" />
+ <sound name="LÉ" file="sk/syllab/ad-34.ogg" />
+ <sound name="ĽA" file="sk/syllab/ad-35.ogg" />
+ <sound name="ĽU" file="sk/syllab/ad-36.ogg" />
+ <sound name="LU" file="sk/syllab/ad-37.ogg" />
+ <sound name="LÚ" file="sk/syllab/ad-38.ogg" />
+ <sound name="MA" file="sk/syllab/ad-40.ogg" />
+ <sound name="MÁ" file="sk/syllab/ad-41.ogg" />
+ <sound name="MÁME" file="sk/syllab/ad-42.ogg" />
+ <sound name="MAME" file="sk/syllab/ad-43.ogg" />
+ <sound name="ME" file="sk/syllab/ad-44.ogg" />
+ <sound name="MÉ" file="sk/syllab/ad-45.ogg" />
+ <sound name="MI" file="sk/syllab/ad-46.ogg" />
+ <sound name="MÍ" file="sk/syllab/ad-47.ogg" />
+ <sound name="MO" file="sk/syllab/ad-48.ogg" />
+ <sound name="MU" file="sk/syllab/ad-49.ogg" />
+ <sound name="MÚ" file="sk/syllab/ad-50.ogg" />
+ <sound name="NA" file="sk/syllab/ad-51.ogg" />
+ <sound name="ŇA" file="sk/syllab/ad-52.ogg" />
+ <sound name="ŇU" file="sk/syllab/ad-53.ogg" />
+ <sound name="NO" file="sk/syllab/ad-54.ogg" />
+ <sound name="OJ" file="sk/syllab/ad-55.ogg" />
+ <sound name="OU" file="sk/syllab/ad-56.ogg" />
+ <sound name="PÍ" file="sk/syllab/ad-57.ogg" />
+ <sound name="RA" file="sk/syllab/ad-58.ogg" />
+ <sound name="RU" file="sk/syllab/ad-59.ogg" />
+ <sound name="SA" file="sk/syllab/ad-60.ogg" />
+ <sound name="SE" file="sk/syllab/ad-61.ogg" />
+ <sound name="SI" file="sk/syllab/ad-62.ogg" />
+ <sound name="SO" file="sk/syllab/ad-63.ogg" />
+ <sound name="ŠA" file="sk/syllab/ad-64.ogg" />
+ <sound name="ŠI" file="sk/syllab/ad-65.ogg" />
+ <sound name="SÚ" file="sk/syllab/ad-66.ogg" />
+ <sound name="TO" file="sk/syllab/ad-67.ogg" />
+ <sound name="ŤA" file="sk/syllab/ad-68.ogg" />
+ <sound name="ŤU" file="sk/syllab/ad-69.ogg" />
+ <sound name="TU" file="sk/syllab/ad-70.ogg" />
+ <sound name="VA" file="sk/syllab/ad-71.ogg" />
+ <sound name="VE" file="sk/syllab/ad-72.ogg" />
+ <sound name="VI" file="sk/syllab/ad-73.ogg" />
+ <sound name="VO" file="sk/syllab/ad-74.ogg" />
+ <sound name="VU" file="sk/syllab/ad-75.ogg" />
+ <sound name="ŽA" file="sk/syllab/ad-76.ogg" />
+ <sound name="ŽI" file="sk/syllab/ad-77.ogg" />
+ </syllables>
+
+ </language>
+
+ <language code="it">
+
+ <menuitem>
+ <label>&amp;Italian</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="it/alpha/a.ogg" />
+ <sound name="B" file="it/alpha/b.ogg" />
+ <sound name="C" file="it/alpha/c.ogg" />
+ <sound name="D" file="it/alpha/d.ogg" />
+ <sound name="E" file="it/alpha/e.ogg" />
+ <sound name="F" file="it/alpha/f.ogg" />
+ <sound name="G" file="it/alpha/d.ogg" />
+ <sound name="H" file="it/alpha/h.ogg" />
+ <sound name="I" file="it/alpha/i.ogg" />
+ <sound name="J" file="it/alpha/j.ogg" />
+ <sound name="K" file="it/alpha/k.ogg" />
+ <sound name="L" file="it/alpha/l.ogg" />
+ <sound name="M" file="it/alpha/m.ogg" />
+ <sound name="N" file="it/alpha/n.ogg" />
+ <sound name="O" file="it/alpha/o.ogg" />
+ <sound name="P" file="it/alpha/p.ogg" />
+ <sound name="Q" file="it/alpha/q.ogg" />
+ <sound name="R" file="it/alpha/r.ogg" />
+ <sound name="S" file="it/alpha/s.ogg" />
+ <sound name="T" file="it/alpha/t.ogg" />
+ <sound name="U" file="it/alpha/u.ogg" />
+ <sound name="W" file="it/alpha/w.ogg" />
+ <sound name="X" file="it/alpha/x.ogg" />
+ <sound name="Y" file="it/alpha/y.ogg" />
+ <sound name="Z" file="it/alpha/z.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="BA" file="it/syllab/ba.ogg" />
+ <sound name="BE" file="it/syllab/be.ogg" />
+ <sound name="BI" file="it/syllab/bi.ogg" />
+ <sound name="BO" file="it/syllab/bo.ogg" />
+ <sound name="BU" file="it/syllab/bu.ogg" />
+ <sound name="CA" file="it/syllab/ca.ogg" />
+ <sound name="CE" file="it/syllab/ce.ogg" />
+ <sound name="CI" file="it/syllab/ci.ogg" />
+ <sound name="CO" file="it/syllab/co.ogg" />
+ <sound name="CU" file="it/syllab/cu.ogg" />
+ <sound name="DA" file="it/syllab/da.ogg" />
+ <sound name="DE" file="it/syllab/de.ogg" />
+ <sound name="DI" file="it/syllab/di.ogg" />
+ <sound name="DO" file="it/syllab/do.ogg" />
+ <sound name="DU" file="it/syllab/du.ogg" />
+ <sound name="FA" file="it/syllab/fa.ogg" />
+ <sound name="FE" file="it/syllab/fe.ogg" />
+ <sound name="FI" file="it/syllab/fi.ogg" />
+ <sound name="FO" file="it/syllab/fo.ogg" />
+ <sound name="GA" file="it/syllab/ga.ogg" />
+ <sound name="GE" file="it/syllab/ge.ogg" />
+ <sound name="GI" file="it/syllab/gi.ogg" />
+ <sound name="GLI" file="it/syllab/gli.ogg" />
+ <sound name="GNA" file="it/syllab/gna.ogg" />
+ <sound name="GNE" file="it/syllab/gne.ogg" />
+ <sound name="GNI" file="it/syllab/gni.ogg" />
+ <sound name="GNO" file="it/syllab/gno.ogg" />
+ <sound name="GNU" file="it/syllab/gnu.ogg" />
+ <sound name="GO" file="it/syllab/go.ogg" />
+ <sound name="GU" file="it/syllab/gu.ogg" />
+ <sound name="LA" file="it/syllab/la.ogg" />
+ <sound name="LE" file="it/syllab/le.ogg" />
+ <sound name="LI" file="it/syllab/li.ogg" />
+ <sound name="LO" file="it/syllab/lo.ogg" />
+ <sound name="LU" file="it/syllab/lu.ogg" />
+ <sound name="MA" file="it/syllab/ma.ogg" />
+ <sound name="ME" file="it/syllab/me.ogg" />
+ <sound name="MI" file="it/syllab/mi.ogg" />
+ <sound name="MO" file="it/syllab/mo.ogg" />
+ <sound name="MU" file="it/syllab/mu.ogg" />
+ <sound name="NA" file="it/syllab/na.ogg" />
+ <sound name="NE" file="it/syllab/ne.ogg" />
+ <sound name="NI" file="it/syllab/ni.ogg" />
+ <sound name="NO" file="it/syllab/no.ogg" />
+ <sound name="NU" file="it/syllab/nu.ogg" />
+ <sound name="PA" file="it/syllab/pa.ogg" />
+ <sound name="PE" file="it/syllab/pe.ogg" />
+ <sound name="PI" file="it/syllab/pi.ogg" />
+ <sound name="PO" file="it/syllab/po.ogg" />
+ <sound name="PU" file="it/syllab/pu.ogg" />
+ <sound name="RA" file="it/syllab/ra.ogg" />
+ <sound name="RE" file="it/syllab/re.ogg" />
+ <sound name="RI" file="it/syllab/ri.ogg" />
+ <sound name="RO" file="it/syllab/ro.ogg" />
+ <sound name="RU" file="it/syllab/ru.ogg" />
+ <sound name="SA" file="it/syllab/sa.ogg" />
+ <sound name="SE" file="it/syllab/se.ogg" />
+ <sound name="SI" file="it/syllab/si.ogg" />
+ <sound name="SO" file="it/syllab/so.ogg" />
+ <sound name="SU" file="it/syllab/su.ogg" />
+ <sound name="TA" file="it/syllab/ta.ogg" />
+ <sound name="TE" file="it/syllab/te.ogg" />
+ <sound name="TI" file="it/syllab/ti.ogg" />
+ <sound name="TO" file="it/syllab/to.ogg" />
+ <sound name="TU" file="it/syllab/tu.ogg" />
+ <sound name="VA" file="it/syllab/va.ogg" />
+ <sound name="VE" file="it/syllab/ve.ogg" />
+ <sound name="VI" file="it/syllab/vi.ogg" />
+ <sound name="VO" file="it/syllab/vo.ogg" />
+ <sound name="VU" file="it/syllab/vu.ogg" />
+ <sound name="ZA" file="it/syllab/za.ogg" />
+ <sound name="ZE" file="it/syllab/ze.ogg" />
+ <sound name="ZI" file="it/syllab/zi.ogg" />
+ <sound name="ZO" file="it/syllab/zo.ogg" />
+ <sound name="ZU" file="it/syllab/zu.ogg" />
+ </syllables>
+
+ </language>
+
+ <language code="hi-ro">
+
+ <menuitem>
+ <label>Romanized&amp;Hindi</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="hi-ro/alpha/a0.ogg" />
+ <sound name="AA" file="hi-ro/alpha/a1.ogg" />
+ <sound name="I" file="hi-ro/alpha/a2.ogg" />
+ <sound name="EE" file="hi-ro/alpha/a3.ogg" />
+ <sound name="U" file="hi-ro/alpha/a4.ogg" />
+ <sound name="OO" file="hi-ro/alpha/a5.ogg" />
+ <sound name="E " file="hi-ro/alpha/a6.ogg" />
+ <sound name="AI" file="hi-ro/alpha/a7.ogg" />
+ <sound name="O" file="hi-ro/alpha/a8.ogg" />
+ <sound name="AU" file="hi-ro/alpha/a9.ogg" />
+ <sound name="KA" file="hi-ro/alpha/a10.ogg" />
+ <sound name="KHA" file="hi-ro/alpha/a11.ogg" />
+ <sound name="GA" file="hi-ro/alpha/a12.ogg" />
+ <sound name="GHA" file="hi-ro/alpha/a13.ogg" />
+ <sound name="CHA" file="hi-ro/alpha/a14.ogg" />
+ <sound name="CHHA" file="hi-ro/alpha/a15.ogg" />
+ <sound name="JA" file="hi-ro/alpha/a16.ogg" />
+ <sound name="JHA" file="hi-ro/alpha/a17.ogg" />
+ <sound name="TA" file="hi-ro/alpha/a18.ogg" />
+ <sound name="DHA" file="hi-ro/alpha/a19.ogg" />
+ <sound name="DA" file="hi-ro/alpha/a20.ogg" />
+ <sound name="THA" file="hi-ro/alpha/a21.ogg" />
+ <sound name="TA" file="hi-ro/alpha/a22.ogg" />
+ <sound name="THA" file="hi-ro/alpha/a23.ogg" />
+ <sound name="DA" file="hi-ro/alpha/a24.ogg" />
+ <sound name="DHA" file="hi-ro/alpha/a25.ogg" />
+ <sound name="NA" file="hi-ro/alpha/a26.ogg" />
+ <sound name="PA" file="hi-ro/alpha/a27.ogg" />
+ <sound name="PHA" file="hi-ro/alpha/a28.ogg" />
+ <sound name="BA" file="hi-ro/alpha/a29.ogg" />
+ <sound name="BHA" file="hi-ro/alpha/a30.ogg" />
+ <sound name="MA" file="hi-ro/alpha/a31.ogg" />
+ <sound name="YA" file="hi-ro/alpha/a32.ogg" />
+ <sound name="RA" file="hi-ro/alpha/a33.ogg" />
+ <sound name="LA" file="hi-ro/alpha/a34.ogg" />
+ <sound name="VA" file="hi-ro/alpha/a35.ogg" />
+ <sound name="SHA" file="hi-ro/alpha/a36.ogg" />
+ <sound name="SA" file="hi-ro/alpha/a37.ogg" />
+ <sound name="HA" file="hi-ro/alpha/a-38.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="KA" file="hi-ro/syllab/ad0.ogg" />
+ <sound name="KI" file="hi-ro/syllab/ad1.ogg" />
+ <sound name="KEE" file="hi-ro/syllab/ad2.ogg" />
+ <sound name="KU" file="hi-ro/syllab/ad3.ogg" />
+ <sound name="KOO" file="hi-ro/syllab/ad4.ogg" />
+ <sound name="KE" file="hi-ro/syllab/ad5.ogg" />
+ <sound name="KAI" file="hi-ro/syllab/ad6.ogg" />
+ <sound name="KO" file="hi-ro/syllab/ad7.ogg" />
+ <sound name="KAU" file="hi-ro/syllab/ad8.ogg" />
+ <sound name="KHA" file="hi-ro/syllab/ad9.ogg" />
+ <sound name="KHI" file="hi-ro/syllab/ad10.ogg" />
+ <sound name="KHEE" file="hi-ro/syllab/ad11.ogg" />
+ <sound name="KHU" file="hi-ro/syllab/ad12.ogg" />
+ <sound name="KHOO" file="hi-ro/syllab/ad13.ogg" />
+ <sound name="KHE" file="hi-ro/syllab/ad14.ogg" />
+ <sound name="KHAI" file="hi-ro/syllab/ad15.ogg" />
+ <sound name="KHO" file="hi-ro/syllab/ad16.ogg" />
+ <sound name="KHAU" file="hi-ro/syllab/ad17.ogg" />
+ <sound name="GA" file="hi-ro/syllab/ad18.ogg" />
+ <sound name="GI" file="hi-ro/syllab/ad19.ogg" />
+ <sound name="GEE" file="hi-ro/syllab/ad20.ogg" />
+ <sound name="GU" file="hi-ro/syllab/ad21.ogg" />
+ <sound name="GOO" file="hi-ro/syllab/ad22.ogg" />
+ <sound name="GE" file="hi-ro/syllab/ad23.ogg" />
+ <sound name="GAI" file="hi-ro/syllab/ad24.ogg" />
+ <sound name="GO" file="hi-ro/syllab/ad25.ogg" />
+ <sound name="GAU" file="hi-ro/syllab/ad26.ogg" />
+ <sound name="GHA" file="hi-ro/syllab/ad27.ogg" />
+ <sound name="GHI" file="hi-ro/syllab/ad28.ogg" />
+ <sound name="GHEE" file="hi-ro/syllab/ad29.ogg" />
+ <sound name="GHU" file="hi-ro/syllab/ad30.ogg" />
+ <sound name="GHOO" file="hi-ro/syllab/ad31.ogg" />
+ <sound name="GHE" file="hi-ro/syllab/ad32.ogg" />
+ <sound name="GHAI" file="hi-ro/syllab/ad33.ogg" />
+ <sound name="GHO" file="hi-ro/syllab/ad34.ogg" />
+ <sound name="GHAU" file="hi-ro/syllab/ad35.ogg" />
+ <sound name="CHA" file="hi-ro/syllab/ad36.ogg" />
+ <sound name="CHI" file="hi-ro/syllab/ad37.ogg" />
+ <sound name="CHEE" file="hi-ro/syllab/ad38.ogg" />
+ <sound name="CHU" file="hi-ro/syllab/ad39.ogg" />
+ <sound name="CHOO" file="hi-ro/syllab/ad40.ogg" />
+ <sound name="CHE" file="hi-ro/syllab/ad41.ogg" />
+ <sound name="CHAI" file="hi-ro/syllab/ad42.ogg" />
+ <sound name="CHO" file="hi-ro/syllab/ad43.ogg" />
+ <sound name="CHAU" file="hi-ro/syllab/ad44.ogg" />
+ <sound name="CHHA" file="hi-ro/syllab/ad45.ogg" />
+ <sound name="CHHI" file="hi-ro/syllab/ad46.ogg" />
+ <sound name="CHHEE" file="hi-ro/syllab/ad47.ogg" />
+ <sound name="CHHU" file="hi-ro/syllab/ad48.ogg" />
+ <sound name="CHHOO" file="hi-ro/syllab/ad49.ogg" />
+ <sound name="CHHE" file="hi-ro/syllab/ad50.ogg" />
+ <sound name="CHHAI" file="hi-ro/syllab/ad51.ogg" />
+ <sound name="CHHO" file="hi-ro/syllab/ad52.ogg" />
+ <sound name="CHHAU" file="hi-ro/syllab/ad53.ogg" />
+ <sound name="JA" file="hi-ro/syllab/ad54.ogg" />
+ <sound name="JI" file="hi-ro/syllab/ad55.ogg" />
+ <sound name="JEE" file="hi-ro/syllab/ad56.ogg" />
+ <sound name="JU" file="hi-ro/syllab/ad57.ogg" />
+ <sound name="JOO" file="hi-ro/syllab/ad58.ogg" />
+ <sound name="JE" file="hi-ro/syllab/ad59.ogg" />
+ <sound name="JAI" file="hi-ro/syllab/ad60.ogg" />
+ <sound name="JO" file="hi-ro/syllab/ad61.ogg" />
+ <sound name="JAU" file="hi-ro/syllab/ad62.ogg" />
+ <sound name="JHA" file="hi-ro/syllab/ad63.ogg" />
+ <sound name="JHI" file="hi-ro/syllab/ad64.ogg" />
+ <sound name="JHEE" file="hi-ro/syllab/ad65.ogg" />
+ <sound name="JHU" file="hi-ro/syllab/ad66.ogg" />
+ <sound name="JHOO" file="hi-ro/syllab/ad67.ogg" />
+ <sound name="JHE" file="hi-ro/syllab/ad68.ogg" />
+ <sound name="JHAI" file="hi-ro/syllab/ad69.ogg" />
+ <sound name="JHO" file="hi-ro/syllab/ad70.ogg" />
+ <sound name="JHAU" file="hi-ro/syllab/ad71.ogg" />
+ <sound name="TA" file="hi-ro/syllab/ad72.ogg" />
+ <sound name="TI" file="hi-ro/syllab/ad73.ogg" />
+ <sound name="TEE" file="hi-ro/syllab/ad74.ogg" />
+ <sound name="TU" file="hi-ro/syllab/ad75.ogg" />
+ <sound name="TOO" file="hi-ro/syllab/ad76.ogg" />
+ <sound name="TE" file="hi-ro/syllab/ad77.ogg" />
+ <sound name="TAI" file="hi-ro/syllab/ad78.ogg" />
+ <sound name="TO" file="hi-ro/syllab/ad79.ogg" />
+ <sound name="TAU" file="hi-ro/syllab/ad80.ogg" />
+ <sound name="THA" file="hi-ro/syllab/ad81.ogg" />
+ <sound name="THI" file="hi-ro/syllab/ad82.ogg" />
+ <sound name="THEE" file="hi-ro/syllab/ad83.ogg" />
+ <sound name="THU" file="hi-ro/syllab/ad84.ogg" />
+ <sound name="THOO" file="hi-ro/syllab/ad85.ogg" />
+ <sound name="THE" file="hi-ro/syllab/ad86.ogg" />
+ <sound name="THAI" file="hi-ro/syllab/ad87.ogg" />
+ <sound name="THO" file="hi-ro/syllab/ad88.ogg" />
+ <sound name="THAU" file="hi-ro/syllab/ad89.ogg" />
+ <sound name="DA" file="hi-ro/syllab/ad90.ogg" />
+ <sound name="DI" file="hi-ro/syllab/ad91.ogg" />
+ <sound name="DEE" file="hi-ro/syllab/ad92.ogg" />
+ <sound name="DU" file="hi-ro/syllab/ad93.ogg" />
+ <sound name="DOO" file="hi-ro/syllab/ad94.ogg" />
+ <sound name="DE" file="hi-ro/syllab/ad95.ogg" />
+ <sound name="DAI" file="hi-ro/syllab/ad96.ogg" />
+ <sound name="DO" file="hi-ro/syllab/ad97.ogg" />
+ <sound name="DAU" file="hi-ro/syllab/ad98.ogg" />
+ <sound name="TA" file="hi-ro/syllab/ad99.ogg" />
+ <sound name="TI" file="hi-ro/syllab/ad100.ogg" />
+ <sound name="TEE" file="hi-ro/syllab/ad101.ogg" />
+ <sound name="TU" file="hi-ro/syllab/ad102.ogg" />
+ <sound name="TOO" file="hi-ro/syllab/ad103.ogg" />
+ <sound name="TE" file="hi-ro/syllab/ad104.ogg" />
+ <sound name="TAI" file="hi-ro/syllab/ad105.ogg" />
+ <sound name="TO" file="hi-ro/syllab/ad106.ogg" />
+ <sound name="TAU" file="hi-ro/syllab/ad107.ogg" />
+ <sound name="DA" file="hi-ro/syllab/ad108.ogg" />
+ <sound name="DI" file="hi-ro/syllab/ad109.ogg" />
+ <sound name="DEE" file="hi-ro/syllab/ad110.ogg" />
+ <sound name="DU" file="hi-ro/syllab/ad111.ogg" />
+ <sound name="DOO" file="hi-ro/syllab/ad112.ogg" />
+ <sound name="DE" file="hi-ro/syllab/ad113.ogg" />
+ <sound name="DAI" file="hi-ro/syllab/ad114.ogg" />
+ <sound name="DO" file="hi-ro/syllab/ad115.ogg" />
+ <sound name="DAU" file="hi-ro/syllab/ad116.ogg" />
+ <sound name="DHA" file="hi-ro/syllab/ad117.ogg" />
+ <sound name="DHI" file="hi-ro/syllab/ad118.ogg" />
+ <sound name="DHEE" file="hi-ro/syllab/ad119.ogg" />
+ <sound name="DHU" file="hi-ro/syllab/ad120.ogg" />
+ <sound name="DHOO" file="hi-ro/syllab/ad121.ogg" />
+ <sound name="DHE" file="hi-ro/syllab/ad122.ogg" />
+ <sound name="DHAI" file="hi-ro/syllab/ad123.ogg" />
+ <sound name="DHO" file="hi-ro/syllab/ad124.ogg" />
+ <sound name="DHAU" file="hi-ro/syllab/ad125.ogg" />
+ <sound name="NA" file="hi-ro/syllab/ad126.ogg" />
+ <sound name="NI" file="hi-ro/syllab/ad127.ogg" />
+ <sound name="NEE" file="hi-ro/syllab/ad128.ogg" />
+ <sound name="NU" file="hi-ro/syllab/ad129.ogg" />
+ <sound name="NOO" file="hi-ro/syllab/ad130.ogg" />
+ <sound name="NE" file="hi-ro/syllab/ad131.ogg" />
+ <sound name="NAI" file="hi-ro/syllab/ad132.ogg" />
+ <sound name="NO" file="hi-ro/syllab/ad133.ogg" />
+ <sound name="NAO" file="hi-ro/syllab/ad134.ogg" />
+ <sound name="PA" file="hi-ro/syllab/ad135.ogg" />
+ <sound name="PI" file="hi-ro/syllab/ad136.ogg" />
+ <sound name="PEE" file="hi-ro/syllab/ad137.ogg" />
+ <sound name="PU" file="hi-ro/syllab/ad138.ogg" />
+ <sound name="POO" file="hi-ro/syllab/ad139.ogg" />
+ <sound name="PE" file="hi-ro/syllab/ad140.ogg" />
+ <sound name="PAI" file="hi-ro/syllab/ad141.ogg" />
+ <sound name="PO" file="hi-ro/syllab/ad142.ogg" />
+ <sound name="PAU" file="hi-ro/syllab/ad143.ogg" />
+ <sound name="PHA" file="hi-ro/syllab/ad144.ogg" />
+ <sound name="PHI" file="hi-ro/syllab/ad145.ogg" />
+ <sound name="PHEE" file="hi-ro/syllab/ad146.ogg" />
+ <sound name="PHU" file="hi-ro/syllab/ad147.ogg" />
+ <sound name="PHOO" file="hi-ro/syllab/ad148.ogg" />
+ <sound name="PHE" file="hi-ro/syllab/ad149.ogg" />
+ <sound name="PHAI" file="hi-ro/syllab/ad150.ogg" />
+ <sound name="PHO" file="hi-ro/syllab/ad151.ogg" />
+ <sound name="PHAO" file="hi-ro/syllab/ad152.ogg" />
+ <sound name="BA" file="hi-ro/syllab/ad153.ogg" />
+ <sound name="BI" file="hi-ro/syllab/ad154.ogg" />
+ <sound name="BEE" file="hi-ro/syllab/ad155.ogg" />
+ <sound name="BU" file="hi-ro/syllab/ad156.ogg" />
+ <sound name="BOO" file="hi-ro/syllab/ad157.ogg" />
+ <sound name="BE" file="hi-ro/syllab/ad158.ogg" />
+ <sound name="BAI" file="hi-ro/syllab/ad159.ogg" />
+ <sound name="BO" file="hi-ro/syllab/ad160.ogg" />
+ <sound name="BAU" file="hi-ro/syllab/ad161.ogg" />
+ <sound name="BHA" file="hi-ro/syllab/ad162.ogg" />
+ <sound name="BHI" file="hi-ro/syllab/ad163.ogg" />
+ <sound name="BHEE" file="hi-ro/syllab/ad164.ogg" />
+ <sound name="BHU" file="hi-ro/syllab/ad165.ogg" />
+ <sound name="BHOO" file="hi-ro/syllab/ad166.ogg" />
+ <sound name="BHE" file="hi-ro/syllab/ad167.ogg" />
+ <sound name="BHAI" file="hi-ro/syllab/ad168.ogg" />
+ <sound name="BHO" file="hi-ro/syllab/ad169.ogg" />
+ <sound name="BHAO" file="hi-ro/syllab/ad170.ogg" />
+ <sound name="MA" file="hi-ro/syllab/ad171.ogg" />
+ <sound name="MI" file="hi-ro/syllab/ad172.ogg" />
+ <sound name="MEE" file="hi-ro/syllab/ad173.ogg" />
+ <sound name="MU" file="hi-ro/syllab/ad174.ogg" />
+ <sound name="MOO" file="hi-ro/syllab/ad175.ogg" />
+ <sound name="ME" file="hi-ro/syllab/ad176.ogg" />
+ <sound name="MAI" file="hi-ro/syllab/ad177.ogg" />
+ <sound name="MO" file="hi-ro/syllab/ad178.ogg" />
+ <sound name="MAU" file="hi-ro/syllab/ad179.ogg" />
+ <sound name="YA" file="hi-ro/syllab/ad180.ogg" />
+ <sound name="YI" file="hi-ro/syllab/ad181.ogg" />
+ <sound name="YEE" file="hi-ro/syllab/ad182.ogg" />
+ <sound name="YU" file="hi-ro/syllab/ad183.ogg" />
+ <sound name="YOO" file="hi-ro/syllab/ad184.ogg" />
+ <sound name="YE" file="hi-ro/syllab/ad185.ogg" />
+ <sound name="YAI" file="hi-ro/syllab/ad186.ogg" />
+ <sound name="YO" file="hi-ro/syllab/ad187.ogg" />
+ <sound name="YAU" file="hi-ro/syllab/ad188.ogg" />
+ <sound name="RA" file="hi-ro/syllab/ad189.ogg" />
+ <sound name="RI" file="hi-ro/syllab/ad190.ogg" />
+ <sound name="REE" file="hi-ro/syllab/ad191.ogg" />
+ <sound name="RU" file="hi-ro/syllab/ad192.ogg" />
+ <sound name="ROO" file="hi-ro/syllab/ad193.ogg" />
+ <sound name="RE" file="hi-ro/syllab/ad194.ogg" />
+ <sound name="RAI" file="hi-ro/syllab/ad195.ogg" />
+ <sound name="RO" file="hi-ro/syllab/ad196.ogg" />
+ <sound name="RAU" file="hi-ro/syllab/ad197.ogg" />
+ <sound name="LA" file="hi-ro/syllab/ad198.ogg" />
+ <sound name="LI" file="hi-ro/syllab/ad199.ogg" />
+ <sound name="LEE" file="hi-ro/syllab/ad200.ogg" />
+ <sound name="LU" file="hi-ro/syllab/ad201.ogg" />
+ <sound name="LOO" file="hi-ro/syllab/ad202.ogg" />
+ <sound name="LE" file="hi-ro/syllab/ad203.ogg" />
+ <sound name="LAI" file="hi-ro/syllab/ad204.ogg" />
+ <sound name="LO" file="hi-ro/syllab/ad205.ogg" />
+ <sound name="LAU" file="hi-ro/syllab/ad206.ogg" />
+ <sound name="VA" file="hi-ro/syllab/ad207.ogg" />
+ <sound name="VI" file="hi-ro/syllab/ad208.ogg" />
+ <sound name="VEE" file="hi-ro/syllab/ad209.ogg" />
+ <sound name="VU" file="hi-ro/syllab/ad210.ogg" />
+ <sound name="VOO" file="hi-ro/syllab/ad211.ogg" />
+ <sound name="VE" file="hi-ro/syllab/ad212.ogg" />
+ <sound name="VAI" file="hi-ro/syllab/ad213.ogg" />
+ <sound name="VO" file="hi-ro/syllab/ad214.ogg" />
+ <sound name="VAU" file="hi-ro/syllab/ad215.ogg" />
+ <sound name="SA" file="hi-ro/syllab/ad216.ogg" />
+ <sound name="SI" file="hi-ro/syllab/ad217.ogg" />
+ <sound name="SEE" file="hi-ro/syllab/ad218.ogg" />
+ <sound name="SU" file="hi-ro/syllab/ad219.ogg" />
+ <sound name="SOO" file="hi-ro/syllab/ad220.ogg" />
+ <sound name="SE" file="hi-ro/syllab/ad221.ogg" />
+ <sound name="SAI" file="hi-ro/syllab/ad222.ogg" />
+ <sound name="SO" file="hi-ro/syllab/ad223.ogg" />
+ <sound name="SAU" file="hi-ro/syllab/ad224.ogg" />
+ <sound name="SHA" file="hi-ro/syllab/ad225.ogg" />
+ <sound name="SHI" file="hi-ro/syllab/ad226.ogg" />
+ <sound name="SHEE" file="hi-ro/syllab/ad227.ogg" />
+ <sound name="SHU" file="hi-ro/syllab/ad228.ogg" />
+ <sound name="SHOO" file="hi-ro/syllab/ad229.ogg" />
+ <sound name="SHE" file="hi-ro/syllab/ad230.ogg" />
+ <sound name="SHAI" file="hi-ro/syllab/ad231.ogg" />
+ <sound name="SHO" file="hi-ro/syllab/ad232.ogg" />
+ <sound name="SHAU" file="hi-ro/syllab/ad233.ogg" />
+ <sound name="HA" file="hi-ro/syllab/ad234.ogg" />
+ <sound name="HI" file="hi-ro/syllab/ad235.ogg" />
+ <sound name="HEE" file="hi-ro/syllab/ad236.ogg" />
+ <sound name="HU" file="hi-ro/syllab/ad236.ogg" />
+ <sound name="HOO" file="hi-ro/syllab/ad237.ogg" />
+ <sound name="HE" file="hi-ro/syllab/ad238.ogg" />
+ <sound name="HAI" file="hi-ro/syllab/ad239.ogg" />
+ <sound name="HO" file="hi-ro/syllab/ad240.ogg" />
+ <sound name="HAU" file="hi-ro/syllab/ad241.ogg" />
+ </syllables>
+
+ </language>
+</klettres>
diff --git a/klettres/klettres/en/alpha/A.ogg b/klettres/klettres/en/alpha/A.ogg
new file mode 100644
index 00000000..2fd80c45
--- /dev/null
+++ b/klettres/klettres/en/alpha/A.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/B.ogg b/klettres/klettres/en/alpha/B.ogg
new file mode 100644
index 00000000..b324af70
--- /dev/null
+++ b/klettres/klettres/en/alpha/B.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/C.ogg b/klettres/klettres/en/alpha/C.ogg
new file mode 100644
index 00000000..3587b7be
--- /dev/null
+++ b/klettres/klettres/en/alpha/C.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/D.ogg b/klettres/klettres/en/alpha/D.ogg
new file mode 100644
index 00000000..6fe5b319
--- /dev/null
+++ b/klettres/klettres/en/alpha/D.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/E.ogg b/klettres/klettres/en/alpha/E.ogg
new file mode 100644
index 00000000..598dd6c6
--- /dev/null
+++ b/klettres/klettres/en/alpha/E.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/F.ogg b/klettres/klettres/en/alpha/F.ogg
new file mode 100644
index 00000000..ef54f336
--- /dev/null
+++ b/klettres/klettres/en/alpha/F.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/G.ogg b/klettres/klettres/en/alpha/G.ogg
new file mode 100644
index 00000000..afd4aa66
--- /dev/null
+++ b/klettres/klettres/en/alpha/G.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/H.ogg b/klettres/klettres/en/alpha/H.ogg
new file mode 100644
index 00000000..ad0f847b
--- /dev/null
+++ b/klettres/klettres/en/alpha/H.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/I.ogg b/klettres/klettres/en/alpha/I.ogg
new file mode 100644
index 00000000..76e0b109
--- /dev/null
+++ b/klettres/klettres/en/alpha/I.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/J.ogg b/klettres/klettres/en/alpha/J.ogg
new file mode 100644
index 00000000..6ed9ad6c
--- /dev/null
+++ b/klettres/klettres/en/alpha/J.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/K.ogg b/klettres/klettres/en/alpha/K.ogg
new file mode 100644
index 00000000..7a3a1b97
--- /dev/null
+++ b/klettres/klettres/en/alpha/K.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/L.ogg b/klettres/klettres/en/alpha/L.ogg
new file mode 100644
index 00000000..d1370390
--- /dev/null
+++ b/klettres/klettres/en/alpha/L.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/M.ogg b/klettres/klettres/en/alpha/M.ogg
new file mode 100644
index 00000000..4495b9cc
--- /dev/null
+++ b/klettres/klettres/en/alpha/M.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/N.ogg b/klettres/klettres/en/alpha/N.ogg
new file mode 100644
index 00000000..dd195c3c
--- /dev/null
+++ b/klettres/klettres/en/alpha/N.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/O.ogg b/klettres/klettres/en/alpha/O.ogg
new file mode 100644
index 00000000..0f56fd43
--- /dev/null
+++ b/klettres/klettres/en/alpha/O.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/P.ogg b/klettres/klettres/en/alpha/P.ogg
new file mode 100644
index 00000000..8f13b609
--- /dev/null
+++ b/klettres/klettres/en/alpha/P.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/Q.ogg b/klettres/klettres/en/alpha/Q.ogg
new file mode 100644
index 00000000..94728401
--- /dev/null
+++ b/klettres/klettres/en/alpha/Q.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/R.ogg b/klettres/klettres/en/alpha/R.ogg
new file mode 100644
index 00000000..4241ebbf
--- /dev/null
+++ b/klettres/klettres/en/alpha/R.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/S.ogg b/klettres/klettres/en/alpha/S.ogg
new file mode 100644
index 00000000..15a91cc5
--- /dev/null
+++ b/klettres/klettres/en/alpha/S.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/T.ogg b/klettres/klettres/en/alpha/T.ogg
new file mode 100644
index 00000000..2374745d
--- /dev/null
+++ b/klettres/klettres/en/alpha/T.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/U.ogg b/klettres/klettres/en/alpha/U.ogg
new file mode 100644
index 00000000..2c10dbd4
--- /dev/null
+++ b/klettres/klettres/en/alpha/U.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/V.ogg b/klettres/klettres/en/alpha/V.ogg
new file mode 100644
index 00000000..afe7f9bd
--- /dev/null
+++ b/klettres/klettres/en/alpha/V.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/W.ogg b/klettres/klettres/en/alpha/W.ogg
new file mode 100644
index 00000000..93e1742f
--- /dev/null
+++ b/klettres/klettres/en/alpha/W.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/X.ogg b/klettres/klettres/en/alpha/X.ogg
new file mode 100644
index 00000000..2cbd07b6
--- /dev/null
+++ b/klettres/klettres/en/alpha/X.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/Y.ogg b/klettres/klettres/en/alpha/Y.ogg
new file mode 100644
index 00000000..d1eb408d
--- /dev/null
+++ b/klettres/klettres/en/alpha/Y.ogg
Binary files differ
diff --git a/klettres/klettres/en/alpha/Z.ogg b/klettres/klettres/en/alpha/Z.ogg
new file mode 100644
index 00000000..d0a0fb11
--- /dev/null
+++ b/klettres/klettres/en/alpha/Z.ogg
Binary files differ
diff --git a/klettres/klettres/en/sounds.xml b/klettres/klettres/en/sounds.xml
new file mode 100644
index 00000000..03469205
--- /dev/null
+++ b/klettres/klettres/en/sounds.xml
@@ -0,0 +1,75 @@
+<!--
+ KDE EDU KLettres
+
+ Thanks to Eric Bischoff (KTuberling)
+
+ Modify this file if you want to add new sounds
+ or modify existing ones.
+
+ IMPORTANT: when you modify this file, save it using kwrite or kate with Save as and choose
+ utf8 in the encoding combobox on the right of the file title.
+-->
+
+<klettres>
+
+ <language code="en">
+ <menuitem>
+ <label>&amp;English</label>
+ </menuitem>
+
+ <alphabet>
+ <sound name="A" file="en/alpha/A.ogg" />
+ <sound name="B" file="en/alpha/B.ogg" />
+ <sound name="C" file="en/alpha/C.ogg" />
+ <sound name="D" file="en/alpha/D.ogg" />
+ <sound name="E" file="en/alpha/E.ogg" />
+ <sound name="F" file="en/alpha/F.ogg" />
+ <sound name="G" file="en/alpha/G.ogg" />
+ <sound name="H" file="en/alpha/H.ogg" />
+ <sound name="I" file="en/alpha/I.ogg" />
+ <sound name="J" file="en/alpha/J.ogg" />
+ <sound name="K" file="en/alpha/K.ogg" />
+ <sound name="L" file="en/alpha/L.ogg" />
+ <sound name="M" file="en/alpha/M.ogg" />
+ <sound name="N" file="en/alpha/N.ogg" />
+ <sound name="O" file="en/alpha/O.ogg" />
+ <sound name="P" file="en/alpha/P.ogg" />
+ <sound name="Q" file="en/alpha/Q.ogg" />
+ <sound name="R" file="en/alpha/R.ogg" />
+ <sound name="S" file="en/alpha/S.ogg" />
+ <sound name="T" file="en/alpha/T.ogg" />
+ <sound name="U" file="en/alpha/U.ogg" />
+ <sound name="V" file="en/alpha/V.ogg" />
+ <sound name="W" file="en/alpha/W.ogg" />
+ <sound name="X" file="en/alpha/X.ogg" />
+ <sound name="Y" file="en/alpha/Y.ogg" />
+ <sound name="Z" file="en/alpha/Z.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="AR" file="en/syllab/ar.ogg" />
+ <sound name="AW" file="en/syllab/aw.ogg" />
+ <sound name="CAR" file="en/syllab/car.ogg" />
+ <sound name="DOG" file="en/syllab/dog.ogg" />
+ <sound name="FIX" file="en/syllab/fix.ogg" />
+ <sound name="GAS" file="en/syllab/gas.ogg" />
+ <sound name="GEM" file="en/syllab/gem.ogg" />
+ <sound name="HOT" file="en/syllab/hot.ogg" />
+ <sound name="JET" file="en/syllab/jet.ogg" />
+ <sound name="KEY" file="en/syllab/key.ogg" />
+ <sound name="ME" file="en/syllab/me.ogg" />
+ <sound name="MY" file="en/syllab/my.ogg" />
+ <sound name="NO" file="en/syllab/no.ogg" />
+ <sound name="PET" file="en/syllab/pet.ogg" />
+ <sound name="SAW" file="en/syllab/saw.ogg" />
+ <sound name="SAY" file="en/syllab/say.ogg" />
+ <sound name="SIT" file="en/syllab/sit.ogg" />
+ <sound name="SKY" file="en/syllab/sky.ogg" />
+ <sound name="TH" file="en/syllab/th.ogg" />
+ </syllables>
+
+ </language>
+
+
+
+</klettres>
diff --git a/klettres/klettres/en/syllab/aw.ogg b/klettres/klettres/en/syllab/aw.ogg
new file mode 100644
index 00000000..51bd021e
--- /dev/null
+++ b/klettres/klettres/en/syllab/aw.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/car.ogg b/klettres/klettres/en/syllab/car.ogg
new file mode 100644
index 00000000..2639b8b8
--- /dev/null
+++ b/klettres/klettres/en/syllab/car.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/ch.ogg b/klettres/klettres/en/syllab/ch.ogg
new file mode 100644
index 00000000..554e9e38
--- /dev/null
+++ b/klettres/klettres/en/syllab/ch.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/dog.ogg b/klettres/klettres/en/syllab/dog.ogg
new file mode 100644
index 00000000..f0f18f5d
--- /dev/null
+++ b/klettres/klettres/en/syllab/dog.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/fix.ogg b/klettres/klettres/en/syllab/fix.ogg
new file mode 100644
index 00000000..dee499cb
--- /dev/null
+++ b/klettres/klettres/en/syllab/fix.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/gas.ogg b/klettres/klettres/en/syllab/gas.ogg
new file mode 100644
index 00000000..ea1d4485
--- /dev/null
+++ b/klettres/klettres/en/syllab/gas.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/gem.ogg b/klettres/klettres/en/syllab/gem.ogg
new file mode 100644
index 00000000..80225ba5
--- /dev/null
+++ b/klettres/klettres/en/syllab/gem.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/hot.ogg b/klettres/klettres/en/syllab/hot.ogg
new file mode 100644
index 00000000..e99a52c2
--- /dev/null
+++ b/klettres/klettres/en/syllab/hot.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/jet.ogg b/klettres/klettres/en/syllab/jet.ogg
new file mode 100644
index 00000000..56f62276
--- /dev/null
+++ b/klettres/klettres/en/syllab/jet.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/key.ogg b/klettres/klettres/en/syllab/key.ogg
new file mode 100644
index 00000000..173416cb
--- /dev/null
+++ b/klettres/klettres/en/syllab/key.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/me.ogg b/klettres/klettres/en/syllab/me.ogg
new file mode 100644
index 00000000..1b236faa
--- /dev/null
+++ b/klettres/klettres/en/syllab/me.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/my.ogg b/klettres/klettres/en/syllab/my.ogg
new file mode 100644
index 00000000..be98cc12
--- /dev/null
+++ b/klettres/klettres/en/syllab/my.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/no.ogg b/klettres/klettres/en/syllab/no.ogg
new file mode 100644
index 00000000..2686ec5d
--- /dev/null
+++ b/klettres/klettres/en/syllab/no.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/pet.ogg b/klettres/klettres/en/syllab/pet.ogg
new file mode 100644
index 00000000..cd12ab50
--- /dev/null
+++ b/klettres/klettres/en/syllab/pet.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/saw.ogg b/klettres/klettres/en/syllab/saw.ogg
new file mode 100644
index 00000000..634fcf2e
--- /dev/null
+++ b/klettres/klettres/en/syllab/saw.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/say.ogg b/klettres/klettres/en/syllab/say.ogg
new file mode 100644
index 00000000..02e65e4b
--- /dev/null
+++ b/klettres/klettres/en/syllab/say.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/sit.ogg b/klettres/klettres/en/syllab/sit.ogg
new file mode 100644
index 00000000..1f9ac418
--- /dev/null
+++ b/klettres/klettres/en/syllab/sit.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/sky.ogg b/klettres/klettres/en/syllab/sky.ogg
new file mode 100644
index 00000000..18111663
--- /dev/null
+++ b/klettres/klettres/en/syllab/sky.ogg
Binary files differ
diff --git a/klettres/klettres/en/syllab/th.ogg b/klettres/klettres/en/syllab/th.ogg
new file mode 100644
index 00000000..d8184c67
--- /dev/null
+++ b/klettres/klettres/en/syllab/th.ogg
Binary files differ
diff --git a/klettres/klettres/fontsdlg.ui b/klettres/klettres/fontsdlg.ui
new file mode 100644
index 00000000..34c72ad5
--- /dev/null
+++ b/klettres/klettres/fontsdlg.ui
@@ -0,0 +1,38 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>fontsdlg</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>fontsdlg</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>484</width>
+ <height>330</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KFontChooser" row="0" column="0">
+ <property name="name">
+ <cstring>kcfg_Font</cstring>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>48</pointsize>
+ <bold>1</bold>
+ </font>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>kfontdialog.h</includehint>
+</includehints>
+</UI>
diff --git a/klettres/klettres/fr/alpha/a-0.ogg b/klettres/klettres/fr/alpha/a-0.ogg
new file mode 100644
index 00000000..dfbbb361
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-0.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-1.ogg b/klettres/klettres/fr/alpha/a-1.ogg
new file mode 100644
index 00000000..44aed1b6
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-1.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-10.ogg b/klettres/klettres/fr/alpha/a-10.ogg
new file mode 100644
index 00000000..5d984de5
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-10.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-11.ogg b/klettres/klettres/fr/alpha/a-11.ogg
new file mode 100644
index 00000000..43a89b32
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-11.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-12.ogg b/klettres/klettres/fr/alpha/a-12.ogg
new file mode 100644
index 00000000..e769e8cb
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-12.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-13.ogg b/klettres/klettres/fr/alpha/a-13.ogg
new file mode 100644
index 00000000..b1bce28b
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-13.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-14.ogg b/klettres/klettres/fr/alpha/a-14.ogg
new file mode 100644
index 00000000..7d2ff40a
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-14.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-15.ogg b/klettres/klettres/fr/alpha/a-15.ogg
new file mode 100644
index 00000000..70302d2f
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-15.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-16.ogg b/klettres/klettres/fr/alpha/a-16.ogg
new file mode 100644
index 00000000..c459d599
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-16.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-17.ogg b/klettres/klettres/fr/alpha/a-17.ogg
new file mode 100644
index 00000000..4d5b9dc5
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-17.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-18.ogg b/klettres/klettres/fr/alpha/a-18.ogg
new file mode 100644
index 00000000..2cae5ed9
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-18.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-19.ogg b/klettres/klettres/fr/alpha/a-19.ogg
new file mode 100644
index 00000000..8345a447
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-19.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-2.ogg b/klettres/klettres/fr/alpha/a-2.ogg
new file mode 100644
index 00000000..7ac113e0
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-2.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-20.ogg b/klettres/klettres/fr/alpha/a-20.ogg
new file mode 100644
index 00000000..97f94041
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-20.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-21.ogg b/klettres/klettres/fr/alpha/a-21.ogg
new file mode 100644
index 00000000..b9318123
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-21.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-22.ogg b/klettres/klettres/fr/alpha/a-22.ogg
new file mode 100644
index 00000000..f4365fbf
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-22.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-23.ogg b/klettres/klettres/fr/alpha/a-23.ogg
new file mode 100644
index 00000000..d84272dc
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-23.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-24.ogg b/klettres/klettres/fr/alpha/a-24.ogg
new file mode 100644
index 00000000..c5551471
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-24.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-25.ogg b/klettres/klettres/fr/alpha/a-25.ogg
new file mode 100644
index 00000000..cf88c3c4
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-25.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-3.ogg b/klettres/klettres/fr/alpha/a-3.ogg
new file mode 100644
index 00000000..b30a553d
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-3.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-4.ogg b/klettres/klettres/fr/alpha/a-4.ogg
new file mode 100644
index 00000000..23487f9d
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-4.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-5.ogg b/klettres/klettres/fr/alpha/a-5.ogg
new file mode 100644
index 00000000..718301fa
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-5.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-6.ogg b/klettres/klettres/fr/alpha/a-6.ogg
new file mode 100644
index 00000000..3e91e04d
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-6.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-7.ogg b/klettres/klettres/fr/alpha/a-7.ogg
new file mode 100644
index 00000000..eae2effd
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-7.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-8.ogg b/klettres/klettres/fr/alpha/a-8.ogg
new file mode 100644
index 00000000..4607e214
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-8.ogg
Binary files differ
diff --git a/klettres/klettres/fr/alpha/a-9.ogg b/klettres/klettres/fr/alpha/a-9.ogg
new file mode 100644
index 00000000..5aaaec0b
--- /dev/null
+++ b/klettres/klettres/fr/alpha/a-9.ogg
Binary files differ
diff --git a/klettres/klettres/fr/sounds.xml b/klettres/klettres/fr/sounds.xml
new file mode 100644
index 00000000..f5b49577
--- /dev/null
+++ b/klettres/klettres/fr/sounds.xml
@@ -0,0 +1,81 @@
+<!--
+ KDE EDU KLettres
+
+ Thanks to Eric Bischoff (KTuberling)
+
+ Modify this file if you want to add new sounds
+ or modify existing ones.
+
+ IMPORTANT: when you modify this file, save it using kwrite or kate with Save as and choose
+ utf8 in the encoding combobox on the right of the file title.
+-->
+
+<klettres>
+
+ <language code="fr">
+
+ <menuitem>
+ <label>&amp;French</label>
+ </menuitem>
+ <alphabet>
+ <sound name="A" file="fr/alpha/a-0.ogg" />
+ <sound name="B" file="fr/alpha/a-1.ogg" />
+ <sound name="C" file="fr/alpha/a-2.ogg" />
+ <sound name="D" file="fr/alpha/a-3.ogg" />
+ <sound name="E" file="fr/alpha/a-4.ogg" />
+ <sound name="F" file="fr/alpha/a-5.ogg" />
+ <sound name="G" file="fr/alpha/a-6.ogg" />
+ <sound name="H" file="fr/alpha/a-7.ogg" />
+ <sound name="I" file="fr/alpha/a-8.ogg" />
+ <sound name="J" file="fr/alpha/a-9.ogg" />
+ <sound name="K" file="fr/alpha/a-10.ogg" />
+ <sound name="L" file="fr/alpha/a-11.ogg" />
+ <sound name="M" file="fr/alpha/a-12.ogg" />
+ <sound name="N" file="fr/alpha/a-13.ogg" />
+ <sound name="O" file="fr/alpha/a-14.ogg" />
+ <sound name="P" file="fr/alpha/a-15.ogg" />
+ <sound name="Q" file="fr/alpha/a-16.ogg" />
+ <sound name="R" file="fr/alpha/a-17.ogg" />
+ <sound name="S" file="fr/alpha/a-18.ogg" />
+ <sound name="T" file="fr/alpha/a-19.ogg" />
+ <sound name="U" file="fr/alpha/a-20.ogg" />
+ <sound name="V" file="fr/alpha/a-21.ogg" />
+ <sound name="W" file="fr/alpha/a-22.ogg" />
+ <sound name="X" file="fr/alpha/a-23.ogg" />
+ <sound name="Y" file="fr/alpha/a-24.ogg" />
+ <sound name="Z" file="fr/alpha/a-25.ogg" />
+ </alphabet>
+
+ <syllables>
+ <sound name="LA" file="fr/syllab/ad-0.ogg" />
+ <sound name="LE" file="fr/syllab/ad-1.ogg" />
+ <sound name="LI" file="fr/syllab/ad-2.ogg" />
+ <sound name="LO" file="fr/syllab/ad-3.ogg" />
+ <sound name="LU" file="fr/syllab/ad-4.ogg" />
+ <sound name="DE" file="fr/syllab/ad-5.ogg" />
+ <sound name="DA" file="fr/syllab/ad-6.ogg" />
+ <sound name="DI" file="fr/syllab/ad-7.ogg" />
+ <sound name="DO" file="fr/syllab/ad-8.ogg" />
+ <sound name="DU" file="fr/syllab/ad-9.ogg" />
+ <sound name="ME" file="fr/syllab/ad-10.ogg" />
+ <sound name="MA" file="fr/syllab/ad-11.ogg" />
+ <sound name="MO" file="fr/syllab/ad-12.ogg" />
+ <sound name="MI" file="fr/syllab/ad-13.ogg" />
+ <sound name="MU" file="fr/syllab/ad-14.ogg" />
+ <sound name="RA" file="fr/syllab/ad-15.ogg" />
+ <sound name="RE" file="fr/syllab/ad-16.ogg" />
+ <sound name="RI" file="fr/syllab/ad-17.ogg" />
+ <sound name="RO" file="fr/syllab/ad-18.ogg" />
+ <sound name="RU" file="fr/syllab/ad-19.ogg" />
+ <sound name="PO" file="fr/syllab/ad-20.ogg" />
+ <sound name="PA" file="fr/syllab/ad-21.ogg" />
+ <sound name="PI" file="fr/syllab/ad-22.ogg" />
+ <sound name="PU" file="fr/syllab/ad-23.ogg" />
+ <sound name="SA" file="fr/syllab/ad-24.ogg" />
+ <sound name="SI" file="fr/syllab/ad-25.ogg" />
+ <sound name="SO" file="fr/syllab/ad-26.ogg" />
+ <sound name="SU" file="fr/syllab/ad-27.ogg" />
+ </syllables>
+
+ </language>
+</klettres>
diff --git a/klettres/klettres/fr/syllab/ad-0.ogg b/klettres/klettres/fr/syllab/ad-0.ogg
new file mode 100644
index 00000000..6535c478
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-0.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-1.ogg b/klettres/klettres/fr/syllab/ad-1.ogg
new file mode 100644
index 00000000..43dd93a1
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-1.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-10.ogg b/klettres/klettres/fr/syllab/ad-10.ogg
new file mode 100644
index 00000000..53c2a865
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-10.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-11.ogg b/klettres/klettres/fr/syllab/ad-11.ogg
new file mode 100644
index 00000000..67c8adb2
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-11.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-12.ogg b/klettres/klettres/fr/syllab/ad-12.ogg
new file mode 100644
index 00000000..88276fcd
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-12.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-13.ogg b/klettres/klettres/fr/syllab/ad-13.ogg
new file mode 100644
index 00000000..90f9a997
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-13.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-14.ogg b/klettres/klettres/fr/syllab/ad-14.ogg
new file mode 100644
index 00000000..55a864ab
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-14.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-15.ogg b/klettres/klettres/fr/syllab/ad-15.ogg
new file mode 100644
index 00000000..719c710b
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-15.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-16.ogg b/klettres/klettres/fr/syllab/ad-16.ogg
new file mode 100644
index 00000000..a0379a91
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-16.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-17.ogg b/klettres/klettres/fr/syllab/ad-17.ogg
new file mode 100644
index 00000000..35765e24
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-17.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-18.ogg b/klettres/klettres/fr/syllab/ad-18.ogg
new file mode 100644
index 00000000..7c2ab97c
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-18.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-19.ogg b/klettres/klettres/fr/syllab/ad-19.ogg
new file mode 100644
index 00000000..43df844b
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-19.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-2.ogg b/klettres/klettres/fr/syllab/ad-2.ogg
new file mode 100644
index 00000000..7c1ac057
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-2.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-20.ogg b/klettres/klettres/fr/syllab/ad-20.ogg
new file mode 100644
index 00000000..9c8be15b
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-20.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-21.ogg b/klettres/klettres/fr/syllab/ad-21.ogg
new file mode 100644
index 00000000..24ab94ae
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-21.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-22.ogg b/klettres/klettres/fr/syllab/ad-22.ogg
new file mode 100644
index 00000000..c3fdcc65
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-22.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-23.ogg b/klettres/klettres/fr/syllab/ad-23.ogg
new file mode 100644
index 00000000..a093f6d7
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-23.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-24.ogg b/klettres/klettres/fr/syllab/ad-24.ogg
new file mode 100644
index 00000000..596d1e27
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-24.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-25.ogg b/klettres/klettres/fr/syllab/ad-25.ogg
new file mode 100644
index 00000000..1038cd25
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-25.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-26.ogg b/klettres/klettres/fr/syllab/ad-26.ogg
new file mode 100644
index 00000000..e3a67e9a
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-26.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-27.ogg b/klettres/klettres/fr/syllab/ad-27.ogg
new file mode 100644
index 00000000..6e2aadaa
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-27.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-3.ogg b/klettres/klettres/fr/syllab/ad-3.ogg
new file mode 100644
index 00000000..838adc0d
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-3.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-4.ogg b/klettres/klettres/fr/syllab/ad-4.ogg
new file mode 100644
index 00000000..f06bbf16
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-4.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-5.ogg b/klettres/klettres/fr/syllab/ad-5.ogg
new file mode 100644
index 00000000..40048c97
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-5.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-6.ogg b/klettres/klettres/fr/syllab/ad-6.ogg
new file mode 100644
index 00000000..4b146f3f
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-6.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-7.ogg b/klettres/klettres/fr/syllab/ad-7.ogg
new file mode 100644
index 00000000..ddb61a20
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-7.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-8.ogg b/klettres/klettres/fr/syllab/ad-8.ogg
new file mode 100644
index 00000000..59b83e36
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-8.ogg
Binary files differ
diff --git a/klettres/klettres/fr/syllab/ad-9.ogg b/klettres/klettres/fr/syllab/ad-9.ogg
new file mode 100644
index 00000000..34aac296
--- /dev/null
+++ b/klettres/klettres/fr/syllab/ad-9.ogg
Binary files differ
diff --git a/klettres/klettres/hi128-app-klettres.png b/klettres/klettres/hi128-app-klettres.png
new file mode 100644
index 00000000..e9f89b4f
--- /dev/null
+++ b/klettres/klettres/hi128-app-klettres.png
Binary files differ
diff --git a/klettres/klettres/hi16-app-klettres.png b/klettres/klettres/hi16-app-klettres.png
new file mode 100644
index 00000000..4030f836
--- /dev/null
+++ b/klettres/klettres/hi16-app-klettres.png
Binary files differ
diff --git a/klettres/klettres/hi22-app-klettres.png b/klettres/klettres/hi22-app-klettres.png
new file mode 100644
index 00000000..0bf8f601
--- /dev/null
+++ b/klettres/klettres/hi22-app-klettres.png
Binary files differ
diff --git a/klettres/klettres/hi32-app-klettres.png b/klettres/klettres/hi32-app-klettres.png
new file mode 100644
index 00000000..a94740b8
--- /dev/null
+++ b/klettres/klettres/hi32-app-klettres.png
Binary files differ
diff --git a/klettres/klettres/hi48-app-klettres.png b/klettres/klettres/hi48-app-klettres.png
new file mode 100644
index 00000000..4dd30ce9
--- /dev/null
+++ b/klettres/klettres/hi48-app-klettres.png
Binary files differ
diff --git a/klettres/klettres/hisc-app-klettres.svgz b/klettres/klettres/hisc-app-klettres.svgz
new file mode 100644
index 00000000..dca12f7b
--- /dev/null
+++ b/klettres/klettres/hisc-app-klettres.svgz
Binary files differ
diff --git a/klettres/klettres/icons/Makefile.am b/klettres/klettres/icons/Makefile.am
new file mode 100644
index 00000000..c8d9aaa8
--- /dev/null
+++ b/klettres/klettres/icons/Makefile.am
@@ -0,0 +1,2 @@
+klettresdir = $(kde_datadir)/klettres/icons
+klettres_ICON = AUTO
diff --git a/klettres/klettres/icons/cr128-action-klettres_desert.png b/klettres/klettres/icons/cr128-action-klettres_desert.png
new file mode 100644
index 00000000..a8d491a2
--- /dev/null
+++ b/klettres/klettres/icons/cr128-action-klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/icons/cr128-action-klettres_grownup.png b/klettres/klettres/icons/cr128-action-klettres_grownup.png
new file mode 100644
index 00000000..7051a69d
--- /dev/null
+++ b/klettres/klettres/icons/cr128-action-klettres_grownup.png
Binary files differ
diff --git a/klettres/klettres/icons/cr128-action-klettres_kids.png b/klettres/klettres/icons/cr128-action-klettres_kids.png
new file mode 100644
index 00000000..923a66fe
--- /dev/null
+++ b/klettres/klettres/icons/cr128-action-klettres_kids.png
Binary files differ
diff --git a/klettres/klettres/icons/cr16-action-klettres_desert.png b/klettres/klettres/icons/cr16-action-klettres_desert.png
new file mode 100644
index 00000000..a91c56ca
--- /dev/null
+++ b/klettres/klettres/icons/cr16-action-klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/icons/cr16-action-klettres_grownup.png b/klettres/klettres/icons/cr16-action-klettres_grownup.png
new file mode 100644
index 00000000..b3826fcb
--- /dev/null
+++ b/klettres/klettres/icons/cr16-action-klettres_grownup.png
Binary files differ
diff --git a/klettres/klettres/icons/cr16-action-klettres_kids.png b/klettres/klettres/icons/cr16-action-klettres_kids.png
new file mode 100644
index 00000000..dd56f257
--- /dev/null
+++ b/klettres/klettres/icons/cr16-action-klettres_kids.png
Binary files differ
diff --git a/klettres/klettres/icons/cr22-action-klettres_desert.png b/klettres/klettres/icons/cr22-action-klettres_desert.png
new file mode 100644
index 00000000..8f4cbec2
--- /dev/null
+++ b/klettres/klettres/icons/cr22-action-klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/icons/cr22-action-klettres_grownup.png b/klettres/klettres/icons/cr22-action-klettres_grownup.png
new file mode 100644
index 00000000..9ffc899b
--- /dev/null
+++ b/klettres/klettres/icons/cr22-action-klettres_grownup.png
Binary files differ
diff --git a/klettres/klettres/icons/cr22-action-klettres_kids.png.png b/klettres/klettres/icons/cr22-action-klettres_kids.png.png
new file mode 100644
index 00000000..712fc9ea
--- /dev/null
+++ b/klettres/klettres/icons/cr22-action-klettres_kids.png.png
Binary files differ
diff --git a/klettres/klettres/icons/cr32-action-klettres_desert.png b/klettres/klettres/icons/cr32-action-klettres_desert.png
new file mode 100644
index 00000000..3ec7fc79
--- /dev/null
+++ b/klettres/klettres/icons/cr32-action-klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/icons/cr32-action-klettres_grownup.png b/klettres/klettres/icons/cr32-action-klettres_grownup.png
new file mode 100644
index 00000000..7a541c42
--- /dev/null
+++ b/klettres/klettres/icons/cr32-action-klettres_grownup.png
Binary files differ
diff --git a/klettres/klettres/icons/cr32-action-klettres_kids.png b/klettres/klettres/icons/cr32-action-klettres_kids.png
new file mode 100644
index 00000000..dda08859
--- /dev/null
+++ b/klettres/klettres/icons/cr32-action-klettres_kids.png
Binary files differ
diff --git a/klettres/klettres/icons/cr48-action-klettres_desert.png b/klettres/klettres/icons/cr48-action-klettres_desert.png
new file mode 100644
index 00000000..f2aa087b
--- /dev/null
+++ b/klettres/klettres/icons/cr48-action-klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/icons/cr48-action-klettres_grownup.png b/klettres/klettres/icons/cr48-action-klettres_grownup.png
new file mode 100644
index 00000000..e188a658
--- /dev/null
+++ b/klettres/klettres/icons/cr48-action-klettres_grownup.png
Binary files differ
diff --git a/klettres/klettres/icons/cr48-action-klettres_kids.png b/klettres/klettres/icons/cr48-action-klettres_kids.png
new file mode 100644
index 00000000..a24a1647
--- /dev/null
+++ b/klettres/klettres/icons/cr48-action-klettres_kids.png
Binary files differ
diff --git a/klettres/klettres/icons/cr64-action-klettres_desert.png b/klettres/klettres/icons/cr64-action-klettres_desert.png
new file mode 100644
index 00000000..c05803b0
--- /dev/null
+++ b/klettres/klettres/icons/cr64-action-klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/icons/cr64-action-klettres_grownup.png.png b/klettres/klettres/icons/cr64-action-klettres_grownup.png.png
new file mode 100644
index 00000000..669a2bf3
--- /dev/null
+++ b/klettres/klettres/icons/cr64-action-klettres_grownup.png.png
Binary files differ
diff --git a/klettres/klettres/icons/cr64-action-klettres_kids.png b/klettres/klettres/icons/cr64-action-klettres_kids.png
new file mode 100644
index 00000000..9aceea21
--- /dev/null
+++ b/klettres/klettres/icons/cr64-action-klettres_kids.png
Binary files differ
diff --git a/klettres/klettres/icons/crsc-action-klettres_desert.svgz b/klettres/klettres/icons/crsc-action-klettres_desert.svgz
new file mode 100644
index 00000000..fbaca462
--- /dev/null
+++ b/klettres/klettres/icons/crsc-action-klettres_desert.svgz
Binary files differ
diff --git a/klettres/klettres/icons/crsc-action-klettres_grownup.svgz b/klettres/klettres/icons/crsc-action-klettres_grownup.svgz
new file mode 100644
index 00000000..233a6246
--- /dev/null
+++ b/klettres/klettres/icons/crsc-action-klettres_grownup.svgz
Binary files differ
diff --git a/klettres/klettres/icons/crsc-action-klettres_kids.svgz b/klettres/klettres/icons/crsc-action-klettres_kids.svgz
new file mode 100644
index 00000000..36d860cb
--- /dev/null
+++ b/klettres/klettres/icons/crsc-action-klettres_kids.svgz
Binary files differ
diff --git a/klettres/klettres/klettres.cpp b/klettres/klettres/klettres.cpp
new file mode 100644
index 00000000..031f2f3c
--- /dev/null
+++ b/klettres/klettres/klettres.cpp
@@ -0,0 +1,527 @@
+/***************************************************************************
+ * Copyright (C) 2001-2006 by Anne-Marie Mahfouf *
+ * annemarie.mahfouf@free.fr *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+//Qt includes
+#include <qbitmap.h>
+#include <qdir.h>
+#include <qfile.h>
+#include <qlabel.h>
+#include <qpainter.h>
+#include <qstring.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+//KDE includes
+#include <kaction.h>
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <kconfigdialog.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kmenubar.h>
+#include <kmessagebox.h>
+#include <knuminput.h>
+#include <kstandarddirs.h>
+#include <kstatusbar.h>
+#include <ktoolbar.h>
+#include <ktoolbarbutton.h>
+//Project includes
+#include "klnewstuff.h"
+#include "klettres.h"
+#include "fontsdlg.h"
+#include "timer.h"
+#include "prefs.h"
+
+const int ID_KIDB = 100;
+const int ID_GROWNB = 101;
+const int ID_MENUBARB = 102;
+
+KLettres::KLettres()
+ : KMainWindow( 0, "KLettres" )
+{
+ mNewStuff = 0;
+ m_view = new KLettresView(this);
+ // tell the KMainWindow that this is indeed the main widget
+ setCentralWidget(m_view);
+ //Scan for existing languages -> m_languages
+ findLanguages();
+ Prefs::setLanguage(Prefs::defaultLanguage());
+ Prefs::writeConfig();
+ //MainWindow GUI: menus, tolbars and statusbar
+ setupActions();
+ setupStatusbar();
+ setupToolbars();
+ //Load Settings
+ loadSettings();
+ //Setup current language sounds
+ soundFactory = new SoundFactory(this, "sounds");
+ setMinimumSize( QSize( 640, 550 ) );
+ setMaximumSize( QSize( 640, 550 ) );
+ //Start game
+ m_view->game();
+}
+
+KLettres::~KLettres()
+{
+}
+
+void KLettres::findLanguages()
+{
+ m_languages.clear();
+ m_languageNames.clear();
+ //m_sortedNames.clear();
+ //the program scans in khangman/data/ to see what languages data is found
+ QStringList mdirs = KGlobal::dirs()->findDirs("data", "klettres/");
+ if (mdirs.isEmpty()) return;
+ for (QStringList::Iterator it =mdirs.begin(); it !=mdirs.end(); ++it ) {
+ QDir dir(*it);
+ m_languages += dir.entryList(QDir::Dirs, QDir::Name);
+ m_languages.remove(m_languages.find("."));
+ m_languages.remove(m_languages.find(".."));
+ }
+ m_languages.remove(m_languages.find("pics"));
+ m_languages.remove(m_languages.find("data"));
+ m_languages.remove(m_languages.find("icons"));
+ m_languages.sort();
+ if (m_languages.isEmpty()) return;
+ Prefs::setLanguages(m_languages);
+ Prefs::writeConfig();
+ //find duplicated entries in KDEDIR and KDEHOME
+ QStringList temp_languages;
+ for (uint i=0; i<m_languages.count(); i++)
+ {
+ if (m_languages.contains(m_languages[i])>1) {
+ temp_languages.append(m_languages[i]);
+ m_languages.remove(m_languages[i]);
+ }
+ for (uint i=0; i<temp_languages.count(); i++)
+ {
+ if (i%2==0)
+ m_languages.append(temp_languages[i]);//append 1 of the 2 instances found
+ }
+ temp_languages.clear();
+ }
+//TODO TEST in FRENCH
+ m_languages.sort();
+ //write the present languages in config so they cannot be downloaded
+ KConfig *config=kapp->config();
+ config->setGroup("KNewStuffStatus");
+ for (uint i=0; i<m_languages.count(); i++)
+ {
+ QString tmp = m_languages[i];
+ if (!config->readEntry(tmp))
+ config->writeEntry(tmp, QDate::currentDate().toString());
+ }
+ //we look in $KDEDIR/share/locale/all_languages from /kdelibs/kdecore/all_languages
+ //to find the name of the country
+ //corresponding to the code and the language the user set
+ KConfig entry(locate("locale", "all_languages"));
+ const QStringList::ConstIterator itEnd = m_languages.end();
+ for (QStringList::Iterator it = m_languages.begin(); it != m_languages.end(); ++it) {
+ if (*it == "hi-ro")
+ m_languageNames.append(i18n("Romanized Hindi"));
+ else if (*it =="lug_UG")
+ m_languageNames.append(i18n("Luganda"));
+ else
+ {
+ entry.setGroup(*it);
+ m_languageNames.append(entry.readEntry("Name"));
+ }
+ }
+ //never sort m_languageNames as it's m_languages translated
+ //m_sortedNames = m_languageNames;
+}
+
+QString Prefs::defaultLanguage()
+{
+ //see what is the user language for KDE
+ QStringList defaultLanguages = KGlobal::locale()->languagesTwoAlpha();
+ if (!defaultLanguages.isEmpty()) {
+ //scan to see if defaultLanguages[0] belongs to m_languages. If not, en is default.
+ int i = Prefs::self()->m_languages.findIndex(defaultLanguages[0]);
+ if (Prefs::self()->m_languages.contains(Prefs::language()))
+ return Prefs::language(); //the last language played
+ else if (i<1)
+ return "en"; //if no other
+ else
+ return Prefs::self()->m_languages[i]; //KDE default if exists
+ }
+ return QString::null;
+}
+
+
+bool KLettres::loadLayout(QDomDocument &layoutDocument)
+{
+ QFile layoutFile(locate("data", "klettres/"+Prefs::language()+"/sounds.xml"));
+ //if xml file is not found, program exits
+ if (!layoutFile.exists())
+ {
+ kdWarning() << "sounds.xml file not found in $KDEDIR/share/apps/klettres/"+Prefs::language() << endl;
+ QString mString=i18n("The file sounds.xml was not found in\n"
+ "$KDEDIR/share/apps/klettres/\n\n"
+ "Please install this file and start KLettres again.\n\n");
+ KMessageBox::information( this, mString,"KLettres - Error" );
+ kapp->quit();//exit(1);
+ }
+ if (!layoutFile.open(IO_ReadOnly))
+ return false;
+ //Check if document is well-formed
+ if (!layoutDocument.setContent(&layoutFile))
+ {
+ layoutFile.close();
+ return false;
+ }
+ layoutFile.close();
+
+ return true;
+}
+
+void KLettres::setupActions()
+{
+ KAction *m_newAction = new KAction(i18n("New Sound"), "file_new", CTRL+Key_N, m_view, SLOT(game()), actionCollection(), "play_new");
+ m_newAction->setToolTip(i18n("Play a new sound"));
+ m_newAction->setWhatsThis(i18n("You can play a new sound by clicking this button or using the File menu, New Sound."));
+ new KAction( i18n("Get Alphabet in New Language..."), "knewstuff", 0, this, SLOT( slotDownloadNewStuff() ), actionCollection(), "downloadnewstuff" );
+ KAction *m_playAgainAction = new KAction(i18n("Replay Sound"),"player_play", CTRL+Key_P, m_view, SLOT(slotPlayAgain()), actionCollection(), "play_again");
+ m_playAgainAction->setToolTip(i18n("Play the same sound again"));
+ m_playAgainAction->setWhatsThis(i18n("You can replay the same sound again by clicking this button or using the File menu, Replay Sound."));
+ KStdAction::quit(kapp, SLOT(quit()), actionCollection());
+
+ m_menubarAction = new KToggleAction(i18n("Show &Menubar"),"editclear", CTRL+Key_M, this, SLOT(slotMenubar()), actionCollection(), "menubar");
+ m_menubarAction->setCheckedState(i18n("Hide &Menubar"));
+ m_menubarAction->setChecked(true);
+ m_menubarAction->setWhatsThis(i18n("You can show or hide the menubar as you wish by clicking this button."));
+
+ m_levelAction = new KSelectAction(i18n("L&evel"), KShortcut(), actionCollection(), "levels");
+ m_levelAction->setToolTip(i18n("Select the level"));
+ m_levelAction->setWhatsThis(i18n("You can select the level: level 1 displays a letter and you hear it; level 2 does not display the letter, you only hear it; level 3 displays a syllable and you hear it; level 4 does not display the syllable, you only hear it."));
+
+ m_languageAction = new KSelectAction(i18n("&Language"), KShortcut(), actionCollection(), "languages");
+ m_languageAction->setItems(m_languageNames);
+
+ m_levelsNames.append(i18n( "Level 1" ));
+ m_levelsNames.append(i18n( "Level 2" ));
+ m_levelsNames.append(i18n( "Level 3" ));
+ m_levelsNames.append(i18n( "Level 4" ));
+ m_levelAction->setItems(m_levelsNames);
+
+ m_themeAction = new KSelectAction(i18n("Themes"), KShortcut(), actionCollection(), "looks");
+ m_themesNames.append(i18n("Classroom"));
+ m_themesNames.append(i18n("Arctic"));
+ m_themesNames.append(i18n("Desert"));
+ m_themeAction->setItems(m_themesNames);
+ m_themeAction->setToolTip(i18n("Select the theme"));
+ m_themeAction->setWhatsThis(i18n("Here you can change the theme for KLettres. A theme consists in the background picture and the font color for the letter displayed."));
+
+ m_kidAction = new KToggleAction(i18n("Mode Kid"), "klettres_kids", CTRL+Key_K, this, SLOT(slotModeKid()), actionCollection(), "mode_kid");
+ m_kidAction->setWhatsThis(i18n("If you are in the Grown-up mode, clicking on this button will set up the Kid mode. The Kid mode has no menubar and the font is bigger in the statusbar."));
+ m_grownupAction = new KToggleAction(i18n("Mode Grown-up"), "klettres_grownup", CTRL+Key_G, this, SLOT(slotModeGrownup()), actionCollection(), "mode_grownup");
+ m_grownupAction->setWhatsThis(i18n("The Grown-up mode is the normal mode where you can see the menubar."));
+
+ connect(m_levelAction, SIGNAL(activated(int)), this, SLOT(slotChangeLevel(int)));
+ connect(m_languageAction, SIGNAL(activated(int)), this, SLOT(slotChangeLanguage(int)));
+ connect(m_themeAction, SIGNAL(activated(int)), this, SLOT(slotChangeTheme(int)));
+
+ KStdAction::preferences(this, SLOT(optionsPreferences()), actionCollection());
+
+ setupGUI();
+}
+
+void KLettres::setupStatusbar()
+{
+ KStatusBar *st=statusBar();
+ m_langLabel = new QLabel(st);
+ m_levLabel = new QLabel(st);
+ st->addWidget(m_levLabel);
+ st->insertFixedItem("", 1);//add a space
+ st->addWidget(m_langLabel);
+ statusBar();
+}
+
+void KLettres::setupToolbars()
+{
+ //toolbar for special characters
+ m_secondToolbar = toolBar("secondToolbar");
+ m_secondToolbar->setBarPos(KToolBar::Bottom);
+}
+
+void KLettres::optionsPreferences()
+{
+ if(KConfigDialog::showDialog("settings"))
+ return;
+
+ KConfigDialog *dialog = new KConfigDialog(this, "settings", Prefs::self());
+ dialog->addPage(new fontsdlg(0, "mFont"), i18n("Font Settings"), "fonts");
+ //fontsdlg is the page name, mFont is the widget name, Font Settings is the page display string
+ //fonts is the icon
+ Timer *m_timer = new Timer();
+ dialog->addPage(m_timer, i18n("Timer"), "clock");
+ connect(dialog, SIGNAL(settingsChanged()), this, SLOT(slotUpdateSettings()));
+ dialog->show();
+}
+
+void KLettres::loadSettings()
+{
+ //TODO load default language
+ //selectedLanguage = Prefs::languageNumber();
+ //m_view->selectedLanguage = selectedLanguage;
+ m_languageAction->setCurrentItem(Prefs::languageNumber());
+ QString langString = m_languageNames[Prefs::languageNumber()];
+ langString.replace("&", QString::null);
+ m_langLabel->setText(i18n("Current language is %1").arg(langString));
+ loadLangToolBar();
+ // load default level
+ m_levelAction->setCurrentItem(Prefs::level()-1);
+ m_levLabel->setText(i18n("Current level is %1").arg(Prefs::level()));
+
+ if (Prefs::theme() == Prefs::EnumTheme::classroom) {
+ m_themeAction->setCurrentItem(0);
+ m_view->viewThemeClassroom();
+ }
+ else if (Prefs::theme() == Prefs::EnumTheme::arctic) {
+ m_themeAction->setCurrentItem(1);
+ m_view->viewThemeArctic();
+ }
+ else {
+ m_themeAction->setCurrentItem(2);
+ m_view->viewThemeDesert();
+ }
+
+ if (Prefs::mode() == Prefs::EnumMode::grownup)
+ slotModeGrownup();
+ else
+ slotModeKid();
+}
+
+void KLettres::slotDownloadNewStuff()
+{
+ if ( !mNewStuff )
+ mNewStuff = new KLNewStuff( m_view );
+ mNewStuff->download();
+}
+
+void KLettres::slotMenubar()
+{
+ switch (m_menubarAction->isChecked()){
+ case false:
+ m_menubarAction->setChecked(false);
+ m_menubarAction->setToolTip(i18n("Show Menubar"));
+ menuBar()->hide();
+ break;
+ case true:
+ m_menubarAction->setChecked(true);
+ m_menubarAction->setToolTip(i18n("Hide Menubar"));
+ menuBar()->show();
+ break;
+ }
+}
+
+void KLettres::slotUpdateSettings()
+{
+ m_view->m_timer = Prefs::kidTimer();
+ m_view->m_timer = Prefs::grownTimer();
+ //apply the font
+ m_view->setFont(Prefs::font());
+}
+
+void KLettres::slotChangeLevel(int newLevel)
+{
+ Prefs::setLevel(newLevel+1);
+ Prefs::writeConfig();
+ updateLevMenu(newLevel);
+ //TODO is that necessary? Change level effectively by reloading sounds
+
+ //this is duplicated in changeLanguage()
+ soundFactory->change(Prefs::language());
+ //update game effectively
+ m_view->game();
+}
+
+void KLettres::updateLevMenu(int id)
+{
+ //m_levelCombo->setCurrentItem(id);
+ m_levelAction->setCurrentItem(id);
+ m_levLabel->setText(i18n("Current level is %1").arg(Prefs::level()));
+}
+
+void KLettres::slotChangeLanguage(int newLanguage)
+{
+ // Write new language in config
+ Prefs::setLanguage(m_languages[newLanguage]);
+ Prefs::writeConfig();
+ // Update the StatusBar
+ QString langString = m_languageNames[newLanguage];
+ langString.replace("&", QString::null);
+ m_langLabel->setText(i18n("Current language is %1").arg(langString));
+ loadLangToolBar();
+ // Change language effectively
+ bool ok = loadLayout(soundFactory->m_layoutsDocument);
+ if (ok)
+ soundFactory->change(Prefs::language());
+ m_view->game();
+}
+
+void KLettres::slotChangeTheme(int index)
+{
+ switch (index) {
+ case 0:
+ m_view->viewThemeClassroom();
+ break;
+
+ case 1:
+ m_view->viewThemeArctic();
+ break;
+
+ case 2:
+ m_view->viewThemeDesert();
+ break;
+ }
+}
+
+void KLettres::slotModeGrownup()
+{
+ QPalette pal;
+ QColorGroup cg;
+ cg.setColor( QColorGroup::Background, white);
+ pal.setActive( cg );
+ statusBar()->setPalette( pal );
+ QFont f_lab( "Serif" , 10); //font for statusBar
+ m_levLabel->setFont(f_lab);
+ m_langLabel->setFont(f_lab);
+ m_menubarAction->setChecked(true);
+ m_grownupAction->setChecked(true);
+ m_kidAction->setChecked(false);
+ m_grownupAction->setToolTip(i18n("Grown-up mode is currently active"));
+ m_kidAction->setToolTip(i18n("Switch to Kid mode"));
+ m_menubarAction->setToolTip(i18n("Hide Menubar"));
+ slotMenubar();
+ //m_secondToolbar->setIconSize(22); //causes a crash when adding/removing actions in toolbar
+ setMinimumSize( QSize( 640, 538 ) );
+ setMaximumSize( QSize( 640, 538 ) );
+ m_view->m_timer = Prefs::grownTimer();
+ Prefs::setMode(Prefs::EnumMode::grownup);
+ Prefs::writeConfig();
+}
+
+void KLettres::slotModeKid()
+{
+ QPalette pal;
+ QColorGroup cg;
+ cg.setColor( QColorGroup::Background, white);
+ pal.setActive( cg );
+ statusBar()->setPalette( pal );
+ QFont f_lab( "Serif" , 12); //font for statusBar
+ f_lab.setBold(true);
+ m_levLabel->setFont(f_lab);
+ m_langLabel->setFont(f_lab);
+ m_menubarAction->setChecked(false);
+ slotMenubar();
+ m_kidAction->setChecked(true);
+ m_kidAction->setToolTip(i18n("Kid mode is currently active"));
+ m_grownupAction->setToolTip(i18n("Switch to Grown-up mode"));
+ m_menubarAction->setToolTip(i18n("Show Menubar"));
+ m_grownupAction->setChecked(false);
+ //m_secondToolbar->setIconSize(32);
+ setMinimumSize( QSize( 640, 480 ) );
+ setMaximumSize( QSize( 640, 480 ) );
+ m_view->m_timer = Prefs::kidTimer();
+ Prefs::setMode(Prefs::EnumMode::kid);
+ Prefs::writeConfig();
+}
+
+void KLettres::loadLangToolBar()
+{
+ m_secondToolbar->clear();
+ if (m_languages[Prefs::languageNumber()]== "cs" || m_languages[Prefs::languageNumber()]== "da" || m_languages[Prefs::languageNumber()]== "sk" || m_languages[Prefs::languageNumber()]== "es" || m_languages[Prefs::languageNumber()]== "de" || m_languages[Prefs::languageNumber()]== "nds")//Dutch, English, French and Italian have no special characters
+ {
+ allData.clear();
+ QString myString=QString("klettres/%1.txt").arg(m_languages[Prefs::languageNumber()]);
+ QFile myFile;
+ myFile.setName(locate("data",myString));
+ if (!myFile.exists())
+ {
+
+ QString mString=i18n("File $KDEDIR/share/apps/klettres/%1.txt not found;\n"
+ "please check your installation.").arg(m_languages[Prefs::languageNumber()]);
+ KMessageBox::sorry( this, mString,
+ i18n("Error") );
+ kapp->quit();
+ }
+ update();
+ //we open the file and store info into the stream...
+ QFile openFileStream(myFile.name());
+ openFileStream.open(IO_ReadOnly);
+ QTextStream readFileStr(&openFileStream);
+ readFileStr.setEncoding(QTextStream::UnicodeUTF8);
+ //allData contains all the words from the file
+ allData = QStringList::split("\n", readFileStr.read(), true);
+ openFileStream.close();
+ for (int i=0; i<(int) allData.count(); i++) {
+ if (!allData[i].isEmpty())
+ m_secondToolbar->insertButton (charIcon(allData[i].at(0)), i, SIGNAL( clicked() ), this, SLOT( slotPasteChar()), true, i18n("Inserts the character %1").arg(allData[i]), i+1 );
+ }
+ }
+}
+
+void KLettres::slotPasteChar()
+{
+ KToolBarButton *charBut = (KToolBarButton* ) sender();
+ m_view->m_letterEdit->insert(allData[charBut->id()]);
+}
+
+QString KLettres::charIcon(const QChar & c)
+{
+ ///Create a name and path for the icon
+ QString s = locateLocal("icon", "char" + QString::number(c.unicode()) + ".png");
+
+ QRect r(4, 4, 120, 120);
+
+ ///A font to draw the character with
+ QFont font;
+ font.setFamily( "Arial" );
+ font.setPixelSize(120);
+ font.setWeight(QFont::Normal);
+
+ ///Create the pixmap
+ QPixmap pm(128, 128);
+ pm.fill(Qt::white);
+ QPainter p(&pm);
+ p.setFont(font);
+ p.setPen(Qt::black);
+ p.drawText(r, Qt::AlignCenter, (QString) c);
+
+ ///Create transparency mask
+ QBitmap bm(128, 128);
+ bm.fill(Qt::color0);
+ QPainter b(&bm);
+ b.setFont(font);
+ b.setPen(Qt::color1);
+ b.drawText(r, Qt::AlignCenter, (QString) c);
+
+ ///Mask the pixmap
+ pm.setMask(bm);
+
+ ///Save the icon to disk
+ pm.save(s, "PNG");
+
+ return s;
+}
+
+#include "klettres.moc"
diff --git a/klettres/klettres/klettres.desktop b/klettres/klettres/klettres.desktop
new file mode 100644
index 00000000..7193c668
--- /dev/null
+++ b/klettres/klettres/klettres.desktop
@@ -0,0 +1,130 @@
+# KDE Config File
+[Desktop Entry]
+Type=Application
+Exec=klettres -caption "%c" %i %m
+Icon=klettres
+DocPath=klettres/index.html
+Comment= a KDE program to learn the alphabet
+Comment[be]=Праграма KDE для вывучэння алфавіту
+Comment[bg]=Учене на азбуката
+Comment[bn]=বর্ণমালা শেখার জন্য একটি কে.ডি.ই. প্রোগ্রাম
+Comment[bs]= KDE program za učenje abecede
+Comment[ca]=Un programa per a KDE per ajudar l'aprenentatge de l'alfabet
+Comment[cs]=KDE program pro výuku abecedy
+Comment[csb]=Programa KDE do ùczbë alfabétu
+Comment[da]=Et KDE program for at lære sig alfabetet
+Comment[de]=Ein KDE-Programm zum Erlernen des Alphabets
+Comment[el]=Μία εφαρμογή του KDE για την εκμάθηση του αλφάβητου
+Comment[eo]=KDE programo por lerni alfabeton
+Comment[es]=Un programa de KDE para aprender el alfabeto
+Comment[et]=KDE tähestiku omandamise programm
+Comment[eu]=Alfabetoa ikasteko KDE programa
+Comment[fa]=برنامه‌ای از KDE برای یادگیری الفبا
+Comment[fi]=Ohjelma aakkosien harjoitteluun
+Comment[fr]=Un programme KDE pour apprendre l'alphabet
+Comment[ga]=Clár KDE chun an aibítir a fhoghlaim
+Comment[gl]=Aprenda o alfabeto con KDE
+Comment[he]=תוכנת KDE ללימוד האלפבית
+Comment[hr]=KDE program za učenje abecede
+Comment[hu]=KDE-alapú oktatóprogram az ábécé gyakorlásához
+Comment[is]=KDE forrit til að læra stafrófið
+Comment[it]=Un programma KDE per imparare l'alfabeto
+Comment[ja]=アルファベットを学習するプログラム
+Comment[ka]= KDE ანბანის შესასწავლი პროგრამა
+Comment[km]= កម្មវិធី​របស់ KDE សម្រាប់​រៀន​អក្ខរក្រម
+Comment[lt]= KDE programa raidyno mokymuisi
+Comment[nb]=Et KDE-program for å lære alfabetet
+Comment[nds]=En KDE-Programm för't Lehren vun dat Alfabeet
+Comment[ne]= वर्ण सिक्नका लागि KDE कार्यक्रम
+Comment[nl]=Een KDE-programma waarmee het alfabet geleerd kan worden
+Comment[nn]=Eit KDE-program for å læra alfabetet
+Comment[pl]=Program do nauki alfabetu dla KDE
+Comment[pt]=Um programa do KDE para aprender o alfabeto
+Comment[pt_BR]=Um programa do KDE para aprender o alfabeto
+Comment[ru]=Программа для изучения алфавита
+Comment[sk]=KDE program pre výuku abecedy
+Comment[sl]=Program za učenje abecede
+Comment[sr]=KDE програм за учење алфабета
+Comment[sr@Latn]=KDE program za učenje alfabeta
+Comment[sv]=Ett KDE program för att lära sig alfabetet
+Comment[tr]=Alfabe öğrenme programı
+Comment[uk]=Програма для вивчення алфавіту
+Comment[vi]= một chương trình KDE để học bảng chữ cái
+Comment[zh_CN]=帮助学习字母表的 KDE 程序
+Comment[zh_TW]= 學習字母的 KDE 程式
+Terminal=false
+Name=KLettres
+Name[af]=K-letters
+Name[ar]=الاحرف ك
+Name[bn]=কে-লেটার্স
+Name[csb]=KLetters
+Name[hi]=के-लेटर्स
+Name[hr]=KSlova
+Name[ne]=केडीई अक्षर
+Name[sr]=Klettres
+Name[sr@Latn]=Klettres
+Name[sv]=Klettres
+Name[ta]=கே
+Name[tr]=Harfler
+Name[ven]=Lunwalo lwa K
+Name[vi]=Chữ cái K
+Name[zh_TW]=KLetters
+Name[zu]=IKLettres
+GenericName=Learn Alphabet
+GenericName[af]=Leer die Alfabet
+GenericName[ar]=تعلّم الحروف
+GenericName[be]=Вывучэнне алфавіту
+GenericName[bg]=Изучаване на азбуката
+GenericName[bn]=অক্ষর শিখুন
+GenericName[br]=Deskiñ an alfabet
+GenericName[bs]=Naučite abecedu
+GenericName[ca]=Aprenent l'alfabet
+GenericName[cs]=Výuka abecedy
+GenericName[csb]=Ùczba Alfabétu
+GenericName[cy]=Dysgu'r Wyddor
+GenericName[da]=Lær alfabetet
+GenericName[de]=Lerne das Alphabet
+GenericName[el]=Εκμάθηση αλφάβητου
+GenericName[eo]=Lernado de alfabeto
+GenericName[es]=Aprender el alfabeto
+GenericName[et]=Tähestiku õppimine
+GenericName[eu]=Ikasi alfabetoa
+GenericName[fa]=یادگیری الفبا
+GenericName[fi]=Opettele aakkosia
+GenericName[fr]=Apprentissage de l'alphabet
+GenericName[ga]=Foghlaim an Aibítir
+GenericName[gl]=Aprender o alfabeto
+GenericName[he]=למידת האלפבית
+GenericName[hi]=वर्णमाला सीखें
+GenericName[hr]=Učite abecedu
+GenericName[hu]=Ábécétanító
+GenericName[is]=Læra stafrófið
+GenericName[it]=Impara l'alfabeto
+GenericName[ja]=アルファベットの学習
+GenericName[ka]=ანბანის შესწავლა
+GenericName[km]=រៀន​អក្ខរក្រម
+GenericName[lt]=Išmokite raidyną
+GenericName[mk]=Учете азбука
+GenericName[ms]=Belajar Huruf
+GenericName[nb]=Lær alfabetet
+GenericName[nds]=Alfabeet lehren
+GenericName[ne]=वर्ण सिक्नुहोस्
+GenericName[nl]=Leer het alfabet
+GenericName[nn]=Lær alfabetet
+GenericName[pl]=Nauka alfabetu
+GenericName[pt]=Aprender o Alfabeto
+GenericName[pt_BR]=Aprenda o alfabeto
+GenericName[ru]=Изучение алфавита
+GenericName[sk]=Výuka abecedy
+GenericName[sl]=Učenje abecede
+GenericName[sr]=Научите азбуку
+GenericName[sr@Latn]=Naučite azbuku
+GenericName[sv]=Inlärning av alfabetet
+GenericName[ta]=ஹாங்க்மேன் விளையாட்டு
+GenericName[tg]=Омӯхтани Алифбо
+GenericName[tr]=Alfabeyi Öğrenin
+GenericName[uk]=Вивчення абетки
+GenericName[vi]=Học Bảng chữ cái
+GenericName[zh_CN]=学习字母
+GenericName[zh_TW]=學習字母
+Categories=Qt;KDE;Education;Languages;
diff --git a/klettres/klettres/klettres.h b/klettres/klettres/klettres.h
new file mode 100644
index 00000000..82ce62ed
--- /dev/null
+++ b/klettres/klettres/klettres.h
@@ -0,0 +1,151 @@
+/***************************************************************************
+ * Copyright (C) 2001-2006 by Anne-Marie Mahfouf *
+ * annemarie.mahfouf@free.fr *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+
+#ifndef KLETTRES_H
+#define KLETTRES_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <kmainwindow.h>
+
+#include "klettresview.h"
+#include "soundfactory.h"
+
+class QLabel;
+class KToggleAction;
+class KSelectAction;
+class KComboBox;
+class KToolBar;
+class KLNewStuff;
+
+/**
+ * @short Application Main Window
+ * @author Anne-Marie Mahfouf <annemarie.mahfouf@free.fr>
+ * @version 1.4
+ */
+class KLettres : public KMainWindow
+{
+ Q_OBJECT
+public:
+
+ ///Constructor
+ KLettres();
+ ///Destructor
+ virtual ~KLettres();
+
+ ///Sound class
+ SoundFactory *soundFactory;
+ ///All available language codes
+ QStringList m_languages;
+ ///All available language names
+ QStringList m_languageNames;
+ /**
+ *Load the xml file
+ *@param layoutDocument the xml file
+ *@return bool true if the xml document is found and well formed, false otherwise
+ */
+ bool loadLayout(QDomDocument &layoutDocument);
+ ///Number corresponding to the selected language: 0 is Czech, 1 is Danish, 2 is English (default), 3 is French, 4 is Dutch, 5 is Slovak
+ //uint selectedLanguage;
+ ///Action that sets up the Language menu
+ KSelectAction *m_languageAction;
+ ///Look for all languages available
+ void findLanguages();
+
+ public slots:
+ ///Set the new language
+ void slotChangeLanguage(int);
+
+protected:
+ ///Call an instance of the KLettresView widget
+ KLettresView *m_view;
+ ///Action that enables the ShowMenuBar item in the Settings menu
+ KToggleAction *m_menubarAction;
+ ///Action that sets up the Level menu
+ KSelectAction *m_levelAction;
+ ///Action that sets up the Look menu
+ KSelectAction *m_themeAction;
+ ///Action allow the Kid mode
+ KToggleAction *m_kidAction;
+ ///Action allow the Grownup mode
+ KToggleAction *m_grownupAction;
+ ///Label stating the language in the statusbar
+ QLabel *m_langLabel;
+ ///Label stating the level in the statusbar
+ QLabel *m_levLabel;
+ ///Holds the levels
+ QStringList m_levelsNames;
+ ///Holds the looks
+ QStringList m_themesNames;
+ ///Create an instance of a KToolBar
+ KToolBar *m_mainToolbar;
+ ///Second toolbar with buttons of special characters per language
+ KToolBar *m_secondToolbar;
+ ///is false when menubar button is not shown
+ bool menuBool;
+ ///Build the main window menus
+ void setupActions();
+ ///Create and setup statusbar
+ void setupStatusbar();
+ ///Create main and second toolbars
+ void setupToolbars();
+ /**generates icons for the special characters toolbar
+ * @param c the character that will be painted on the icon
+ */
+ QString charIcon(const QChar &c);
+ /**
+ *Update the level menu and level combobox
+ * @param id The id of the new level
+ */
+ void updateLevMenu(int id);
+ ///Create a KNewStuff instance
+ KLNewStuff *mNewStuff;
+ ///Set the correct buttons on the second toolbar according to the language
+ void loadLangToolBar();
+ ///All the special characters from a language file, these characters will be as buttons on the Special Characters Toolbar
+ QStringList allData;
+
+ protected slots:
+ ///Call the Get New Stuff dialog
+ void slotDownloadNewStuff();
+ ///Hide/Show the menubar
+ void slotMenubar();
+ ///Set the new font and the new timers
+ void slotUpdateSettings();
+ ///Set the new level
+ void slotChangeLevel(int);
+ ///Switch to the grown-up look, menubar is shown
+ void slotModeGrownup();
+ ///Switch to the kid look, menubar is hidden
+ void slotModeKid();
+ ///Change Look from menu Look
+ void slotChangeTheme(int);
+ ///Display the Configure KLettres dialog
+ void optionsPreferences();
+ ///Load the configuration settings and apply them
+ void loadSettings();
+ ///When a button is clicked on the characters toolbar, the corresponding character is written in the lineedit
+ void slotPasteChar();
+};
+
+#endif // KLETTRES_H
diff --git a/klettres/klettres/klettres.kcfg b/klettres/klettres/klettres.kcfg
new file mode 100644
index 00000000..4769b359
--- /dev/null
+++ b/klettres/klettres/klettres.kcfg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
+ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+ <kcfgfile name="klettresrc"/>
+ <group name="General">
+ <entry name="Language" type="String">
+ <label>Language</label>
+ </entry>
+ <entry name="Theme" type="Enum" key="myTheme">
+ <label>Theme</label>
+ <choices>
+ <choice name="classroom"/>
+ <choice name="arctic"/>
+ <choice name="desert"/>
+ </choices>
+ <default>arctic</default>
+ </entry>
+ <entry name="Mode" type="Enum" key="myMode">
+ <label>Mode</label>
+ <choices>
+ <choice name="kid"/>
+ <choice name="grownup"/>
+ </choices>
+ <default>grownup</default>
+ </entry>
+ <entry name="Level" type="Int" key="myLevel">
+ <label>Difficulty level.</label>
+ <default>1</default>
+ <min>1</min>
+ <max>4</max>
+ </entry>
+ <entry name="KidTimer" type="Int">
+ <label>Kid Timer</label>
+ <default>4</default>
+ </entry>
+ <entry name="GrownTimer" type="Int">
+ <label>Grown-up Timer</label>
+ <default>2</default>
+ </entry>
+ </group>
+ <group name="mFont">
+ <entry name="Font" type="Font" key="mFont">
+ <label>Font</label>
+ <code>QFont defaultFont = KGlobalSettings::largeFont();
+ defaultFont.setPointSize(48);
+ defaultFont.setBold(true);
+ </code>
+ <default code="true">defaultFont</default>
+ </entry>
+ </group>
+</kcfg>
diff --git a/klettres/klettres/klettresrc b/klettres/klettres/klettresrc
new file mode 100644
index 00000000..ac08286b
--- /dev/null
+++ b/klettres/klettres/klettresrc
@@ -0,0 +1,3 @@
+[KNewStuff]
+ProvidersUrl=http://edu.kde.org/klettres/downloads/providers.xml
+
diff --git a/klettres/klettres/klettresui.rc b/klettres/klettres/klettresui.rc
new file mode 100644
index 00000000..ca7680b8
--- /dev/null
+++ b/klettres/klettres/klettresui.rc
@@ -0,0 +1,49 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui name="klettres" version="5">
+ <MenuBar>
+ <Menu name="file" noMerge="1"><text>&amp;File</text>
+ <Action name ="play_new"/>
+ <Action name="play_again"/>
+ <Action name="downloadnewstuff"/>
+ <Action name="file_quit"/>
+ </Menu>
+
+ <Action name="levels"/>
+
+ <Action name="languages"/>
+
+ <Menu name="look_mode" noMerge="1"><text>L&amp;ook</text>
+ <Action name="looks" />
+ <Separator/>
+ <Action name="mode_kid"/>
+ <Action name="mode_grownup"/>
+ </Menu>
+
+
+ <Menu name="settings" noMerge="1"><text>&amp;Settings</text>
+ <Action name="menubar" />
+ <Merge name="StandardToolBarMenuHandler" />
+ <Action name="options_show_statusbar"/>
+ <Separator/>
+ <Action name="options_configure_keybinding"/>
+ <Action name="options_configure_toolbars"/>
+ <Action name="options_configure"/>
+ </Menu>
+ </MenuBar>
+ <ToolBar name="mainToolbar" noMerge="1"><Text>Main</Text>
+ <Action name="levels"/>
+ <Separator/>
+ <Action name="looks" />
+ <Separator/>
+ <Action name="mode_kid"/>
+ <Action name="mode_grownup"/>
+ <Separator/>
+ <Action name="menubar"/>
+ <Separator/>
+ <Action name="play_again"/>
+ <Separator />
+ <Action name="file_quit"/>
+ </ToolBar>
+ <ToolBar name="secondToolbar" position="bottom" noMerge="1"><text>Characters</text>
+ </ToolBar>
+</kpartgui>
diff --git a/klettres/klettres/klettresview.cpp b/klettres/klettres/klettresview.cpp
new file mode 100644
index 00000000..f015c18d
--- /dev/null
+++ b/klettres/klettres/klettresview.cpp
@@ -0,0 +1,225 @@
+/***************************************************************************
+ * Copyright (C) 2001-2006 by Anne-Marie Mahfouf *
+ * annemarie.mahfouf@free.fr *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+#include <qlabel.h>
+#include <qtimer.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qpainter.h>
+
+#include <kapplication.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <kdebug.h>
+//Project headers
+#include "klettres.h"
+#include "klettresview.h"
+#include "prefs.h"
+
+KLettresView::KLettresView(KLettres *parent)
+ : QWidget(parent)
+{
+ m_klettres = parent;
+
+ setMinimumSize( QSize( 640, 480 ) );
+ setMaximumSize( QSize( 640, 480 ) );
+
+ //lineEdit for user input
+ m_letterEdit = new KLineEdit( this, "line1" );
+ m_letterEdit->setGeometry( QRect( 40, 310, 161, 160 ) );
+ QToolTip::add( m_letterEdit, i18n( "Type the letter or syllable that you just heard" ) );
+
+ setFont(Prefs::font());
+ //load background pics
+ m_grownupPicture.load(locate("data","klettres/pics/klettres_grownup.png"));
+ m_kidPicture.load(locate("data","klettres/pics/klettres_kids.jpeg"));
+ m_desertPicture.load(locate("data","klettres/pics/klettres_desert.png"));
+
+}
+
+KLettresView::~KLettresView()
+{
+}
+
+void KLettresView::chooseSound()
+{
+ //If there are no sounds loaded
+ if (m_klettres->soundFactory->sounds ==0)
+ return;
+ //get a random sound
+ m_random=kapp->random()%(m_klettres->soundFactory->sounds);
+ //have not 2 same sounds consecutively
+ int temp = 0;
+ if (temp<0)
+ temp=m_random;
+ else
+ {
+ while (m_random==temp)
+ m_random=kapp->random()%(m_klettres->soundFactory->sounds);
+ temp=m_random;
+ }
+
+ //The sound is played
+ kdDebug() << "m_random " << m_random << endl;
+ m_klettres->soundFactory->playSound(m_random);
+ //store letter or syllable in m_currentLetter
+ m_currentLetter = m_klettres->soundFactory->namesList[m_random];
+ //Find the length of the syllable
+ m_length=m_klettres->soundFactory->namesList[m_random].length();
+ kdDebug() << "syllable length " << m_length << endl;
+ int width;
+ if (m_length<3)
+ width = 200;
+ else
+ width = 200+(20*(m_length-2));
+ update();
+ m_letterEdit->setMinimumSize( QSize( width, 160 ) );
+ m_letterEdit->setMaximumSize( QSize( width, 160 ) );
+}
+
+void KLettresView::paintEvent( QPaintEvent * )
+{
+ if (Prefs::level()%2==1) {
+ QPainter paint(this);
+ paint.setFont(Prefs::font());
+ QString start = i18n("Start");
+
+ paint.setFont(Prefs::font());
+ if (Prefs::theme() == Prefs::EnumTheme::desert) {
+ paint.setPen( QColor(115, 50, 95)); //brown
+ //m_letterEdit->setPaletteForegroundColor(QColor(115, 50, 95));
+ }
+ else if (Prefs::theme() == Prefs::EnumTheme::arctic) {
+ paint.setPen( Qt::white );
+ //m_letterEdit->setPaletteForegroundColor(QColor(48, 75, 137));
+ }
+ else {
+ paint.setPen( Qt::white );
+ //m_letterEdit->setPaletteForegroundColor(Qt::black);
+ }
+ paint.drawText(50, 230, m_currentLetter);
+ }
+}
+
+
+void KLettresView::game()
+{
+ m_cursorPos = 1;
+ //reset everything so when you change language or levels
+ //it all restarts nicely
+ QObject::disconnect(m_letterEdit, SIGNAL(textChanged(const QString&)),this,SLOT(slotProcess(const QString&)) );
+ m_letterEdit->clear();
+ m_letterEdit->setCursorPosition(0);
+ m_letterEdit->setMaxLength(1); //fix that's in trunk
+ m_letterEdit->setFocus();
+ chooseSound();
+ QObject::connect(m_letterEdit, SIGNAL(textChanged(const QString&)), this, SLOT(slotProcess(const QString&)) );
+}
+
+void KLettresView::slotProcess(const QString &inputLetter)
+{
+ QObject::disconnect(m_letterEdit, SIGNAL(textChanged(const QString&)), this, SLOT(slotProcess(const QString&)) );
+ //check if backspace
+ if(inputLetter.length() != m_cursorPos)
+ {
+ m_cursorPos--;
+ m_letterEdit->setMaxLength( m_cursorPos );
+ QObject::connect(m_letterEdit, SIGNAL(textChanged(const QString&)),this,SLOT(slotProcess(const QString&)) );
+ return;
+ }
+
+ QChar input_character = inputLetter.at(inputLetter.length()-1);
+
+ if (input_character.isLetter()) //(a1.at(inputLetter.length()).lower().isLetter())
+ {
+ m_upperLetter = inputLetter.upper(); //put it in uppercase
+ m_letterEdit->selectAll();
+ m_letterEdit->cut();
+ m_letterEdit->setText(m_upperLetter);
+ QTimer::singleShot(m_timer*100, this, SLOT(slotTimerDone()));
+ }
+ else
+ {
+ kdDebug() << "in no char loop" << endl;
+ kdDebug() << "cursor " << m_cursorPos << endl;
+ m_letterEdit->backspace();
+ QObject::connect(m_letterEdit, SIGNAL(textChanged(const QString&)),this,SLOT(slotProcess(const QString&)) );
+ }
+}
+
+void KLettresView::slotTimerDone()
+{
+ kdDebug() << "in timer done" << endl;
+ QString match = m_currentLetter.left(m_cursorPos );
+
+ if (match == m_upperLetter)
+ {
+ if (m_cursorPos!=m_length) //if text in lineEdit not equal to text on button
+ { //i.e if you still have to allow input
+ m_letterEdit->setMaxLength( m_cursorPos +1 );
+ m_letterEdit->setCursorPosition( m_cursorPos );
+ m_letterEdit->setFocus();
+ m_cursorPos ++;
+ QObject::connect(m_letterEdit, SIGNAL(textChanged(const QString&)), this, SLOT(slotProcess(const QString&)) );
+ }
+ else
+ {
+ game(); //another syllable
+ }
+ }
+ else //if not, cut it
+ {
+ m_letterEdit->backspace(); //delete the char to the left and position curseur accordingly
+ m_letterEdit->setFocus();
+ //play sound again
+ m_klettres->soundFactory->playSound(m_random);
+
+ QObject::connect(m_letterEdit, SIGNAL(textChanged(const QString&)), this, SLOT(slotProcess(const QString&)) );
+ }
+}
+
+void KLettresView::slotPlayAgain()
+{
+ //TODO wait for the previous sound to be payed before playing again as it won't play if the previous one was not finished
+ m_klettres->soundFactory->playSound(m_random);
+}
+
+void KLettresView::viewThemeArctic()
+{
+ Prefs::setTheme(Prefs::EnumTheme::arctic);
+ Prefs::writeConfig();
+ setPaletteBackgroundPixmap(m_grownupPicture);
+}
+
+void KLettresView::viewThemeClassroom()
+{
+ Prefs::setTheme(Prefs::EnumTheme::classroom);
+ Prefs::writeConfig();
+ setPaletteBackgroundPixmap(m_kidPicture);
+}
+
+void KLettresView::viewThemeDesert()
+{
+ Prefs::setTheme(Prefs::EnumTheme::desert);
+ Prefs::writeConfig();
+ setPaletteBackgroundPixmap(m_desertPicture);
+}
+
+#include "klettresview.moc"
diff --git a/klettres/klettres/klettresview.h b/klettres/klettres/klettresview.h
new file mode 100644
index 00000000..80c8a95b
--- /dev/null
+++ b/klettres/klettres/klettresview.h
@@ -0,0 +1,107 @@
+/***************************************************************************
+ * Copyright (C) 2001-2006 by Anne-Marie Mahfouf *
+ * annemarie.mahfouf@free.fr *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+#ifndef KLETTRESVIEW_H
+#define KLETTRESVIEW_H
+
+#include <qwidget.h>
+#include <qpalette.h>
+#include <klineedit.h>
+
+class QLabel;
+class KLettres;
+
+/**
+ * This class serves as the view for KLettres. It holds the GUI for the kid and grown-up looks
+ * and has the code to display the letter/syllable and play the sound.
+ *
+ * @short KLettres View class
+ * @author Anne-Marie Mahfouf <annma@kde.org>
+ * @version 1.1
+ */
+
+
+class KLettresView : public QWidget
+{
+ Q_OBJECT
+public:
+ /**
+ * Default constructor
+ */
+ KLettresView(KLettres *parent);
+
+ /**
+ * Destructor
+ */
+ virtual ~KLettresView();
+
+ ///Set the Grown-up background, show menubar, show the Kid button
+ void viewThemeArctic();
+ ///Set the Kid background pic, hide the menubar, show the Grownup button
+ void viewThemeClassroom();
+ ///Set the Desert background pic, hide the menubar, show the Grownup button
+ void viewThemeDesert();
+ ///The timer value i.e. the time for displaying the letters/syllables
+ int m_timer;
+ ///A Klettres object
+ KLettres *m_klettres;
+ ///The line where the user enters his/her input
+ KLineEdit *m_letterEdit;
+
+protected:
+
+ ///The pixmaps for the themes backgrounds
+ QPixmap m_grownupPicture,
+ m_kidPicture,
+ m_desertPicture;
+ ///Palette changes wether it's kid or grown-up
+ QPalette pal;
+ QColorGroup cg;
+ ///cursor position in the line edit
+ int m_cursorPos;
+ ///Random number that decides on the letter/syllable and sound
+ int m_random;
+ ///Length of the syllables
+ int m_length;
+ ///Choose a sound in random and ensure that it's not the same than the previous one
+ void chooseSound();
+ ///Current letter or syllable stored
+ QString m_currentLetter;
+ ///Current letter entered uppercase i.e. m_inputLetter.upper()
+ QString m_upperLetter;
+ ///Current letter entered
+ //QString m_inputLetter; NOTE: not used
+ ///Paint the letter/syllable in levels 1 and 3
+ void paintEvent( QPaintEvent * );
+
+ public slots:
+ ///Start playing displaying a new letter/syllable, playing the associated sound
+ void game();
+
+ protected slots:
+ ///Play the same sound again
+ void slotPlayAgain();
+
+ void slotProcess(const QString &inputLetter);
+
+ void slotTimerDone();
+};
+
+#endif // KLETTRESVIEW_H
diff --git a/klettres/klettres/klnewstuff.cpp b/klettres/klettres/klnewstuff.cpp
new file mode 100644
index 00000000..c6d601ba
--- /dev/null
+++ b/klettres/klettres/klnewstuff.cpp
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
+ * Copyright (C) 2004-2006 Anne-Marie Mahfouf <annma@kde.org>
+ *
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of version 2 of the GNU General Public
+ License as published by the Free Software Foundation.
+
+ 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.
+ */
+
+#include <kdebug.h>
+#include <ktar.h>
+#include <qdir.h>
+#include <kaction.h>
+#include <kapplication.h>
+#include <kstandarddirs.h>
+#include "klnewstuff.h"
+#include "prefs.h"
+
+KLNewStuff::KLNewStuff( KLettresView *view ) :
+ KNewStuff( "klettres", view ),
+ m_view( view )
+{
+}
+
+bool KLNewStuff::install( const QString &fileName )
+{
+ kdDebug(5850) << "KLNewStuff::install(): " << fileName << endl;
+
+ KTar archive( fileName );
+ if ( !archive.open( IO_ReadOnly ) )
+ return false;
+ const KArchiveDirectory *archiveDir = archive.directory();
+ KStandardDirs myStdDir;
+ const QString destDir =myStdDir.saveLocation("data", kapp->instanceName() + "/", true);
+ KStandardDirs::makeDir( destDir );
+ archiveDir->copyTo(destDir);
+ archive.close();
+ //look for languages dirs installed
+ m_view->m_klettres->findLanguages();
+ //refresh Languages menu
+ //kdDebug() << "---- selected language : " << m_view->m_klettres->selectedLanguage << endl;
+ m_view->m_klettres->m_languageAction->setItems(m_view->m_klettres->m_languageNames);
+ m_view->m_klettres->slotChangeLanguage(m_view->m_klettres->m_languages.findIndex(Prefs::defaultLanguage()));
+ m_view->m_klettres->m_languageAction->setCurrentItem(m_view->m_klettres->m_languages.findIndex(Prefs::defaultLanguage()));
+ return true;
+}
+
+bool KLNewStuff::createUploadFile( const QString &fileName )
+{
+ //return mView->saveCalendar( fileName );
+ return true;
+}
diff --git a/klettres/klettres/klnewstuff.h b/klettres/klettres/klnewstuff.h
new file mode 100644
index 00000000..f7cd9803
--- /dev/null
+++ b/klettres/klettres/klnewstuff.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
+ * Copyright (C) 2004-2006 Anne-Marie Mahfouf <annma@kde.org>
+ *
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of version 2 of the GNU General Public
+ License as published by the Free Software Foundation.
+
+ 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.
+ */
+
+#ifndef KLNEWSTUFF_H
+#define KLNEWSTUFF_H
+
+#include "knewstuff/knewstuff.h"
+#include "klettres.h"
+
+class KLettres;
+
+class KLNewStuff : public KNewStuff
+{
+public:
+ KLNewStuff( KLettresView * );
+
+ bool install( const QString &fileName );
+ bool createUploadFile( const QString &fileName );
+
+ //private:
+ KLettresView *m_view;
+};
+
+#endif
diff --git a/klettres/klettres/main.cpp b/klettres/klettres/main.cpp
new file mode 100644
index 00000000..cb9a2368
--- /dev/null
+++ b/klettres/klettres/main.cpp
@@ -0,0 +1,123 @@
+/***************************************************************************
+ * Copyright (C) 2001-2005 by Anne-Marie Mahfouf *
+ * annemarie.mahfouf@free.fr *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+/*****************************************************/
+/* Please save with utf8 encoding, thanks */
+/*****************************************************/
+
+#include <kaboutdata.h>
+#include <kcmdlineargs.h>
+#include <kapplication.h>
+
+#include "klettres.h"
+#include "version.h"
+
+static const char description[] =
+ I18N_NOOP("KLettres helps a very young child or an adult learning \n"
+ "a new language by associating sounds and \n"
+ "letters in this language.\n"
+ "13 languages are available: British, Czech, Danish, Dutch, English, French,\nGerman, Hebrew, Italian, Luganda, Romanized Hindi, Spanish and Slovak.");
+
+static const char version[] = "1.5.1";
+
+static KCmdLineOptions options[] =
+ {
+ // { "+[URL]", I18N_NOOP( "Document to open" ), 0 },
+ KCmdLineLastOption
+ };
+
+int main(int argc, char **argv)
+{
+ KAboutData about("klettres", I18N_NOOP("KLettres"), KLETTRES_VERSION, description,
+ KAboutData::License_GPL, "(C) 2001-2006 Anne-Marie Mahfouf",0, "http://edu.kde.org/klettres", "submit@bugs.kde.org");
+ about.addAuthor( "Anne-Marie Mahfouf", 0, "annma AT kde.org");
+ about.addCredit("Ludovic Grossard",
+ I18N_NOOP("French sounds"), "grossard AT kde.org");
+ about.addCredit("Geert Stams",
+ I18N_NOOP("Dutch sounds"), "geert AT pa3csg.myweb.nl");
+ about.addCredit("Erik Kjaer Pedersen",
+ I18N_NOOP("Danish sounds"), "erik AT binghamton.edu");
+ about.addCredit("Eva Mikulčíková",
+ I18N_NOOP("Czech sounds"), "evmi AT seznam.cz");
+ about.addCredit("Silvia Motyčková & Jozef Říha",
+ I18N_NOOP("Slovak sounds"), "silviamotycka AT seznam.cz");
+ about.addCredit("Robert Wadley",
+ I18N_NOOP("English sounds"), "robntina AT juno DOT com");
+ about.addCredit("Pietro Pasotti",
+ I18N_NOOP("Italian sounds"), "pietro AT itopen.it");
+ about.addCredit("Ana Belén Caballero and Juan Pedro Paredes",
+ I18N_NOOP("Spanish sounds"), "neneta AT iquis.com");
+ about.addCredit("Vikas Kharat",
+ I18N_NOOP("Romanized Hindi sounds"), "kharat AT sancharnet.in");
+ about.addCredit("John Magoye and Cormac Lynch",
+ I18N_NOOP("Luganda sounds"), "cormaclynch AT eircom.net");
+ about.addCredit("Helmut Kriege",
+ I18N_NOOP("German sounds"), "h.kriege AT freenet.de");
+ about.addCredit("Assaf Gorgon and Diego Iastrubni",
+ I18N_NOOP("Hebrew sounds"), "elcuco AT kde.org");
+ about.addCredit("Lisa Kriege",
+ I18N_NOOP("British English sounds"), "h.kriege AT freenet.de");
+ about.addCredit("Primoz Anzur",
+ I18N_NOOP("Icons"), "zerokode AT yahoo.com");
+ about.addCredit("Renaud Blanchard",
+ I18N_NOOP("Background picture"), "kisukuma AT chez.com");
+ about.addCredit("Robert Gogolok",
+ I18N_NOOP("Support and coding guidance"), "mail AT robert-gogolok.de");
+ about.addCredit("Chris Luetchford",
+ I18N_NOOP("SVG icon"), "chris AT os11.com");
+ about.addCredit("Peter Hedlund",
+ I18N_NOOP("Code for generating special characters' icons"), "peter.hedlund AT kdemail.net");
+ about.addCredit("Waldo Bastian",
+ I18N_NOOP("Port to KConfig XT, coding help"), "bastian AT kde.org");
+ about.addCredit("Danny Allen",
+ I18N_NOOP("Kids and grown-up SVG icons"), "danny AT dannyallen.co.uk");
+ about.addCredit("Michael Goettsche",
+ I18N_NOOP("Timer setting widgets"), "michael.goettsche AT kdemail.net");
+ KCmdLineArgs::init(argc, argv, &about);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+
+ // see if we are starting with session management
+ if (app.isRestored())
+ RESTORE(KLettres)
+ else
+ {
+ // no session.. just start up normally
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ if (args->count() == 0)
+ {
+ KLettres *widget = new KLettres;
+ widget->show();
+ }
+ else
+ {
+ int i = 0;
+ for (; i < args->count(); i++)
+ {
+ KLettres *widget = new KLettres;
+ widget->show();
+ }
+ }
+ args->clear();
+ }
+
+ return app.exec();
+}
+
diff --git a/klettres/klettres/pics/Makefile.am b/klettres/klettres/pics/Makefile.am
new file mode 100644
index 00000000..a76e605d
--- /dev/null
+++ b/klettres/klettres/pics/Makefile.am
@@ -0,0 +1,2 @@
+pics_DATA = klettres_kids.jpeg klettres_grownup.png klettres_desert.png
+picsdir = $(kde_datadir)/klettres/pics
diff --git a/klettres/klettres/pics/klettres_desert.png b/klettres/klettres/pics/klettres_desert.png
new file mode 100644
index 00000000..9a78ff74
--- /dev/null
+++ b/klettres/klettres/pics/klettres_desert.png
Binary files differ
diff --git a/klettres/klettres/pics/klettres_grownup.png b/klettres/klettres/pics/klettres_grownup.png
new file mode 100644
index 00000000..57d724b5
--- /dev/null
+++ b/klettres/klettres/pics/klettres_grownup.png
Binary files differ
diff --git a/klettres/klettres/pics/klettres_kids.jpeg b/klettres/klettres/pics/klettres_kids.jpeg
new file mode 100644
index 00000000..afa0bf97
--- /dev/null
+++ b/klettres/klettres/pics/klettres_kids.jpeg
Binary files differ
diff --git a/klettres/klettres/pics/menubar.png b/klettres/klettres/pics/menubar.png
new file mode 100644
index 00000000..1f20a6da
--- /dev/null
+++ b/klettres/klettres/pics/menubar.png
Binary files differ
diff --git a/klettres/klettres/prefs.kcfgc b/klettres/klettres/prefs.kcfgc
new file mode 100644
index 00000000..91156dab
--- /dev/null
+++ b/klettres/klettres/prefs.kcfgc
@@ -0,0 +1,8 @@
+# Code generation options for kconfig_compiler
+File=klettres.kcfg
+IncludeFiles=kdebug.h
+ClassName=Prefs
+Singleton=true
+CustomAdditions=true
+Mutators=true
+
diff --git a/klettres/klettres/prefs_addons.h b/klettres/klettres/prefs_addons.h
new file mode 100644
index 00000000..42744ffa
--- /dev/null
+++ b/klettres/klettres/prefs_addons.h
@@ -0,0 +1,48 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Waldo Bastian *
+ * bastian@kde.org *
+ * Copyright (c) 2005 Anne-Marie Mahfouf <annma@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, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+ public:
+static QString defaultLanguage();
+static void setLanguages(const QStringList &languages)
+{
+ Prefs::self()->m_languages = languages;
+}
+
+static void setLanguageNumber(int i)
+{
+ setLanguage(Prefs::self()->m_languages[i]);
+}
+
+static int languageNumber()
+{
+ int i = Prefs::self()->m_languages.findIndex(language());
+ if (i != -1)
+ return i;
+ i = Prefs::self()->m_languages.findIndex(defaultLanguage());
+ if (i != -1)
+ return i;
+ i = Prefs::self()->m_languages.findIndex("en");
+ if (i != -1)
+ return i;
+
+ return 0;
+}
+QStringList m_languages;
diff --git a/klettres/klettres/soundfactory.cpp b/klettres/klettres/soundfactory.cpp
new file mode 100644
index 00000000..31f243fa
--- /dev/null
+++ b/klettres/klettres/soundfactory.cpp
@@ -0,0 +1,148 @@
+/* -------------------------------------------------------------
+ From KDE Tuberling
+ mailto:e.bischoff@noos.fr
+ ------------------------------------------------------------- */
+/*
+ * Copyright (C) 2001 Eric Bischoff
+ 2004-2006 Anne-Marie Mahfouf <annma@kde.org>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of version 2 of the GNU General Public
+ License as published by the Free Software Foundation.
+
+ 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.
+ */
+#include <stdlib.h>
+
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <kaudioplayer.h>
+#include <kdebug.h>
+#include <kstandarddirs.h>
+
+#include "soundfactory.h"
+#include "soundfactory.moc"
+#include "klettres.h"
+#include "prefs.h"
+
+
+SoundFactory::SoundFactory(KLettres *parent, const char *name)
+ : QObject(parent, name)
+{
+ klettres = parent;
+
+ namesList = filesList = 0;
+ sounds = 0;
+
+ bool ok = klettres->loadLayout(m_layoutsDocument);
+ if (ok) change(Prefs::language());
+ if (!ok) loadFailure();
+}
+
+SoundFactory::~SoundFactory()
+{
+}
+
+void SoundFactory::change(QString currentLanguage)
+{
+ //go load the sounds for the current language
+ bool ok = loadLanguage(m_layoutsDocument, currentLanguage);
+ kdDebug() << "ok " << ok << endl;
+ //tell the user if there are no sounds
+ if (!ok) loadFailure();
+}
+
+void SoundFactory::playSound(int mySound)
+{
+ QString soundFile;
+
+ if ((uint) mySound >= sounds) return;
+
+ soundFile = locate("data", "klettres/" + filesList[mySound]);
+ kdDebug() << "soundFile " << soundFile << endl;
+
+ if (soundFile == 0) return;
+
+ KAudioPlayer::play(soundFile);
+}
+
+void SoundFactory::loadFailure()
+{
+ KMessageBox::error(klettres, i18n("Error while loading the sound names."));
+}
+
+bool SoundFactory::loadLanguage(QDomDocument &layoutDocument, QString currentLanguage)
+{
+ QDomNodeList languagesList,
+ alphabetList,
+ syllablesList,
+ soundNamesList;
+ QDomElement languageElement,
+ alphabetElement,
+ syllableElement,
+ soundNameElement;
+ QDomAttr nameAttribute, fileAttribute;
+
+ languagesList = layoutDocument.elementsByTagName("language");
+ QDomAttr codeAttribute;
+ //check if the sound files match current language
+ languageElement = (const QDomElement &) languagesList.item(0).toElement();
+ codeAttribute = languageElement.attributeNode("code");
+ if (currentLanguage != codeAttribute.value()) {
+ kdDebug() << "Fail reading language !!! " << endl;
+ return false;
+ }
+ else kdDebug() << "current language " << currentLanguage << endl;
+ //load the sounds for level 1 and 2 (alphabet)
+ if ((Prefs::level() == 1) || (Prefs::level() == 2))
+ {
+ alphabetList = languageElement.elementsByTagName("alphabet");
+ if (alphabetList.count() != 1)
+ return false;
+
+ alphabetElement = (const QDomElement &) alphabetList.item(0).toElement();
+
+ soundNamesList = alphabetElement.elementsByTagName("sound");
+ }
+
+ //load the sounds for level 3 and 4 (syllables)
+ if ((Prefs::level() == 3) || (Prefs::level() == 4))
+ {
+ syllablesList = languageElement.elementsByTagName("syllables");
+ if (syllablesList.count() != 1)
+ return false;
+
+ syllableElement = (const QDomElement &) syllablesList.item(0).toElement();
+
+ soundNamesList = syllableElement.elementsByTagName("sound");
+ }
+ //Counts the number of sounds
+ sounds = soundNamesList.count();
+ if (sounds < 1)
+ return false;
+
+ namesList.clear();
+ filesList.clear();
+
+ for (uint sound = 0; sound < sounds; sound++)
+ {
+ soundNameElement = (const QDomElement &) soundNamesList.item(sound).toElement();
+ nameAttribute = soundNameElement.attributeNode("name");
+ //namesList helds the names of the letter or syllable to display
+ namesList.append(nameAttribute.value());
+ fileAttribute = soundNameElement.attributeNode("file");
+ //filesList helds the names of the sound files (i.e the location of the sounds like fr/alpha/a-0.mp3)
+ filesList.append(fileAttribute.value());
+ }
+ if (namesList.isEmpty()) return false;
+ if (filesList.isEmpty()) return false;
+ return true;
+}
+
diff --git a/klettres/klettres/soundfactory.h b/klettres/klettres/soundfactory.h
new file mode 100644
index 00000000..c02b26c4
--- /dev/null
+++ b/klettres/klettres/soundfactory.h
@@ -0,0 +1,77 @@
+/* -------------------------------------------------------------
+ From KDE Tuberling
+ mailto:e.bischoff@noos.fr
+ ------------------------------------------------------------- */
+ /*
+ * Copyright (C) 2001
+ Eric Bischoff
+ 2004-2006 Anne-Marie Mahfouf <annma@kde.org>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of version 2 of the GNU General Public
+ License as published by the Free Software Foundation.
+
+ 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.
+ */
+
+
+#ifndef _SOUNDFACTORY_H_
+#define _SOUNDFACTORY_H_
+
+#include <qdom.h>
+
+class KLettres;
+
+/**
+ * This class manages the sounds toplay in KLettres, reading the data about the sounds
+ * in the sounds.xml file which is in /data.
+ *
+ * @short Sounds factory class: find and play the right sound.
+ * @author Anne-Marie Mahfouf <annma@kde.org>
+ * @version 1.1
+ */
+
+class SoundFactory : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ SoundFactory(KLettres *parent, const char *name);
+ ~SoundFactory();
+
+ ///Call the main instance of the program
+ KLettres *klettres;
+ ///Change the language when the user changes the language in the Languages menu
+ void change(QString currentLanguage);
+ ///Play the sound associated to int soundRef
+ void playSound(int ) ;
+ ///Number of sounds corresponding to the current language and level (alphabet or syllables)
+ uint sounds;
+ ///List of sound names
+ QStringList namesList;
+ ///List of sound files associated with each sound name
+ QStringList filesList;
+ /**
+ * Load the sounds of one given language
+ * Call that when you read the language from Config and when the language changes
+ * or when the level changes
+ */
+ bool loadLanguage(QDomDocument &layoutDocument, QString currentLanguage);
+ ///The language document
+ QDomDocument m_layoutsDocument;
+
+private:
+ ///Report a load failure
+ void loadFailure();
+
+};
+
+#endif
diff --git a/klettres/klettres/timer.cpp b/klettres/klettres/timer.cpp
new file mode 100644
index 00000000..7ddcc20c
--- /dev/null
+++ b/klettres/klettres/timer.cpp
@@ -0,0 +1,49 @@
+/***************************************************************************
+ * Copyright (C) 2005 by Michael Goettsche *
+ * michael.goettsche@kdemail.net
+ * Copyright (C) 2006 by Anne-Marie Mahfouf *
+ * annma@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, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include <qlabel.h>
+#include <qslider.h>
+
+#include "timer.h"
+#include "prefs.h"
+
+
+Timer::Timer()
+ :timerdlg()
+{
+ timeGrownLabel->setText(QString::number(Prefs::grownTimer()) + " " + i18n("tenths of second"));
+ timeKidLabel->setText(QString::number(Prefs::kidTimer()) + " " + i18n("tenths of second"));
+ connect(kcfg_GrownTimer, SIGNAL(valueChanged(int)), this, SLOT(sliderValueChanged()));
+ connect(kcfg_KidTimer, SIGNAL(valueChanged(int)), this, SLOT(sliderValueChanged()));
+}
+
+
+void Timer::sliderValueChanged()
+{
+ timeKidLabel->setText(QString::number(kcfg_KidTimer->value()) + " " + i18n("tenths of second"));
+ timeGrownLabel->setText(QString::number(kcfg_GrownTimer->value()) + " " + i18n("tenths of second"));
+}
+
+
+#include "timer.moc"
diff --git a/klettres/klettres/timer.h b/klettres/klettres/timer.h
new file mode 100644
index 00000000..91785a32
--- /dev/null
+++ b/klettres/klettres/timer.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ * Copyright (C) 2005 by Michael Goettsche *
+ * michael.goettsche@kdemail.net
+ * Copyright (C) 2006 by Anne-Marie Mahfouf *
+ * annma@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, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#ifndef TIMER_H_
+#define TIMER_H_
+
+
+#include "timerdlg.h"
+
+/**
+ * @short Timer widget in Settings dialog
+ * @author Michael Goettsche <michael.goettsche@kdemail.net >
+ * @version 0.1
+ */
+
+class Timer : public timerdlg
+{
+Q_OBJECT
+
+public:
+ ///Constructor
+ Timer();
+
+protected slots:
+ ///When the QSlider value changes
+ void sliderValueChanged();
+};
+
+
+#endif //TIMER_H_
diff --git a/klettres/klettres/timerdlg.ui b/klettres/klettres/timerdlg.ui
new file mode 100644
index 00000000..91ab486f
--- /dev/null
+++ b/klettres/klettres/timerdlg.ui
@@ -0,0 +1,245 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>timerdlg</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>timerdlg</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>434</width>
+ <height>260</height>
+ </rect>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>350</width>
+ <height>0</height>
+ </size>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="KActiveLabel" row="0" column="0" rowspan="1" colspan="4">
+ <property name="name">
+ <cstring>kActiveLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Set the time between 2 letters.</string>
+ </property>
+ </widget>
+ <widget class="QSlider" row="2" column="0" rowspan="1" colspan="4">
+ <property name="name">
+ <cstring>kcfg_KidTimer</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="maxValue">
+ <number>10</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>2</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Set the timer (in minutes)</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Only used if Use a timer is checked</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Kid Mode</string>
+ </property>
+ </widget>
+ <spacer row="1" column="1" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>spacer8</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>264</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="8" column="3">
+ <property name="name">
+ <cstring>spacer26_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>25</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="7" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>spacer24_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>270</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QSlider" row="6" column="0" rowspan="1" colspan="4">
+ <property name="name">
+ <cstring>kcfg_GrownTimer</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="maxValue">
+ <number>10</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>2</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Set the timer (in minutes)</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Only used if Use a timer is checked</string>
+ </property>
+ </widget>
+ <spacer row="5" column="2" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>spacer8_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>228</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="5" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>textLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>Grown-up Mode</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="7" column="3">
+ <property name="name">
+ <cstring>timeGrownLabel</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring></cstring>
+ </property>
+ </widget>
+ <spacer row="3" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>spacer24_2_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>226</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="4" column="3">
+ <property name="name">
+ <cstring>spacer26_2_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>25</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="3" column="3">
+ <property name="name">
+ <cstring>timeKidLabel</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring></cstring>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<customwidgets>
+</customwidgets>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>kactivelabel.h</includehint>
+</includehints>
+</UI>
diff --git a/klettres/klettres/version.h b/klettres/klettres/version.h
new file mode 100644
index 00000000..f9a01f27
--- /dev/null
+++ b/klettres/klettres/version.h
@@ -0,0 +1,28 @@
+/***************************************************************************
+ * Copyright (C) 2004-2006 by Anne-Marie Mahfouf *
+ * annemarie.mahfouf@free.fr *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+ /**
+ * This file serves holds the version number of KLettres
+ * @author Anne-Marie Mahfouf <annma@kde.org>
+ * @version 1.1
+ */
+ #ifndef KLETTRES_VERSION
+#define KLETTRES_VERSION "1.5.1"
+#endif