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-ecb5cbfe19dav3.5.13-sru
@ -0,0 +1,397 @@
|
||||
GNU Free Documentation License
|
||||
Version 1.2, November 2002
|
||||
|
||||
|
||||
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
0. PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
functional and useful document "free" in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The "Document", below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as "you". You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A "Secondary Section" is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (Thus, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The "Invariant Sections" are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The "Cover Texts" are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not "Transparent" is called "Opaque".
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML, PostScript or PDF designed for human modification. Examples of
|
||||
transparent image formats include PNG, XCF and JPG. Opaque formats
|
||||
include proprietary formats that can be read and edited only by
|
||||
proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML, PostScript or PDF produced by some word
|
||||
processors for output purposes only.
|
||||
|
||||
The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, "Title Page" means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section "Entitled XYZ" means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as "Acknowledgements",
|
||||
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section "Entitled XYZ" according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
|
||||
2. VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
|
||||
3. COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
|
||||
4. MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
D. Preserve all the copyright notices of the Document.
|
||||
E. Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
F. Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
H. Include an unaltered copy of this License.
|
||||
I. Preserve the section Entitled "History", Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section Entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
J. Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the "History" section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||||
Preserve the Title of the section, and preserve in the section all
|
||||
the substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
M. Delete any section Entitled "Endorsements". Such a section
|
||||
may not be included in the Modified Version.
|
||||
N. Do not retitle any existing section to be Entitled "Endorsements"
|
||||
or to conflict in title with any Invariant Section.
|
||||
O. Preserve any Warranty Disclaimers.
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section Entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
|
||||
5. COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections Entitled "History"
|
||||
in the various original documents, forming one section Entitled
|
||||
"History"; likewise combine any sections Entitled "Acknowledgements",
|
||||
and any sections Entitled "Dedications". You must delete all sections
|
||||
Entitled "Endorsements".
|
||||
|
||||
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, is called an "aggregate" if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included in an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
|
||||
8. TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warranty Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled "Acknowledgements",
|
||||
"Dedications", or "History", the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
|
||||
9. TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document 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.
|
||||
|
||||
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation 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. See
|
||||
http://www.gnu.org/copyleft/.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
|
||||
|
||||
ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the "with...Texts." line with this:
|
||||
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
@ -0,0 +1,176 @@
|
||||
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. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
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/kde/bin', `/usr/local/kde/lib', etc. You can specify an
|
||||
installation prefix other than `/usr/local/kde' 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.
|
||||
|
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @mainpage KDE Educational Software
|
||||
*
|
||||
* This section contains the API references for KDE's collection
|
||||
* of educational software. These include:
|
||||
*
|
||||
* - <a href="kalzium/html/index.html"><b>kalzium</b></a>\n
|
||||
* <i>Periodic table of elements.</i>
|
||||
* - <a href="kbruch/html/index.html"><b>kbruch</b></a>\n
|
||||
* <i>Fraction excercise trainer.</i>
|
||||
* - <a href="keduca/html/index.html"><b>keduca</b></a>\n
|
||||
* <i>Creation and revision of form-based tests and exams.</i>
|
||||
* - <a href="khangman/html/index.html"><b>khangman</b></a>\n
|
||||
* <i>Hangman game. The child should guess a word letter by letter.</i>
|
||||
* - <a href="kig/html/index.html"><b>kig</b></a>\n
|
||||
* <i>Interactive geometry.</i>
|
||||
* - <a href="kiten/html/index.html"><b>kiten</b></a>\n
|
||||
* <i>Japanese reference tool.</i>
|
||||
* - <a href="klatin/html/index.html"><b>klatin</b></a>\n
|
||||
* <i>Aims to help revise or learn latin.</i>
|
||||
* - <a href="klettres/html/index.html"><b>klettres</b></a>\n
|
||||
* <i>Helps child to learn the alphabet and to read some syllables.</i>
|
||||
* - <a href="kmplot/html/index.html"><b>kmplot</b></a>\n
|
||||
* <i>Mathematical function plotter.</i>
|
||||
* - <a href="kpercentage/html/index.html"><b>kpercentage</b></a>\n
|
||||
* - <a href="kstars/html/index.html"><b>kstars</b></a>\n
|
||||
* <i>Desktop planetarium.</i>
|
||||
* - <a href="ktouch/html/index.html"><b>ktouch</b></a>\n
|
||||
* <i>Program for learning touch typing.</i>
|
||||
* - <a href="kturtle/html/index.html"><b>kturtle</b></a>\n
|
||||
* - <a href="kverbos/html/index.html"><b>kverbos</b></a>\n
|
||||
* - <a href="kvoctrain/html/index.html"><b>kvoctrain</b></a>\n
|
||||
* <i>Vocabulary trainer.</i>
|
||||
* - <a href="kwordquiz/html/index.html"><b>kwordquiz</b></a>\n
|
||||
*
|
||||
* And a support library <a href="libkdeedu/html/index.html"><b>libkdeedu</b></a>.
|
||||
*
|
||||
* You can find more information about the <i>KDE Edutainment Project</i> at
|
||||
* <a href="http://edu.kde.org">edu.kde.org</a>.
|
||||
*
|
||||
*/
|
@ -0,0 +1,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.6.1
|
||||
COMPILE_FIRST = libkdeedu
|
||||
DISTCLEANFILES = inst-apps
|
||||
|
||||
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 SUBDIRS
|
||||
include admin/deps.am
|
||||
|
@ -0,0 +1,14 @@
|
||||
all:
|
||||
@echo "This Makefile is only for the CVS repository"
|
||||
@echo "This will be deleted before making the distribution"
|
||||
@echo ""
|
||||
@if test ! -d admin; then \
|
||||
echo "Please recheckout this module!" ;\
|
||||
echo "for cvs: use checkout once and after that update again" ;\
|
||||
echo "for cvsup: checkout kde-common from cvsup and" ;\
|
||||
echo " link kde-common/admin to ./admin" ;\
|
||||
exit 1 ;\
|
||||
fi
|
||||
$(MAKE) -f admin/Makefile.common cvs
|
||||
|
||||
.SILENT:
|
@ -0,0 +1,54 @@
|
||||
In this file:
|
||||
|
||||
* What it is
|
||||
* Common Mistakes
|
||||
* Debugging
|
||||
* More Info
|
||||
|
||||
What it is
|
||||
----------
|
||||
|
||||
* blinken: the KDE version of the well-known game Simon Says
|
||||
* kalzium: periodic table of elements
|
||||
* kanagram: an anagram game
|
||||
* kbruch: fraction excercise trainer
|
||||
* keduca: creation and revision of form-based tests and exams.
|
||||
* kgeography: geography learning program
|
||||
* khangman: hangman game. The child should guess a word letter by letter.
|
||||
* kig: interactive geometry
|
||||
* kiten: japanese reference tool
|
||||
* klatin: aims to help revise or learn Latin
|
||||
* klettres: helps child to learn the alphabet and to read some syllables
|
||||
* kmplot: mathematical function plotter
|
||||
* kpercentage: math application to improve skills in calculating percentages
|
||||
* kstars: desktop planetarium
|
||||
* ktouch: program for learning touch typing
|
||||
* kturtle: educational programming environment using the Logo programming language
|
||||
* kverbos: tudy Spanish verb forms
|
||||
* kvoctrain: vocabulary trainer
|
||||
* kwordquiz: a powerful way to master new vocabularies
|
||||
|
||||
Common Mistakes
|
||||
---------------
|
||||
|
||||
If configure claims Qt cannot be found, have a look at http://www.trolltech.com
|
||||
to get a copy of latest Qt 3.3.x version.
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
You can use --enable-debug with the configure script, if you want to have
|
||||
debug code in your KDE apps and libs. I recommend to do this, since this
|
||||
is alpha software and this makes debugging things a whole lot easier.
|
||||
|
||||
More Info
|
||||
---------
|
||||
|
||||
Have a look at the individual subdirectories, if you want to know, what
|
||||
versions of apps are included.
|
||||
|
||||
Please direct any bug reports to our bug list by visiting
|
||||
http://bugs.kde.org.
|
||||
|
||||
General KDE discussions should go to the KDE mailing list (kde@kde.org).
|
||||
|
@ -0,0 +1,25 @@
|
||||
edu_folder = $(kde_appsdir)/Edutainment
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(edu_folder)/Languages
|
||||
$(INSTALL_DATA) $(srcdir)/languages.desktop $(DESTDIR)$(edu_folder)/Languages/.directory
|
||||
|
||||
$(mkinstalldirs) $(DESTDIR)$(edu_folder)/Mathematics
|
||||
$(INSTALL_DATA) $(srcdir)/mathematics.desktop $(DESTDIR)$(edu_folder)/Mathematics/.directory
|
||||
|
||||
$(mkinstalldirs) $(DESTDIR)$(edu_folder)/Science
|
||||
$(INSTALL_DATA) $(srcdir)/science.desktop $(DESTDIR)$(edu_folder)/Science/.directory
|
||||
|
||||
$(mkinstalldirs) $(DESTDIR)$(edu_folder)/Tools
|
||||
$(INSTALL_DATA) $(srcdir)/tools.desktop $(DESTDIR)$(edu_folder)/Tools/.directory
|
||||
|
||||
$(mkinstalldirs) $(DESTDIR)$(edu_folder)/Miscellaneous
|
||||
$(INSTALL_DATA) $(srcdir)/miscellaneous.desktop $(DESTDIR)$(edu_folder)/Miscellaneous/.directory
|
||||
|
||||
uninstall-local:
|
||||
-rm -f $(DESTDIR)$(kde_appsdir)/Settings/Databases/.directory
|
||||
-rm -f $(DESTDIR)$(edu_folder)/Languages/.directory
|
||||
-rm -f $(DESTDIR)$(edu_folder)/Mathematics/.directory
|
||||
-rm -f $(DESTDIR)$(edu_folder)/Sience/.directory
|
||||
-rm -f $(DESTDIR)$(edu_folder)/Tools/.directory
|
||||
-rm -f $(DESTDIR)$(edu_folder)/Miscellaneous/.directory
|
@ -0,0 +1,70 @@
|
||||
[Desktop Entry]
|
||||
Icon=edu_languages
|
||||
Name=Languages
|
||||
Name[af]=Tale
|
||||
Name[ar]=اللغات
|
||||
Name[be]=Мовы
|
||||
Name[bg]=Езици
|
||||
Name[bn]=ভাষা
|
||||
Name[br]=Yezhoù
|
||||
Name[bs]=Jezici
|
||||
Name[ca]=Idiomes
|
||||
Name[cs]=Jazyky
|
||||
Name[csb]=Jãzëczi
|
||||
Name[cy]=Ieithoedd
|
||||
Name[da]=Sprog
|
||||
Name[de]=Sprachen
|
||||
Name[el]=Γλώσσες
|
||||
Name[eo]=Lingvoj
|
||||
Name[es]=Idiomas
|
||||
Name[et]=Keeled
|
||||
Name[eu]=Hizkuntzak
|
||||
Name[fa]=زبانها
|
||||
Name[fi]=Kielet
|
||||
Name[fo]=Mál
|
||||
Name[fr]=Langues
|
||||
Name[ga]=Teangacha
|
||||
Name[gl]=Linguas
|
||||
Name[he]=שפות
|
||||
Name[hi]=भाषाएँ
|
||||
Name[hr]=Jezici
|
||||
Name[hu]=Nyelvek
|
||||
Name[is]=Tungumál
|
||||
Name[it]=Lingue
|
||||
Name[ja]=言語
|
||||
Name[ka]=ენები
|
||||
Name[km]=ភាសា
|
||||
Name[lt]=Kalbos
|
||||
Name[lv]=Valodas
|
||||
Name[mk]=Јазици
|
||||
Name[mn]=Хэл
|
||||
Name[ms]=Bahasa
|
||||
Name[nb]=Språk
|
||||
Name[nds]=Spraken
|
||||
Name[ne]=भाषा
|
||||
Name[nl]=Talen
|
||||
Name[nn]=Språk
|
||||
Name[nso]=Maleme
|
||||
Name[pa]=ਭਾਸ਼ਾਵਾਂ
|
||||
Name[pl]=Języki
|
||||
Name[pt]=Línguas
|
||||
Name[pt_BR]=Idiomas
|
||||
Name[ru]=Языки
|
||||
Name[se]=Gielat
|
||||
Name[sk]=Jazyky
|
||||
Name[sl]=Jeziki
|
||||
Name[sr]=Језици
|
||||
Name[sr@Latn]=Jezici
|
||||
Name[sv]=Språk
|
||||
Name[ta]=மொழிகள்
|
||||
Name[tg]=Забонҳо
|
||||
Name[tr]=Diller
|
||||
Name[uk]=Мови
|
||||
Name[uz]=Tillar
|
||||
Name[uz@cyrillic]=Тиллар
|
||||
Name[ven]=Dzinyambo
|
||||
Name[vi]=Ngôn ngữ
|
||||
Name[xh]=Iilwimi
|
||||
Name[zh_CN]=语言
|
||||
Name[zh_TW]=語言
|
||||
Name[zu]=Izilimi
|
@ -0,0 +1,70 @@
|
||||
[Desktop Entry]
|
||||
Icon=edu_mathematics
|
||||
Name=Mathematics
|
||||
Name[af]=Wiskunde
|
||||
Name[ar]=رياضيات
|
||||
Name[be]=Матэматыка
|
||||
Name[bg]=Математика
|
||||
Name[bn]=গণিত
|
||||
Name[br]=Jedoniel
|
||||
Name[bs]=Matematika
|
||||
Name[ca]=Matemàtiques
|
||||
Name[cs]=Matematika
|
||||
Name[csb]=Matematika
|
||||
Name[cy]=Mathemateg
|
||||
Name[da]=Matematik
|
||||
Name[de]=Mathematik
|
||||
Name[el]=Μαθηματικά
|
||||
Name[eo]=Matematiko
|
||||
Name[es]=Matemáticas
|
||||
Name[et]=Matemaatika
|
||||
Name[eu]=Matematikak
|
||||
Name[fa]=ریاضیات
|
||||
Name[fi]=Matematiikka
|
||||
Name[fo]=Støddfrøði
|
||||
Name[fr]=Mathématiques
|
||||
Name[ga]=Matamaitic
|
||||
Name[gl]=Matemáticas
|
||||
Name[he]=מתמטיקה
|
||||
Name[hi]=गणित
|
||||
Name[hr]=Matematika
|
||||
Name[hu]=Matematika
|
||||
Name[is]=Stærðfræði
|
||||
Name[it]=Matematica
|
||||
Name[ja]=数学
|
||||
Name[ka]=მათემატიკა
|
||||
Name[km]=គណិតវិទ្យា
|
||||
Name[lt]=Matematika
|
||||
Name[lv]=Matemātika
|
||||
Name[mk]=Математика
|
||||
Name[mn]=Математикийн
|
||||
Name[ms]=Matematik
|
||||
Name[nb]=Matematikk
|
||||
Name[nds]=Reken
|
||||
Name[ne]=गणित
|
||||
Name[nl]=Wiskunde
|
||||
Name[nn]=Matematikk
|
||||
Name[nso]=Dipalontshetshere
|
||||
Name[pa]=ਗਣਿਤ
|
||||
Name[pl]=Matematyka
|
||||
Name[pt]=Matemática
|
||||
Name[pt_BR]=Matemática
|
||||
Name[ru]=Математика
|
||||
Name[se]=Matematihkka
|
||||
Name[sk]=Matematika
|
||||
Name[sl]=Matematika
|
||||
Name[sr]=Математика
|
||||
Name[sr@Latn]=Matematika
|
||||
Name[sv]=Matematik
|
||||
Name[ta]=கணிதம்
|
||||
Name[tg]=Математика
|
||||
Name[tr]=Matematik
|
||||
Name[uk]=Математика
|
||||
Name[uz]=Matematika
|
||||
Name[uz@cyrillic]=Математика
|
||||
Name[ven]=Zwa dzimbalo
|
||||
Name[vi]=Toán học
|
||||
Name[xh]=Imathematika
|
||||
Name[zh_CN]=数学
|
||||
Name[zh_TW]=數學
|
||||
Name[zu]=Ezezibalo
|
@ -0,0 +1,65 @@
|
||||
[Desktop Entry]
|
||||
Icon=edu_miscellaneous
|
||||
Name=Miscellaneous
|
||||
Name[af]=Allerande
|
||||
Name[ar]=منوعات
|
||||
Name[be]=Рознае
|
||||
Name[bg]=Разни
|
||||
Name[bn]=বিবিধ
|
||||
Name[br]=A bep seurt
|
||||
Name[bs]=Razno
|
||||
Name[ca]=Diversos
|
||||
Name[cs]=Různé
|
||||
Name[csb]=Jine
|
||||
Name[cy]=Amrywiol
|
||||
Name[da]=Diverse
|
||||
Name[de]=Verschiedenes
|
||||
Name[el]=Διάφορα
|
||||
Name[eo]=Diversoj
|
||||
Name[es]=Varios
|
||||
Name[et]=Mitmesugust
|
||||
Name[eu]=Miszelanea
|
||||
Name[fa]=گوناگون
|
||||
Name[fi]=Sekalainen
|
||||
Name[fr]=Divers
|
||||
Name[ga]=Éagsúil
|
||||
Name[gl]=Varios
|
||||
Name[he]=שונות
|
||||
Name[hi]=विविध
|
||||
Name[hr]=Razno
|
||||
Name[hu]=Egyéb
|
||||
Name[is]=Ýmislegt
|
||||
Name[it]=Varie
|
||||
Name[ja]=その他
|
||||
Name[ka]=სხვადასხვა
|
||||
Name[km]=ផ្សេងៗ
|
||||
Name[lt]=Įvairūs dalykai
|
||||
Name[lv]=Dažādi
|
||||
Name[mk]=Разно
|
||||
Name[ms]=Pelbagai
|
||||
Name[nb]=Diverse
|
||||
Name[nds]=Anner Saken
|
||||
Name[ne]=विविध
|
||||
Name[nl]=Diversen
|
||||
Name[nn]=Ymse
|
||||
Name[pa]=ਫੁਟਕਲ
|
||||
Name[pl]=Różne
|
||||
Name[pt]=Vários
|
||||
Name[pt_BR]=Variados
|
||||
Name[ro]=Diverse
|
||||
Name[ru]=Разное
|
||||
Name[se]=Feará mii
|
||||
Name[sk]=Rôzne
|
||||
Name[sl]=Razno
|
||||
Name[sr]=Разно
|
||||
Name[sr@Latn]=Razno
|
||||
Name[sv]=Diverse
|
||||
Name[ta]=இதர தேர்வுகள்
|
||||
Name[tg]=Гуногун
|
||||
Name[tr]=Çeşitli
|
||||
Name[uk]=Різне
|
||||
Name[uz]=Har xil
|
||||
Name[uz@cyrillic]=Ҳар хил
|
||||
Name[vi]=Linh tinh
|
||||
Name[zh_CN]=杂项
|
||||
Name[zh_TW]=雜項
|
@ -0,0 +1,71 @@
|
||||
[Desktop Entry]
|
||||
Icon=edu_science
|
||||
Name=Science
|
||||
Name[af]=Wetenskap
|
||||
Name[ar]=العلم
|
||||
Name[az]=Elm
|
||||
Name[be]=Навука
|
||||
Name[bg]=Наука
|
||||
Name[bn]=বিজ্ঞান
|
||||
Name[br]=Skiantoù
|
||||
Name[bs]=Nauka
|
||||
Name[ca]=Ciència
|
||||
Name[cs]=Věda
|
||||
Name[csb]=Ùczba
|
||||
Name[cy]=Gwyddoniaeth
|
||||
Name[da]=Videnskab
|
||||
Name[de]=Wissenschaft
|
||||
Name[el]=Επιστήμη
|
||||
Name[eo]=Sciencumoj
|
||||
Name[es]=Ciencia
|
||||
Name[et]=Loodusteadused
|
||||
Name[eu]=Zientzia
|
||||
Name[fa]=علم
|
||||
Name[fi]=Luonnontieteet
|
||||
Name[fo]=Náttúruvísind
|
||||
Name[ga]=Eolaíocht
|
||||
Name[gl]=Ciencia
|
||||
Name[he]=מדע
|
||||
Name[hi]=विज्ञान
|
||||
Name[hr]=Znanost
|
||||
Name[hu]=Tudományok
|
||||
Name[is]=Vísindi
|
||||
Name[it]=Scienza
|
||||
Name[ja]=サイエンス
|
||||
Name[ka]=მეცნიერება
|
||||
Name[km]=វិទ្យាសាស្ត្រ
|
||||
Name[lt]=Mokslas
|
||||
Name[lv]=Zinātne
|
||||
Name[mk]=Наука
|
||||
Name[mn]=Шинжлэх Ухааны
|
||||
Name[ms]=Sains
|
||||
Name[nb]=Vitenskap
|
||||
Name[nds]=Wetenschap
|
||||
Name[ne]=विज्ञान
|
||||
Name[nl]=Wetenschappelijk
|
||||
Name[nn]=Vitskap
|
||||
Name[nso]=Mahlale
|
||||
Name[pa]=ਵਿਗਿਆਨ
|
||||
Name[pl]=Nauka
|
||||
Name[pt]=Ciência
|
||||
Name[pt_BR]=Ciências
|
||||
Name[ro]=Ştiinţă
|
||||
Name[ru]=Другие науки
|
||||
Name[se]=Dieđa
|
||||
Name[sk]=Vedecký
|
||||
Name[sl]=Znanost
|
||||
Name[sr]=Наука
|
||||
Name[sr@Latn]=Nauka
|
||||
Name[sv]=Vetenskap
|
||||
Name[ta]=அறிவியல்
|
||||
Name[tg]=Фан
|
||||
Name[tr]=Bilim
|
||||
Name[uk]=Наука
|
||||
Name[uz]=Fan
|
||||
Name[uz@cyrillic]=Фан
|
||||
Name[ven]=Vhutsila
|
||||
Name[vi]=Khoa học
|
||||
Name[xh]=Inzulu lwazi
|
||||
Name[zh_CN]=科学
|
||||
Name[zh_TW]=科學
|
||||
Name[zu]=Ubuchwepheshe bezesayensi
|
@ -0,0 +1 @@
|
||||
Albert Astals Cid <tsdgeos AT terra DOT es>
|
@ -0,0 +1,2 @@
|
||||
2005-02-16 Albert Astals Cid <tsdgeos@terra.es>
|
||||
* Initial import
|
@ -0,0 +1,4 @@
|
||||
SUBDIRS = src images icons sounds fonts
|
||||
|
||||
docsdir = $(kde_datadir)/blinken/
|
||||
docs_DATA = README.packagers
|
@ -0,0 +1,16 @@
|
||||
blinKen uses a special handwriting font called Steve that is in the
|
||||
fonts directory to show the status text. If this font is not currently installed
|
||||
on the target system, on first run blinKen uses the fonts:/ ioslave to copy it
|
||||
to the user's fonts location.
|
||||
|
||||
This can cause problems, because if the program
|
||||
is used by 100 users there will be 100 copies of the font, one for each user.
|
||||
|
||||
To solve that we suggest making a package with "Some Juicy Fonts"
|
||||
(http://www.sourceforge.net/projects/sjfonts) that includes the Steve font
|
||||
and make the blinKen package depend on it.
|
||||
|
||||
If you do not want/cannot do that, please make blinKen depend on
|
||||
having kdebase installed as the fonts:/ ioslave is there.
|
||||
|
||||
- blinKen developers
|
@ -0,0 +1,2 @@
|
||||
fontsdir = $(kde_datadir)/blinken/fonts
|
||||
fonts_DATA = steve.ttf
|
@ -0,0 +1 @@
|
||||
KDE_ICON = blinken
|
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 844 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
@ -0,0 +1,2 @@
|
||||
imagesdir = $(kde_datadir)/blinken/images
|
||||
images_DATA = blinken.png redh.png blueh.png greenh.png yellowh.png quit.png quit_hover.png menu.png menu_hover.png highscore.png highscore_hover.png mark.png
|
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 785 B |
After Width: | Height: | Size: 1005 B |
After Width: | Height: | Size: 516 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,2 @@
|
||||
soundsdir = $(kde_datadir)/blinken/sounds
|
||||
sounds_DATA = 1.wav 2.wav 3.wav 4.wav lose.wav
|
@ -0,0 +1,23 @@
|
||||
if include_ARTS
|
||||
artslib = -lartskde
|
||||
else
|
||||
artslib =
|
||||
endif
|
||||
|
||||
bin_PROGRAMS = blinken
|
||||
|
||||
INCLUDES = $(all_includes)
|
||||
|
||||
blinken_LDFLAGS = $(all_libraries) $(KDE_RPATH)
|
||||
blinken_LDADD = $(LIB_KDEUI) $(LIB_KIO) $(artslib)
|
||||
|
||||
blinken_SOURCES = main.cpp blinken.cpp artsplayer.cpp blinkengame.cpp number.cpp highscoredialog.cpp counter.cpp fontutils.cpp fontchecker.cpp button.cpp settings.kcfgc
|
||||
|
||||
METASOURCES = AUTO
|
||||
|
||||
xdg_apps_DATA = blinken.desktop
|
||||
|
||||
kde_kcfg_DATA = blinken.kcfg
|
||||
|
||||
messages: rc.cpp
|
||||
$(XGETTEXT) *.cpp -o $(podir)/blinken.pot
|
@ -0,0 +1,147 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qtimer.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef WITHOUT_ARTS
|
||||
#include <klocale.h>
|
||||
#include <kmessagebox.h>
|
||||
#endif
|
||||
#include <kstandarddirs.h>
|
||||
|
||||
#include "artsplayer.h"
|
||||
#include "settings.h"
|
||||
|
||||
artsPlayer::artsPlayer() : m_playobj(0)
|
||||
{
|
||||
m_endChecker = new QTimer(this);
|
||||
connect(m_endChecker, SIGNAL(timeout()), this, SLOT(checkEnded()));
|
||||
|
||||
#ifndef WITHOUT_ARTS
|
||||
m_dispatcher = new KArtsDispatcher;
|
||||
m_server = new KArtsServer;
|
||||
m_factory = new KDE::PlayObjectFactory(m_server->server());
|
||||
|
||||
m_allPath = locate("appdata","sounds/lose.wav");
|
||||
m_greenPath = locate("appdata","sounds/1.wav");
|
||||
m_redPath = locate("appdata","sounds/2.wav");
|
||||
m_bluePath = locate("appdata","sounds/3.wav");
|
||||
m_yellowPath = locate("appdata","sounds/4.wav");
|
||||
#else
|
||||
KMessageBox::information(0, i18n("aRts was not found, therefore the sounds will be disabled."), i18n("Sounds Disabled"), "infoaboutartsnotfound");
|
||||
#endif
|
||||
}
|
||||
|
||||
artsPlayer::~artsPlayer()
|
||||
{
|
||||
#ifndef WITHOUT_ARTS
|
||||
delete m_playobj;
|
||||
delete m_factory;
|
||||
delete m_server;
|
||||
delete m_dispatcher;
|
||||
#endif
|
||||
}
|
||||
|
||||
void artsPlayer::play(blinkenGame::color c, bool stopCurrent)
|
||||
{
|
||||
int check;
|
||||
#ifndef WITHOUT_ARTS
|
||||
if (blinkenSettings::playSounds())
|
||||
{
|
||||
if (m_playobj && m_playobj -> state() == Arts::posPlaying)
|
||||
{
|
||||
if (stopCurrent)
|
||||
{
|
||||
m_nextSounds.clear();
|
||||
m_nextSounds.append(c);
|
||||
m_playobj -> halt();
|
||||
play();
|
||||
}
|
||||
else m_nextSounds.append(c);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_nextSounds.append(c);
|
||||
play();
|
||||
}
|
||||
check = 50;
|
||||
}
|
||||
else check = 250;
|
||||
#else
|
||||
//shut up gcc
|
||||
(void)c;
|
||||
(void)stopCurrent;
|
||||
check = 250;
|
||||
#endif
|
||||
if (!m_endChecker -> isActive()) m_endChecker -> start(check);
|
||||
}
|
||||
|
||||
void artsPlayer::play()
|
||||
{
|
||||
#ifndef WITHOUT_ARTS
|
||||
QString path;
|
||||
blinkenGame::color c = m_nextSounds.first();
|
||||
m_nextSounds.pop_front();
|
||||
switch (c)
|
||||
{
|
||||
case blinkenGame::red:
|
||||
path = m_redPath;
|
||||
break;
|
||||
|
||||
case blinkenGame::green:
|
||||
path = m_greenPath;
|
||||
break;
|
||||
|
||||
case blinkenGame::blue:
|
||||
path = m_bluePath;
|
||||
break;
|
||||
|
||||
case blinkenGame::yellow:
|
||||
path = m_yellowPath;
|
||||
break;
|
||||
|
||||
case blinkenGame::all:
|
||||
path = m_allPath;
|
||||
break;
|
||||
|
||||
case blinkenGame::none:
|
||||
break;
|
||||
}
|
||||
delete m_playobj;
|
||||
m_playobj = m_factory -> createPlayObject(path, true);
|
||||
m_playobj -> play();
|
||||
#endif
|
||||
}
|
||||
|
||||
void artsPlayer::checkEnded()
|
||||
{
|
||||
#ifndef WITHOUT_ARTS
|
||||
if (blinkenSettings::playSounds())
|
||||
{
|
||||
if (m_playobj -> state() != Arts::posPlaying)
|
||||
{
|
||||
m_endChecker -> stop();
|
||||
emit ended();
|
||||
if (m_nextSounds.size() > 0) play();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_endChecker -> stop();
|
||||
emit ended();
|
||||
}
|
||||
#else
|
||||
m_endChecker -> stop();
|
||||
emit ended();
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "artsplayer.moc"
|
@ -0,0 +1,66 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef ARTSPLAYER_H
|
||||
#define ARTSPLAYER_H
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef WITHOUT_ARTS
|
||||
class KArtsDispatcher;
|
||||
class KArtsServer;
|
||||
|
||||
namespace KDE
|
||||
{
|
||||
class PlayObjectFactory;
|
||||
class PlayObject;
|
||||
}
|
||||
#else
|
||||
#include <arts/kartsdispatcher.h>
|
||||
#include <arts/kartsserver.h>
|
||||
#include <arts/kplayobject.h>
|
||||
#include <arts/kplayobjectfactory.h>
|
||||
#endif
|
||||
|
||||
#include <qvaluelist.h>
|
||||
|
||||
#include "blinkengame.h"
|
||||
|
||||
class QTimer;
|
||||
|
||||
class artsPlayer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
artsPlayer();
|
||||
~artsPlayer();
|
||||
|
||||
void play(blinkenGame::color c, bool stopCurrent = false);
|
||||
|
||||
signals:
|
||||
void ended();
|
||||
|
||||
private slots:
|
||||
void play();
|
||||
void checkEnded();
|
||||
|
||||
private:
|
||||
QValueList<blinkenGame::color> m_nextSounds;
|
||||
|
||||
QString m_greenPath, m_redPath, m_bluePath, m_yellowPath, m_allPath;
|
||||
|
||||
QTimer *m_endChecker;
|
||||
|
||||
KArtsDispatcher *m_dispatcher;
|
||||
KArtsServer *m_server;
|
||||
KDE::PlayObjectFactory *m_factory;
|
||||
KDE::PlayObject *m_playobj;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,855 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qcursor.h>
|
||||
#include <qpainter.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qtimer.h>
|
||||
|
||||
#include <kaction.h>
|
||||
#include <kapplication.h>
|
||||
#include <kconfig.h>
|
||||
#include <khelpmenu.h>
|
||||
#include <kinputdialog.h>
|
||||
#include <klocale.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <kpopupmenu.h>
|
||||
#include <kstandarddirs.h>
|
||||
|
||||
#include "blinken.h"
|
||||
#include "button.h"
|
||||
#include "counter.h"
|
||||
#include "fontutils.h"
|
||||
#include "number.h"
|
||||
#include "highscoredialog.h"
|
||||
#include "settings.h"
|
||||
|
||||
blinken::blinken() : QWidget(0, 0, WStaticContents | WNoAutoErase), m_overHighscore(false), m_overQuit(false), m_overCentralText(false), m_overMenu(false), m_overAboutKDE(false), m_overAboutBlinken(false), m_overManual(false), m_overCentralLetters(false), m_overCounter(false), m_overFont(false), m_overSound(false), m_showPreferences(false), m_updateButtonHighlighting(false), m_highlighted(blinkenGame::none)
|
||||
{
|
||||
m_back = new QPixmap(locate("appdata", "images/blinken.png"));
|
||||
|
||||
m_buttons[0] = new button(blinkenGame::blue);
|
||||
m_buttons[1] = new button(blinkenGame::yellow);
|
||||
m_buttons[2] = new button(blinkenGame::red);
|
||||
m_buttons[3] = new button(blinkenGame::green);
|
||||
|
||||
m_highscore = new QPixmap(locate("appdata", "images/highscore.png"));
|
||||
m_highscoreHover = new QPixmap(locate("appdata", "images/highscore_hover.png"));
|
||||
m_quit = new QPixmap(locate("appdata", "images/quit.png"));
|
||||
m_quitHover = new QPixmap(locate("appdata", "images/quit_hover.png"));
|
||||
m_menu = new QPixmap(locate("appdata", "images/menu.png"));
|
||||
m_menuHover = new QPixmap(locate("appdata", "images/menu_hover.png"));
|
||||
m_mark = new QPixmap(locate("appdata", "images/mark.png"));
|
||||
m_highscoreRect = QRect(10, 10, 72, 72);
|
||||
m_quitRect = QRect(562, 10, 72, 73);
|
||||
m_menuRect = QRect(562, 443, 72, 72);
|
||||
m_aboutKDERect = QRect(452, 461, 54, 54);
|
||||
m_aboutBlinkenRect = QRect(506, 461, 56, 54);
|
||||
m_manualRect = QRect(578, 389, 54, 54);
|
||||
m_centralLettersRect = QRect(192, 194, 254, 54);
|
||||
m_counterRect = QRect(268, 110, 102, 52);
|
||||
|
||||
m_fillColor = QColor(40, 40, 40);
|
||||
m_fontColor = QColor(126, 126, 126);
|
||||
m_fontHighlightColor = QColor(230, 230, 230);
|
||||
m_countDownColor = QColor(55, 55, 55);
|
||||
|
||||
setMouseTracking(true);
|
||||
setFixedSize(644, 525);
|
||||
show();
|
||||
|
||||
m_unhighlighter = new QTimer(this);
|
||||
connect(m_unhighlighter, SIGNAL(timeout()), this, SLOT(unhighlight()));
|
||||
|
||||
connect(&m_game, SIGNAL(gameEnded()), this, SLOT(checkHS()));
|
||||
connect(&m_game, SIGNAL(phaseChanged()), this, SLOT(update()));
|
||||
connect(&m_game, SIGNAL(highlight(blinkenGame::color, bool)), this, SLOT(highlight(blinkenGame::color, bool)));
|
||||
|
||||
m_helpMenu = new KHelpMenu(this, kapp->aboutData());
|
||||
|
||||
for (int i = 0; i < 3; i++) m_overLevels[i] = false;
|
||||
|
||||
QString aux = i18n("If the Steve font that is used by bliken by default to show status messages does not support any of the characters of your language, please translate that message to 1 and KDE standard font will be used to show the texts, if not translate it to 0", "0");
|
||||
|
||||
m_alwaysUseNonCoolFont = aux == "1";
|
||||
}
|
||||
|
||||
blinken::~blinken()
|
||||
{
|
||||
delete m_back;
|
||||
for (int i = 0; i < 4; i++) delete m_buttons[i];
|
||||
delete m_highscore;
|
||||
delete m_highscoreHover;
|
||||
delete m_quit;
|
||||
delete m_quitHover;
|
||||
delete m_menu;
|
||||
delete m_menuHover;
|
||||
delete m_mark;
|
||||
delete m_helpMenu;
|
||||
}
|
||||
|
||||
void blinken::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPixmap buf(width(), height());
|
||||
QPainter p(&buf);
|
||||
|
||||
p.drawPixmap(0, 0, *m_back);
|
||||
|
||||
drawMenuQuit(p);
|
||||
QFont f1, f = p.font();
|
||||
f1 = f;
|
||||
f.setBold(true);
|
||||
p.setFont(f);
|
||||
switch (m_game.phase())
|
||||
{
|
||||
case blinkenGame::starting:
|
||||
drawText(p, i18n("Start"), QPoint(318, 316), true, 10, 5, &m_centralTextRect, m_overCentralText, false);
|
||||
break;
|
||||
|
||||
case blinkenGame::choosingLevel:
|
||||
drawLevel(p);
|
||||
break;
|
||||
|
||||
case blinkenGame::waiting3:
|
||||
case blinkenGame::waiting2:
|
||||
case blinkenGame::waiting1:
|
||||
case blinkenGame::learningTheSequence:
|
||||
case blinkenGame::typingTheSequence:
|
||||
drawText(p, i18n("Restart"), QPoint(318, 316), true, 10, 5, &m_centralTextRect, m_overCentralText, false);
|
||||
break;
|
||||
}
|
||||
p.setFont(f1);
|
||||
|
||||
if (m_showPreferences)
|
||||
{
|
||||
// draw the current keys
|
||||
drawText(p, m_buttons[0]->shortcut(), QPoint(115, 285), true, 20, 5, 0, m_buttons[0]->selected(), false);
|
||||
drawText(p, m_buttons[1]->shortcut(), QPoint(115, 155), true, 20, 5, 0, m_buttons[1]->selected(), false);
|
||||
drawText(p, m_buttons[2]->shortcut(), QPoint(520, 155), true, 20, 5, 0, m_buttons[2]->selected(), false);
|
||||
drawText(p, m_buttons[3]->shortcut(), QPoint(520, 285), true, 20, 5, 0, m_buttons[3]->selected(), false);
|
||||
|
||||
const QPen &oPen = p.pen();
|
||||
const QBrush &oBrush = p.brush();
|
||||
const QFont &oFont = p.font();
|
||||
|
||||
// draw the internal square plus a bit of ellipse on the sides and the
|
||||
// two delimiter lines
|
||||
p.setPen(NoPen);
|
||||
p.setBrush(m_fillColor);
|
||||
p.drawPie(169, 192, 4, 58, 1440, 2880);
|
||||
p.drawPie(465, 192, 4, 58, -1440, 2880);
|
||||
p.setPen(QPen(Qt::black, 3));
|
||||
p.fillRect(171, 192, 296, 58, m_fillColor);
|
||||
p.drawLine(169, 192, 469, 192);
|
||||
p.drawLine(169, 250, 469, 250);
|
||||
|
||||
// draw the two squares of the options
|
||||
p.setPen(QPen(m_fontColor, 2, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin));
|
||||
|
||||
m_soundRect = QRect(181, 209, 25, 25);
|
||||
m_fontRect = QRect(432, 209, 25, 25);
|
||||
#ifndef WITHOUT_ARTS
|
||||
p.drawRect(m_soundRect);
|
||||
if (blinkenSettings::playSounds())
|
||||
{
|
||||
p.drawLine(186, 214, 199, 227);
|
||||
p.drawLine(186, 227, 199, 214);
|
||||
}
|
||||
#endif
|
||||
if (!m_alwaysUseNonCoolFont)
|
||||
{
|
||||
p.drawRect(m_fontRect);
|
||||
if (blinkenSettings::customFont())
|
||||
{
|
||||
p.drawLine(437, 214, 450, 227);
|
||||
p.drawLine(437, 227, 450, 214);
|
||||
}
|
||||
}
|
||||
|
||||
// draw the options' text
|
||||
QFont f1 = QFont();
|
||||
p.setFont(f1);
|
||||
int size, sizeAux;
|
||||
QRect area;
|
||||
QString sounds = i18n("Sounds");
|
||||
QString font = i18n("Font");
|
||||
size = fontUtils::fontSize(p, sounds, 95, 20);
|
||||
sizeAux = fontUtils::fontSize(p, font, 95, 20);
|
||||
if (sizeAux > size) size = sizeAux;
|
||||
f1.setPointSize(size);
|
||||
#ifndef WITHOUT_ARTS
|
||||
area = p.boundingRect(QRect(), Qt::AlignAuto, sounds);
|
||||
area.moveBy(212, 221 - (area.height() / 2));
|
||||
p.drawText(area, Qt::AlignCenter, sounds);
|
||||
m_soundRect = m_soundRect.unite(area);
|
||||
#endif
|
||||
if (!m_alwaysUseNonCoolFont)
|
||||
{
|
||||
area = p.boundingRect(QRect(), Qt::AlignAuto, font);
|
||||
area.moveBy(426 - area.width(), 221 - (area.height() / 2));
|
||||
p.drawText(area, Qt::AlignCenter, font);
|
||||
m_fontRect = m_fontRect.unite(area);
|
||||
}
|
||||
|
||||
p.setFont(oFont);
|
||||
p.setPen(oPen);
|
||||
p.setBrush(oBrush);
|
||||
}
|
||||
|
||||
drawScoreAndCounter(p);
|
||||
|
||||
if (m_highlighted & blinkenGame::blue) p.drawPixmap(14, 225, *m_buttons[0] -> pixmap());
|
||||
if (m_highlighted & blinkenGame::yellow) p.drawPixmap(14, 16, *m_buttons[1] -> pixmap());
|
||||
if (m_highlighted & blinkenGame::red) p.drawPixmap(322, 16, *m_buttons[2] -> pixmap());
|
||||
if (m_highlighted & blinkenGame::green) p.drawPixmap(322, 225, *m_buttons[3] -> pixmap());
|
||||
|
||||
drawStatusText(p);
|
||||
|
||||
bitBlt(this, 0, 0, &buf);
|
||||
|
||||
if (m_updateButtonHighlighting) updateButtonHighlighting(mapFromGlobal(QCursor::pos()));
|
||||
}
|
||||
|
||||
void blinken::keyPressEvent(QKeyEvent *e)
|
||||
{
|
||||
if (e -> isAutoRepeat()) return;
|
||||
|
||||
if (m_showPreferences)
|
||||
{
|
||||
int i = 0;
|
||||
while (i < 4 && !m_buttons[i] -> selected()) i++;
|
||||
|
||||
if (i < 4)
|
||||
{
|
||||
if (e -> key() == Qt::Key_Escape)
|
||||
{
|
||||
m_buttons[i] -> setSelected(false);
|
||||
update();
|
||||
}
|
||||
else
|
||||
{
|
||||
KShortcut ks(e -> key());
|
||||
if (!ks.toString().isEmpty())
|
||||
{
|
||||
bool different = true;
|
||||
int j = 0;
|
||||
while (different && j < 4)
|
||||
{
|
||||
different = (ks.toString() != m_buttons[j] -> shortcut());
|
||||
j++;
|
||||
}
|
||||
|
||||
if (different)
|
||||
{
|
||||
m_buttons[i] -> setShortcut(ks);
|
||||
update();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e -> key() == m_buttons[0] -> key()) pressedBlue();
|
||||
else if (e -> key() == m_buttons[1] -> key()) pressedYellow();
|
||||
else if (e -> key() == m_buttons[2] -> key()) pressedRed();
|
||||
else if (e -> key() == m_buttons[3] -> key()) pressedGreen();
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::keyReleaseEvent(QKeyEvent *e)
|
||||
{
|
||||
if (e -> isAutoRepeat()) return;
|
||||
|
||||
if (e -> state() == Qt::ControlButton && e -> stateAfter() != Qt::ControlButton && (m_game.phase() == blinkenGame::starting || m_game.phase() == blinkenGame::choosingLevel))
|
||||
{
|
||||
m_showPreferences = !m_showPreferences;
|
||||
for (int i = 0; i < 4; i++) m_buttons[i] -> setSelected(false);
|
||||
updateButtonHighlighting(mapFromGlobal(QCursor::pos()));
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::mouseMoveEvent(QMouseEvent *e)
|
||||
{
|
||||
updateButtonHighlighting(e->pos());
|
||||
}
|
||||
|
||||
void blinken::mousePressEvent(QMouseEvent *e)
|
||||
{
|
||||
if (m_overHighscore || m_overCounter)
|
||||
{
|
||||
highScoreDialog *hsd = new highScoreDialog(this);
|
||||
hsd->showLevel(1);
|
||||
m_updateButtonHighlighting = true;
|
||||
}
|
||||
else if (m_showPreferences && m_fontRect.contains(e -> pos()) && !m_alwaysUseNonCoolFont)
|
||||
{
|
||||
blinkenSettings::setCustomFont(!blinkenSettings::customFont());
|
||||
blinkenSettings::writeConfig();
|
||||
update();
|
||||
}
|
||||
else if (m_showPreferences && m_soundRect.contains(e -> pos()))
|
||||
{
|
||||
blinkenSettings::setPlaySounds(!blinkenSettings::playSounds());
|
||||
blinkenSettings::writeConfig();
|
||||
update();
|
||||
}
|
||||
else if (m_overQuit) kapp->quit();
|
||||
else if (m_overAboutBlinken || m_overCentralLetters) m_helpMenu -> aboutApplication();
|
||||
else if (m_overAboutKDE) m_helpMenu -> aboutKDE();
|
||||
else if (m_overManual) m_helpMenu -> appHelpActivated();
|
||||
else if (m_game.phase() != blinkenGame::choosingLevel && m_overCentralText)
|
||||
{
|
||||
highlight(blinkenGame::none, true);
|
||||
m_overCentralText = false;
|
||||
for(int i = 0; i < 3; i++) m_overLevels[i] = false;
|
||||
m_game.setPhase(blinkenGame::choosingLevel);
|
||||
m_updateButtonHighlighting = true;
|
||||
}
|
||||
else if (m_game.phase() == blinkenGame::choosingLevel)
|
||||
{
|
||||
int level = 0;
|
||||
if (m_levelsRect[1].contains(e -> pos())) level = 1;
|
||||
else if (m_levelsRect[0].contains(e -> pos())) level = 2;
|
||||
else if (m_levelsRect[2].contains(e -> pos())) level = 3;
|
||||
if (level)
|
||||
{
|
||||
for(int i = 0; i < 3; i++) m_overLevels[i] = false;
|
||||
m_game.start(level);
|
||||
if (m_showPreferences) m_showPreferences = false;
|
||||
m_updateButtonHighlighting = true;
|
||||
}
|
||||
}
|
||||
|
||||
QPoint p = e->pos();
|
||||
p -= QPoint(319, 221);
|
||||
if (insideGreen(p))
|
||||
{
|
||||
if (m_showPreferences) selectButton(3);
|
||||
else pressedGreen();
|
||||
}
|
||||
else if (insideBlue(p))
|
||||
{
|
||||
if (m_showPreferences) selectButton(0);
|
||||
else pressedBlue();
|
||||
}
|
||||
else if (insideYellow(p))
|
||||
{
|
||||
if (m_showPreferences) selectButton(1);
|
||||
else pressedYellow();
|
||||
}
|
||||
else if (insideRed(p))
|
||||
{
|
||||
if (m_showPreferences) selectButton(2);
|
||||
else pressedRed();
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::checkHS()
|
||||
{
|
||||
highScoreDialog *hsd = new highScoreDialog(this);
|
||||
if (hsd->scoreGoodEnough(m_game.level(), m_game.score()))
|
||||
{
|
||||
bool ok;
|
||||
QString name = KInputDialog::getText(i18n("Enter Your Name"), i18n("Name:"), m_lastName, &ok);
|
||||
if (!name.isNull() && ok)
|
||||
{
|
||||
m_lastName = name;
|
||||
hsd->addScore(m_game.level(), m_game.score(), name);
|
||||
}
|
||||
hsd->showLevel(m_game.level());
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::highlight(blinkenGame::color c, bool unhighlight)
|
||||
{
|
||||
m_highlighted = c;
|
||||
update();
|
||||
if (unhighlight) m_unhighlighter -> start(250);
|
||||
else if (c == blinkenGame::none)
|
||||
{
|
||||
m_unhighlighter -> stop();
|
||||
updateCursor(mapFromGlobal(QCursor::pos()));
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::unhighlight()
|
||||
{
|
||||
highlight(blinkenGame::none, false);
|
||||
}
|
||||
|
||||
void blinken::pressedYellow()
|
||||
{
|
||||
if (m_game.canType())
|
||||
{
|
||||
highlight(blinkenGame::yellow, true);
|
||||
m_game.clicked(blinkenGame::yellow);
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::pressedRed()
|
||||
{
|
||||
if (m_game.canType())
|
||||
{
|
||||
highlight(blinkenGame::red, true);
|
||||
m_game.clicked(blinkenGame::red);
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::pressedGreen()
|
||||
{
|
||||
if (m_game.canType())
|
||||
{
|
||||
highlight(blinkenGame::green, true);
|
||||
m_game.clicked(blinkenGame::green);
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::pressedBlue()
|
||||
{
|
||||
if (m_game.canType())
|
||||
{
|
||||
highlight(blinkenGame::blue, true);
|
||||
m_game.clicked(blinkenGame::blue);
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::selectButton(int button)
|
||||
{
|
||||
int i = 0;
|
||||
bool selected = false;
|
||||
while (i < 4 && !selected)
|
||||
{
|
||||
selected = m_buttons[i] -> selected();
|
||||
if (!selected) i++;
|
||||
}
|
||||
|
||||
if (selected)
|
||||
{
|
||||
if (i == button)
|
||||
{
|
||||
m_buttons[button] -> setSelected(false);
|
||||
update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_buttons[button] -> setSelected(true);
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
bool blinken::insideGreen(const QPoint &p) const
|
||||
{
|
||||
return insideButtonsArea(p) && p.x() > 6 && p.y() > 6;
|
||||
}
|
||||
|
||||
bool blinken::insideBlue(const QPoint &p) const
|
||||
{
|
||||
return insideButtonsArea(p) && p.x() < -6 && p.y() > 6;
|
||||
}
|
||||
|
||||
bool blinken::insideYellow(const QPoint &p) const
|
||||
{
|
||||
return insideButtonsArea(p) && p.x() < -6 && p.y() < -6;
|
||||
}
|
||||
|
||||
bool blinken::insideRed(const QPoint &p) const
|
||||
{
|
||||
return insideButtonsArea(p) && p.x() > 6 && p.y() < -6;
|
||||
}
|
||||
|
||||
bool blinken::insideButtonsArea(const QPoint &p) const
|
||||
{
|
||||
double x, y, x2, y2;
|
||||
x = (double)p.x();
|
||||
y = (double)p.y();
|
||||
x2 = x * x;
|
||||
y2 = y * y;
|
||||
if (x2 + y2 > 162.5 * 162.5)
|
||||
{
|
||||
// Outside the circle
|
||||
double x3, y3;
|
||||
x3 = x2 / (301 * 301);
|
||||
y3 = y2 / (201 * 201);
|
||||
if (x3 + y3 < 1) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void blinken::drawMenuQuit(QPainter &p)
|
||||
{
|
||||
if (!m_overHighscore) p.drawPixmap(10, 10, *m_highscore);
|
||||
else p.drawPixmap(10, 10, *m_highscoreHover);
|
||||
|
||||
if (!m_overQuit) p.drawPixmap(562, 10, *m_quit);
|
||||
else p.drawPixmap(562, 10, *m_quitHover);
|
||||
|
||||
if (!m_overMenu) p.drawPixmap(562, 443, *m_menu);
|
||||
else p.drawPixmap(454, 389, *m_menuHover);
|
||||
|
||||
if (m_overAboutKDE) p.drawPixmap(462, 433, *m_mark);
|
||||
else if (m_overAboutBlinken) p.drawPixmap(516, 433, *m_mark);
|
||||
else if (m_overManual)
|
||||
{
|
||||
p.translate(550, 430);
|
||||
p.rotate(-90.0);
|
||||
p.drawPixmap(0, 0, *m_mark);
|
||||
p.rotate(90.0);
|
||||
p.translate(-550, -430);
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::drawScoreAndCounter(QPainter &p)
|
||||
{
|
||||
QColor c1, c2, c3;
|
||||
p.translate(268, 110);
|
||||
|
||||
switch (m_game.phase())
|
||||
{
|
||||
case blinkenGame::waiting3:
|
||||
c1 = red;
|
||||
c2 = red;
|
||||
c3 = red;
|
||||
break;
|
||||
|
||||
case blinkenGame::waiting2:
|
||||
c1 = m_countDownColor;
|
||||
c2 = red;
|
||||
c3 = red;
|
||||
break;
|
||||
|
||||
case blinkenGame::waiting1:
|
||||
c1 = m_countDownColor;
|
||||
c2 = c1;
|
||||
c3 = red;
|
||||
break;
|
||||
|
||||
default:
|
||||
c1 = m_countDownColor;
|
||||
c2 = c1;
|
||||
c3 = c1;
|
||||
break;
|
||||
}
|
||||
|
||||
counter::paint(p, m_game.phase() != blinkenGame::starting, m_game.score(), true, c1, c2, c3);
|
||||
|
||||
p.translate(-268, -110);
|
||||
}
|
||||
|
||||
void blinken::drawStatusText(QPainter &p)
|
||||
{
|
||||
p.translate(25, 505);
|
||||
p.rotate(-3.29);
|
||||
p.setPen(blue);
|
||||
|
||||
QString restartText = i18n("Restart the game");
|
||||
QString text;
|
||||
if (m_overQuit) text = i18n("Quit blinKen");
|
||||
else if (m_overHighscore || m_overCounter) text = i18n("View Highscore Table");
|
||||
else if (m_overAboutBlinken || m_overCentralLetters) text = m_helpMenu -> menu() -> text(KHelpMenu::menuAboutApp).remove("&");
|
||||
else if (m_overAboutKDE) text = m_helpMenu -> menu() -> text(KHelpMenu::menuAboutKDE).remove("&");
|
||||
else if (m_overManual) text = m_helpMenu -> menu() -> text(KHelpMenu::menuHelpContents).remove("&");
|
||||
else if (m_overLevels[0]) text = i18n("2nd Level");
|
||||
else if (m_overLevels[1]) text = i18n("1st Level");
|
||||
else if (m_overLevels[2]) text = i18n("Random Level");
|
||||
else if (m_buttons[0]->selected() || m_buttons[1]->selected() || m_buttons[2]->selected() || m_buttons[3]->selected()) text = i18n("Press the key for this button");
|
||||
else if (m_showPreferences) text = i18n("Click any button to change its key");
|
||||
else
|
||||
{
|
||||
switch (m_game.phase())
|
||||
{
|
||||
case blinkenGame::starting:
|
||||
text = i18n("Press Start to begin!");
|
||||
break;
|
||||
|
||||
case blinkenGame::choosingLevel:
|
||||
text = i18n("Set the Difficulty Level...");
|
||||
break;
|
||||
|
||||
case blinkenGame::waiting3:
|
||||
if (m_overCentralText) text = restartText;
|
||||
else text = i18n("Next sequence in 3...");
|
||||
break;
|
||||
|
||||
case blinkenGame::waiting2:
|
||||
if (m_overCentralText) text = restartText;
|
||||
else if (m_game.level() == 1) text = i18n("Next sequence in 3, 2...");
|
||||
else text = i18n("Next sequence in 2...");
|
||||
break;
|
||||
|
||||
case blinkenGame::waiting1:
|
||||
if (m_overCentralText) text = restartText;
|
||||
else if (m_game.level() == 1) text = i18n("Next sequence in 3, 2, 1...");
|
||||
else text = i18n("Next sequence in 2, 1...");
|
||||
break;
|
||||
|
||||
case blinkenGame::learningTheSequence:
|
||||
if (m_overCentralText) text = restartText;
|
||||
else text = i18n("Remember this sequence...");
|
||||
break;
|
||||
|
||||
case blinkenGame::typingTheSequence:
|
||||
if (m_overCentralText) text = restartText;
|
||||
else text = i18n("Repeat the sequence!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QFont f;
|
||||
if (blinkenSettings::customFont() && !m_alwaysUseNonCoolFont) f = QFont("Steve");
|
||||
p.setFont(f);
|
||||
f.setPointSize(fontUtils::fontSize(p, text, 380, 30));
|
||||
p.setFont(f);
|
||||
p.drawText(0, 0, text);
|
||||
}
|
||||
|
||||
void blinken::drawLevel(QPainter &p)
|
||||
{
|
||||
QString n[3];
|
||||
n[0] = i18n("2");
|
||||
n[1] = i18n("1");
|
||||
n[2] = i18n("?");
|
||||
|
||||
drawText(p, i18n("Level"), QPoint(322, 281), false, 0, 0, 0, false, true);
|
||||
|
||||
QPoint cp;
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (i == 0) cp = QPoint(319, 315);
|
||||
else if (i == 1) cp = QPoint(m_levelsRect[0].left() - m_levelsRect[0].width(), 315);
|
||||
else if (i == 2) cp = QPoint(m_levelsRect[0].right() + m_levelsRect[0].width(), 315);
|
||||
drawText(p, n[i], cp, true, 20, 5, &(m_levelsRect[i]), m_overLevels[i], true);
|
||||
}
|
||||
}
|
||||
|
||||
void blinken::drawText(QPainter &p, const QString &text, const QPoint ¢er, bool withMargin, int xMargin, int yMargin, QRect *rect, bool highlight, bool bold)
|
||||
{
|
||||
QRect r;
|
||||
QFont oldFont, f = p.font();
|
||||
oldFont = f;
|
||||
f.setPointSize(fontUtils::fontSize(p, text, 190, 30));
|
||||
if (bold) f.setBold(true);
|
||||
p.setFont(f);
|
||||
|
||||
r = p.boundingRect(QRect(), Qt::AlignAuto, text);
|
||||
r = QRect(0, 0, r.width() + xMargin, r.height() + yMargin);
|
||||
r.moveBy(center.x() - r.width() / 2, center.y() - r.height() / 2);
|
||||
|
||||
if (withMargin)
|
||||
{
|
||||
p.fillRect(r, m_fillColor);
|
||||
p.setPen(QPen(black, 3));
|
||||
p.drawRoundRect(r.left(), r.top(), r.width(), r.height(), 15, 15);
|
||||
}
|
||||
|
||||
if (!highlight) p.setPen(m_fontColor);
|
||||
else p.setPen(m_fontHighlightColor);
|
||||
p.drawText(r, Qt::AlignCenter, text);
|
||||
|
||||
if (rect) *rect = r;
|
||||
p.setFont(oldFont);
|
||||
}
|
||||
|
||||
|
||||
void blinken::updateButtonHighlighting(const QPoint &p)
|
||||
{
|
||||
bool haveToUpdate;
|
||||
m_updateButtonHighlighting = false;
|
||||
haveToUpdate = false;
|
||||
|
||||
if (m_highscoreRect.contains(p))
|
||||
{
|
||||
if (!m_overHighscore)
|
||||
{
|
||||
m_overHighscore = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_overHighscore)
|
||||
{
|
||||
m_overHighscore = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
|
||||
if (m_menuRect.contains(p))
|
||||
{
|
||||
if (!m_overMenu)
|
||||
{
|
||||
m_overMenu = true;
|
||||
m_overAboutKDE = false;
|
||||
m_overAboutBlinken = false;
|
||||
m_overManual = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
else if (m_overAboutKDE || m_overAboutBlinken || m_overManual)
|
||||
{
|
||||
m_overAboutKDE = false;
|
||||
m_overAboutBlinken = false;
|
||||
m_overManual = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_overMenu)
|
||||
{
|
||||
if (m_aboutKDERect.contains(p))
|
||||
{
|
||||
if (!m_overAboutKDE)
|
||||
{
|
||||
m_overAboutKDE = true;
|
||||
m_overAboutBlinken = false;
|
||||
m_overManual = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_aboutBlinkenRect.contains(p))
|
||||
{
|
||||
if (!m_overAboutBlinken)
|
||||
{
|
||||
m_overAboutKDE = false;
|
||||
m_overAboutBlinken = true;
|
||||
m_overManual = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_manualRect.contains(p))
|
||||
{
|
||||
if (!m_overManual)
|
||||
{
|
||||
m_overAboutKDE = false;
|
||||
m_overAboutBlinken = false;
|
||||
m_overManual = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_overMenu = false;
|
||||
m_overAboutKDE = false;
|
||||
m_overAboutBlinken = false;
|
||||
m_overManual = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_showPreferences && m_centralLettersRect.contains(p))
|
||||
{
|
||||
m_overCentralLetters = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
else if (m_overCentralLetters)
|
||||
{
|
||||
m_overCentralLetters = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
|
||||
if (m_showPreferences && m_soundRect.contains(p))
|
||||
{
|
||||
m_overSound = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
else if (m_overSound)
|
||||
{
|
||||
m_overSound = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
|
||||
if (m_showPreferences && m_fontRect.contains(p) && !m_alwaysUseNonCoolFont)
|
||||
{
|
||||
m_overFont = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
else if (m_overFont)
|
||||
{
|
||||
m_overFont = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
|
||||
if (m_counterRect.contains(p))
|
||||
{
|
||||
m_overCounter = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
else if (m_overCounter)
|
||||
{
|
||||
m_overCounter = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
|
||||
if (m_quitRect.contains(p))
|
||||
{
|
||||
if (!m_overQuit)
|
||||
{
|
||||
m_overQuit = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_overQuit)
|
||||
{
|
||||
m_overQuit = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
|
||||
switch (m_game.phase())
|
||||
{
|
||||
case blinkenGame::starting:
|
||||
case blinkenGame::waiting3:
|
||||
case blinkenGame::waiting2:
|
||||
case blinkenGame::waiting1:
|
||||
case blinkenGame::learningTheSequence:
|
||||
case blinkenGame::typingTheSequence:
|
||||
if (m_centralTextRect.contains(p))
|
||||
{
|
||||
if (!m_overCentralText)
|
||||
{
|
||||
m_overCentralText = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_overCentralText)
|
||||
{
|
||||
m_overCentralText = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case blinkenGame::choosingLevel:
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (m_levelsRect[i].contains(p))
|
||||
{
|
||||
if (!m_overLevels[i])
|
||||
{
|
||||
m_overLevels[i] = true;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (m_overLevels[i])
|
||||
{
|
||||
m_overLevels[i] = false;
|
||||
haveToUpdate = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
updateCursor(p);
|
||||
if (haveToUpdate) update();
|
||||
}
|
||||
|
||||
void blinken::updateCursor(const QPoint &p)
|
||||
{
|
||||
QPoint p2 = p - QPoint(319, 221);
|
||||
|
||||
if (m_overHighscore || m_overQuit || m_overCentralText || m_overMenu || m_overAboutKDE || m_overAboutBlinken || m_overManual || m_overLevels[0] || m_overLevels[1] || m_overLevels[2] || m_overCentralLetters || m_overCounter || (m_game.canType() && (insideGreen(p2) || insideRed(p2) || insideBlue(p2) || insideYellow(p2))) || m_overFont || m_overSound) setCursor(PointingHandCursor);
|
||||
else setCursor(ArrowCursor);
|
||||
}
|
||||
|
||||
#include "blinken.moc"
|
@ -0,0 +1,92 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef BLINKEN_H
|
||||
#define BLINKEN_H
|
||||
|
||||
#include <qwidget.h>
|
||||
|
||||
#include "blinkengame.h"
|
||||
|
||||
class QTimer;
|
||||
|
||||
class KAction;
|
||||
class KHelpMenu;
|
||||
|
||||
class button;
|
||||
class highScoreDialog;
|
||||
|
||||
class blinken : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
blinken();
|
||||
~blinken();
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *);
|
||||
void mouseMoveEvent(QMouseEvent *e);
|
||||
void mousePressEvent(QMouseEvent *e);
|
||||
void keyPressEvent(QKeyEvent *e);
|
||||
void keyReleaseEvent(QKeyEvent *e);
|
||||
|
||||
private slots:
|
||||
void checkHS();
|
||||
void highlight(blinkenGame::color c, bool unhighlight);
|
||||
void unhighlight();
|
||||
|
||||
void pressedYellow();
|
||||
void pressedRed();
|
||||
void pressedGreen();
|
||||
void pressedBlue();
|
||||
|
||||
private:
|
||||
void selectButton(int button);
|
||||
bool insideGreen(const QPoint &p) const;
|
||||
bool insideYellow(const QPoint &p) const;
|
||||
bool insideRed(const QPoint &p) const;
|
||||
bool insideBlue(const QPoint &p) const;
|
||||
bool insideButtonsArea(const QPoint &p) const;
|
||||
void updateCursor(const QPoint &p);
|
||||
|
||||
void drawMenuQuit(QPainter &p);
|
||||
void drawScoreAndCounter(QPainter &p);
|
||||
void drawStatusText(QPainter &p);
|
||||
void drawLevel(QPainter &p);
|
||||
void drawText(QPainter &p, const QString &text, const QPoint ¢er, bool withMargin, int xMargin, int yMargin, QRect *rect, bool highlight, bool bold);
|
||||
void updateButtonHighlighting(const QPoint &p);
|
||||
|
||||
|
||||
button *m_buttons[4];
|
||||
QPixmap *m_back, *m_highscore, *m_highscoreHover, *m_quit, *m_quitHover, *m_menu, *m_menuHover, *m_mark;
|
||||
bool m_overHighscore, m_overQuit, m_overCentralText, m_overMenu, m_overAboutKDE, m_overAboutBlinken, m_overManual, m_overLevels[3], m_overCentralLetters, m_overCounter, m_overFont, m_overSound;
|
||||
// i obviously suck but m_levelsRect[0] is 2, m_levelsRect[1] is 1 and m_levelsRect[3] is ?
|
||||
QRect m_highscoreRect, m_quitRect, m_centralTextRect, m_menuRect, m_aboutKDERect, m_aboutBlinkenRect, m_manualRect, m_levelsRect[3], m_centralLettersRect, m_counterRect, m_soundRect, m_fontRect;
|
||||
QColor m_fillColor, m_fontColor, m_fontHighlightColor, m_countDownColor;
|
||||
|
||||
// Preferences setting handling
|
||||
bool m_showPreferences;
|
||||
|
||||
// if should update the highlighting after the next repaint
|
||||
bool m_updateButtonHighlighting;
|
||||
|
||||
// use always the non-cool font?
|
||||
bool m_alwaysUseNonCoolFont;
|
||||
|
||||
blinkenGame::color m_highlighted;
|
||||
QTimer *m_unhighlighter;
|
||||
|
||||
QString m_lastName;
|
||||
|
||||
blinkenGame m_game;
|
||||
|
||||
KHelpMenu *m_helpMenu;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,18 @@
|
||||
<?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="blinkenrc"/>
|
||||
<group name="general">
|
||||
<entry name="playSounds" type="Bool">
|
||||
<label>Play sounds</label>
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="customFont" type="Bool">
|
||||
<label>Use custom font for status text</label>
|
||||
<default>true</default>
|
||||
</entry>
|
||||
</group>
|
||||
</kcfg>
|
||||
|
@ -0,0 +1,181 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <stdlib.h> // for RAND_MAX
|
||||
|
||||
#include <qtimer.h>
|
||||
|
||||
#include <kapplication.h>
|
||||
|
||||
#include "artsplayer.h"
|
||||
#include "blinkengame.h"
|
||||
|
||||
blinkenGame::blinkenGame() : m_phase(starting)
|
||||
{
|
||||
m_artsPlayer = new artsPlayer;
|
||||
m_waitTimer = new QTimer(this);
|
||||
connect(m_waitTimer, SIGNAL(timeout()), this, SLOT(waiting()));
|
||||
}
|
||||
|
||||
blinkenGame::~blinkenGame()
|
||||
{
|
||||
delete m_artsPlayer;
|
||||
}
|
||||
|
||||
int blinkenGame::level() const
|
||||
{
|
||||
return m_level;
|
||||
}
|
||||
|
||||
bool blinkenGame::canType() const
|
||||
{
|
||||
return m_phase == typingTheSequence || m_phase == starting;
|
||||
}
|
||||
|
||||
blinkenGame::gamePhase blinkenGame::phase() const
|
||||
{
|
||||
return m_phase;
|
||||
}
|
||||
|
||||
int blinkenGame::score() const
|
||||
{
|
||||
if (m_phase == starting || m_phase == choosingLevel) return 0;
|
||||
return m_sequenceLength - 1;
|
||||
}
|
||||
|
||||
void blinkenGame::clicked(color c)
|
||||
{
|
||||
if (m_phase == starting)
|
||||
{
|
||||
m_artsPlayer -> play(c);
|
||||
return;
|
||||
}
|
||||
if (c == *m_nextColor)
|
||||
{
|
||||
++m_nextColor;
|
||||
m_artsPlayer -> play(c);
|
||||
|
||||
if (m_nextColor == m_sequence.end())
|
||||
{
|
||||
m_sequenceLength++;
|
||||
nextRound();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_artsPlayer -> play(all, true);
|
||||
emit highlight(all, true);
|
||||
emit gameEnded();
|
||||
setPhase(choosingLevel);
|
||||
}
|
||||
}
|
||||
|
||||
void blinkenGame::setPhase(gamePhase p)
|
||||
{
|
||||
if (p != waiting3 && p != waiting2 && p != waiting1) m_waitTimer -> stop();
|
||||
m_phase = p;
|
||||
emit phaseChanged();
|
||||
}
|
||||
|
||||
void blinkenGame::start(int level)
|
||||
{
|
||||
m_level = level;
|
||||
m_sequenceLength = 1;
|
||||
|
||||
nextRound();
|
||||
|
||||
m_sequence.clear();
|
||||
}
|
||||
|
||||
void blinkenGame::nextSound()
|
||||
{
|
||||
if (m_nextColor != m_sequence.end())
|
||||
{
|
||||
color c;
|
||||
c = *m_nextColor;
|
||||
++m_nextColor;
|
||||
m_artsPlayer -> play(c);
|
||||
emit highlight(c, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
setPhase(typingTheSequence);
|
||||
m_nextColor = m_sequence.begin();
|
||||
emit highlight(none, false);
|
||||
m_artsPlayer->disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
void blinkenGame::soundEnded()
|
||||
{
|
||||
QTimer::singleShot(100, this, SLOT(nextSound()));
|
||||
QTimer::singleShot(50, this, SLOT(unhighlight()));
|
||||
}
|
||||
|
||||
void blinkenGame::unhighlight()
|
||||
{
|
||||
emit highlight(none, false);
|
||||
}
|
||||
|
||||
void blinkenGame::waiting()
|
||||
{
|
||||
if (m_phase == waiting1)
|
||||
{
|
||||
setPhase(blinkenGame::learningTheSequence);
|
||||
if (m_level == 3)
|
||||
{
|
||||
m_sequence.clear();
|
||||
for (int i = 0; i < m_sequenceLength; i++) m_sequence.append(generateColor());
|
||||
}
|
||||
else m_sequence.append(generateColor());
|
||||
|
||||
connect(m_artsPlayer, SIGNAL(ended()), this, SLOT(soundEnded()));
|
||||
m_nextColor = m_sequence.begin();
|
||||
soundEnded();
|
||||
}
|
||||
else if (m_phase == waiting3) setPhase(waiting2);
|
||||
else /* m_phase == waiting2 */ setPhase(waiting1);
|
||||
}
|
||||
|
||||
void blinkenGame::nextRound()
|
||||
{
|
||||
if (m_level == 1) setPhase(waiting3);
|
||||
else setPhase(waiting2);
|
||||
m_waitTimer -> start(1000);
|
||||
}
|
||||
|
||||
blinkenGame::color blinkenGame::generateColor()
|
||||
{
|
||||
int r;
|
||||
// make the compiler happy :-D
|
||||
color c = none;
|
||||
|
||||
r = 1 + (int)(4.0 * kapp -> random() / (RAND_MAX + 1.0));
|
||||
switch(r)
|
||||
{
|
||||
case 1:
|
||||
c = red;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
c = green;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
c = blue;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
c = yellow;
|
||||
break;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
#include "blinkengame.moc"
|
@ -0,0 +1,72 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef BLINKENGAME_H
|
||||
#define BLINKENGAME_H
|
||||
|
||||
#include <qobject.h>
|
||||
#include <qvaluelist.h>
|
||||
|
||||
class QTimer;
|
||||
|
||||
class artsPlayer;
|
||||
|
||||
class blinkenGame : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
blinkenGame();
|
||||
~blinkenGame();
|
||||
|
||||
enum gamePhase { starting, choosingLevel, waiting3, waiting2, waiting1, learningTheSequence, typingTheSequence };
|
||||
enum color
|
||||
{
|
||||
none = 0,
|
||||
red = 1,
|
||||
green = 2,
|
||||
blue = 4,
|
||||
yellow = 8,
|
||||
all = 15};
|
||||
|
||||
int level() const;
|
||||
bool canType() const;
|
||||
gamePhase phase() const;
|
||||
int score() const;
|
||||
|
||||
void clicked(color c);
|
||||
void setPhase(gamePhase p);
|
||||
void start(int level);
|
||||
|
||||
signals:
|
||||
void gameEnded();
|
||||
void phaseChanged();
|
||||
void highlight(blinkenGame::color c, bool unhighlight);
|
||||
|
||||
private slots:
|
||||
void nextSound();
|
||||
void soundEnded();
|
||||
void unhighlight();
|
||||
void waiting();
|
||||
|
||||
private:
|
||||
void nextRound();
|
||||
color generateColor();
|
||||
|
||||
gamePhase m_phase;
|
||||
int m_level;
|
||||
int m_sequenceLength;
|
||||
|
||||
QTimer *m_waitTimer;
|
||||
|
||||
artsPlayer *m_artsPlayer;
|
||||
QValueList<color> m_sequence;
|
||||
QValueList<color>::const_iterator m_nextColor;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,119 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <kaction.h>
|
||||
#include <kapplication.h>
|
||||
#include <kconfig.h>
|
||||
#include <kstandarddirs.h>
|
||||
#include <kdebug.h>
|
||||
|
||||
#include "button.h"
|
||||
|
||||
button::button(blinkenGame::color c) : m_selected(false), m_color(c)
|
||||
{
|
||||
KConfig *kc = kapp->config();
|
||||
kc->setGroup("General");
|
||||
QString cs = getColorString();
|
||||
QString pixmap = QString("images/%1h.png").arg(cs);
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case blinkenGame::blue:
|
||||
m_key = kc->readNumEntry(cs, Qt::Key_3);
|
||||
break;
|
||||
|
||||
case blinkenGame::yellow:
|
||||
m_key = kc->readNumEntry(cs, Qt::Key_1);
|
||||
break;
|
||||
|
||||
case blinkenGame::red:
|
||||
m_key = kc->readNumEntry(cs, Qt::Key_2);
|
||||
break;
|
||||
|
||||
case blinkenGame::green:
|
||||
m_key = kc->readNumEntry(cs, Qt::Key_4);
|
||||
break;
|
||||
|
||||
default:
|
||||
// never happens
|
||||
break;
|
||||
}
|
||||
|
||||
m_highlighted = new QPixmap(locate("appdata", pixmap));
|
||||
}
|
||||
|
||||
button::~button()
|
||||
{
|
||||
delete m_highlighted;
|
||||
}
|
||||
|
||||
void button::setShortcut(int key)
|
||||
{
|
||||
m_key = key;
|
||||
m_selected = false;
|
||||
|
||||
KConfig *kc = kapp->config();
|
||||
kc->setGroup("General");
|
||||
kc->writeEntry(getColorString(), key);
|
||||
kc->sync();
|
||||
}
|
||||
|
||||
QString button::shortcut() const
|
||||
{
|
||||
return KShortcut(m_key).toString();
|
||||
}
|
||||
|
||||
int button::key() const
|
||||
{
|
||||
return m_key;
|
||||
}
|
||||
|
||||
void button::setSelected(bool b)
|
||||
{
|
||||
m_selected = b;
|
||||
}
|
||||
|
||||
bool button::selected() const
|
||||
{
|
||||
return m_selected;
|
||||
}
|
||||
|
||||
QPixmap *button::pixmap() const
|
||||
{
|
||||
return m_highlighted;
|
||||
}
|
||||
|
||||
QString button::getColorString() const
|
||||
{
|
||||
switch (m_color)
|
||||
{
|
||||
case blinkenGame::blue:
|
||||
return "blue";
|
||||
break;
|
||||
|
||||
case blinkenGame::yellow:
|
||||
return "yellow";
|
||||
break;
|
||||
|
||||
case blinkenGame::red:
|
||||
return "red";
|
||||
break;
|
||||
|
||||
case blinkenGame::green:
|
||||
return "green";
|
||||
break;
|
||||
|
||||
default:
|
||||
// never happens
|
||||
break;
|
||||
}
|
||||
|
||||
// never happens
|
||||
return QString::null;
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef BUTTON_H
|
||||
#define BUTTON_H
|
||||
|
||||
#include <qobject.h>
|
||||
|
||||
#include "blinkengame.h"
|
||||
|
||||
class KAction;
|
||||
class KActionCollection;
|
||||
class KShortcut;
|
||||
|
||||
class button
|
||||
{
|
||||
public:
|
||||
button(blinkenGame::color c);
|
||||
~button();
|
||||
|
||||
void setShortcut(int key);
|
||||
QString shortcut() const;
|
||||
int key() const;
|
||||
void setSelected(bool b);
|
||||
bool selected() const;
|
||||
QPixmap *pixmap() const;
|
||||
|
||||
private:
|
||||
QString getColorString() const;
|
||||
|
||||
QPixmap *m_highlighted;
|
||||
bool m_selected;
|
||||
int m_key;
|
||||
blinkenGame::color m_color;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,57 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qcolor.h>
|
||||
#include <qpainter.h>
|
||||
|
||||
#include "counter.h"
|
||||
#include "number.h"
|
||||
|
||||
void counter::paint(QPainter &p, bool drawScore, int score, bool drawTimer, const QColor &c1, const QColor &c2, const QColor &c3)
|
||||
{
|
||||
p.save();
|
||||
p.translate(45, 15);
|
||||
p.setPen(QPen(Qt::black, 3));
|
||||
p.setBrush(QColor(40, 40, 40));
|
||||
if (drawTimer)
|
||||
{
|
||||
p.fillRect(-44, -13, 98, 48, p.brush());
|
||||
p.drawRoundRect(-45, -15, 100, 50, 15, 15);
|
||||
}
|
||||
else
|
||||
{
|
||||
p.fillRect(-44, -13, 70, 48, p.brush());
|
||||
p.drawRoundRect(-45, -15, 73, 50, 15, 15);
|
||||
}
|
||||
|
||||
if (drawScore)
|
||||
{
|
||||
number n(score);
|
||||
n.paint(p, 2);
|
||||
}
|
||||
|
||||
if (drawTimer)
|
||||
{
|
||||
p.fillRect(35, -6, 11, 9, c1);
|
||||
p.fillRect(35, 6, 11, 9, c2);
|
||||
p.fillRect(35, 18, 11, 9, c3);
|
||||
}
|
||||
p.restore();
|
||||
}
|
||||
|
||||
int counter::width(bool drawTimer)
|
||||
{
|
||||
if (drawTimer) return 100;
|
||||
else return 73;
|
||||
}
|
||||
|
||||
int counter::height()
|
||||
{
|
||||
return 50;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef COUNTER_H
|
||||
#define COUNTER_H
|
||||
|
||||
class QPainter;
|
||||
|
||||
class counter
|
||||
{
|
||||
public:
|
||||
static void paint(QPainter &p, bool drawScore, int score, bool drawTimer, const QColor &c1, const QColor &c2, const QColor &c3);
|
||||
static int width(bool drawTimer);
|
||||
static int height();
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,27 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qfont.h>
|
||||
#include <qfontinfo.h>
|
||||
|
||||
#include <kio/netaccess.h>
|
||||
|
||||
#include "fontchecker.h"
|
||||
|
||||
bool fontChecker::checkInstalled(const QFont &font, const QString &fontPath)
|
||||
{
|
||||
QFontInfo fi(font);
|
||||
// Works with Steve may need some tweaking to work with other fonts
|
||||
if (!fi.exactMatch())
|
||||
{
|
||||
bool success = KIO::NetAccess::copy(fontPath, "fonts:/Personal/", 0);
|
||||
return !success;
|
||||
}
|
||||
return true;
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef FONTCHECKER_H
|
||||
#define FONTCHECKER_H
|
||||
|
||||
class QFont;
|
||||
|
||||
class fontChecker
|
||||
{
|
||||
public:
|
||||
static bool checkInstalled(const QFont &font, const QString &fontPath);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,33 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qpainter.h>
|
||||
|
||||
#include "fontutils.h"
|
||||
|
||||
int fontUtils::fontSize(QPainter &p, const QString &s1, int w, int h)
|
||||
{
|
||||
int size;
|
||||
QRect aux1;
|
||||
bool done = false;
|
||||
|
||||
size = 28;
|
||||
|
||||
while (!done)
|
||||
{
|
||||
QFont f = p.font();
|
||||
f.setPointSize(size);
|
||||
p.setFont(f);
|
||||
aux1 = p.boundingRect(QRect(), Qt::AlignAuto, s1);
|
||||
if (aux1.width() > w || aux1.height() > h) size = QMIN(w * size / aux1.width(), h * size / aux1.height());
|
||||
else done = true;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef FONTUTILS_H
|
||||
#define FONTUTILS_H
|
||||
|
||||
namespace fontUtils
|
||||
{
|
||||
int fontSize(QPainter &p, const QString &s1, int w, int h);
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,198 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qpainter.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qtabbar.h>
|
||||
#include <qtabwidget.h>
|
||||
|
||||
#include <kapplication.h>
|
||||
#include <kconfig.h>
|
||||
#include <klocale.h>
|
||||
|
||||
#include "highscoredialog.h"
|
||||
#include "counter.h"
|
||||
#include "fontutils.h"
|
||||
#include "settings.h"
|
||||
|
||||
static const int margin = 15;
|
||||
static const int smallMargin = 5;
|
||||
static const int namesFontSize = 25;
|
||||
|
||||
/* scoresWidget */
|
||||
|
||||
class scoresWidget : public QWidget
|
||||
{
|
||||
public:
|
||||
scoresWidget(QWidget *parent, const QValueList< QPair<int, QString> > &scores);
|
||||
QSize calcSize();
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *);
|
||||
|
||||
private:
|
||||
const QValueList< QPair<int, QString> > &m_scores;
|
||||
};
|
||||
|
||||
scoresWidget::scoresWidget(QWidget *parent, const QValueList< QPair<int, QString> > &scores) : QWidget(parent, 0, WStaticContents | WNoAutoErase), m_scores(scores)
|
||||
{
|
||||
}
|
||||
|
||||
void scoresWidget::paintEvent(QPaintEvent *)
|
||||
{
|
||||
int w = width();
|
||||
int h = height();
|
||||
QFont f;
|
||||
QPixmap buf(w, h);
|
||||
QPainter p(&buf);
|
||||
QRect r;
|
||||
QColor bg = paletteBackgroundColor();
|
||||
|
||||
// bg color
|
||||
p.fillRect(0, 0, w, h, bg);
|
||||
|
||||
p.setPen(black);
|
||||
|
||||
if (blinkenSettings::customFont()) f = QFont("Steve");
|
||||
p.setFont(f);
|
||||
f.setPointSize(fontUtils::fontSize(p, "A", 1000, namesFontSize));
|
||||
p.setFont(f);
|
||||
|
||||
p.translate(margin, margin);
|
||||
|
||||
QValueList< QPair<int, QString> >::const_iterator it;
|
||||
for (it = m_scores.begin(); it != m_scores.end(); ++it)
|
||||
{
|
||||
counter::paint(p, !(*it).second.isEmpty(), (*it).first, false, QColor(), QColor(), QColor());
|
||||
p.setPen(black);
|
||||
p.drawText(counter::width(false) + 2 * smallMargin, 30, (*it).second);
|
||||
p.translate(0, counter::height() + smallMargin);
|
||||
}
|
||||
|
||||
bitBlt(this, 0, 0, &buf);
|
||||
}
|
||||
|
||||
QSize scoresWidget::calcSize()
|
||||
{
|
||||
int mw, mh, lt;
|
||||
QRect r;
|
||||
QPainter p(this);
|
||||
QFont f;
|
||||
|
||||
if (blinkenSettings::customFont()) f = QFont("Steve");
|
||||
p.setFont(f);
|
||||
f.setPointSize(fontUtils::fontSize(p, "A", 1000, namesFontSize));
|
||||
p.setFont(f);
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
lt = 0;
|
||||
QValueList< QPair<int, QString> >::const_iterator it;
|
||||
for (it = m_scores.begin(); it != m_scores.end(); ++it)
|
||||
{
|
||||
r = p.boundingRect(QRect(), Qt::AlignAuto, (*it).second);
|
||||
lt = QMAX(lt, r.width());
|
||||
}
|
||||
}
|
||||
|
||||
mw = margin + counter::width(false) + 2 * smallMargin + lt + margin;
|
||||
mh = margin * 2 + counter::height() * 5 + smallMargin * 4;
|
||||
|
||||
QSize size(mw, mh);
|
||||
setMinimumSize(size);
|
||||
resize(size);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
/* myTabWidget */
|
||||
|
||||
class myTabWidget : public QTabWidget
|
||||
{
|
||||
public:
|
||||
myTabWidget(QWidget *parent) : QTabWidget(parent) {}
|
||||
|
||||
QSize tabBarSizeHint() const
|
||||
{
|
||||
return tabBar() -> sizeHint();
|
||||
}
|
||||
};
|
||||
|
||||
/* highScoreDialog */
|
||||
|
||||
highScoreDialog::highScoreDialog(QWidget *parent) : KDialogBase(parent, 0, true, i18n("Highscores"), KDialogBase::Close)
|
||||
{
|
||||
m_tw = new myTabWidget(this);
|
||||
setMainWidget(m_tw);
|
||||
|
||||
KConfig *cfg = kapp -> config();
|
||||
for (int i = 1; i <= 3; i++)
|
||||
{
|
||||
cfg -> setGroup(QString("Level%1").arg(i));
|
||||
for (int j = 1; j <= 5; j++)
|
||||
{
|
||||
m_scores[i-1].append(qMakePair(cfg->readNumEntry(QString("Score%1").arg(j)), cfg->readEntry(QString("Name%1").arg(j))));
|
||||
}
|
||||
}
|
||||
|
||||
m_tw -> addTab(new scoresWidget(m_tw, m_scores[0]), i18n("Level 1"));
|
||||
m_tw -> addTab(new scoresWidget(m_tw, m_scores[1]), i18n("Level 2"));
|
||||
m_tw -> addTab(new scoresWidget(m_tw, m_scores[2]), i18n("Level ?"));
|
||||
}
|
||||
|
||||
bool highScoreDialog::scoreGoodEnough(int level, int score)
|
||||
{
|
||||
level--;
|
||||
QValueList< QPair<int, QString> >::iterator it, itEnd;
|
||||
it = m_scores[level].begin();
|
||||
itEnd = m_scores[level].end();
|
||||
while (it != itEnd && (*it).first >= score) it++;
|
||||
|
||||
return (it != itEnd);
|
||||
}
|
||||
|
||||
void highScoreDialog::addScore(int level, int score, const QString &name)
|
||||
{
|
||||
level--;
|
||||
QValueList< QPair<int, QString> >::iterator it, itEnd;
|
||||
it = m_scores[level].begin();
|
||||
itEnd = m_scores[level].end();
|
||||
while (it != itEnd && (*it).first >= score) it++;
|
||||
|
||||
if (it != itEnd)
|
||||
{
|
||||
m_scores[level].insert(it, qMakePair(score, name));
|
||||
m_scores[level].remove(--m_scores[level].end());
|
||||
|
||||
KConfig *cfg = kapp -> config();
|
||||
cfg -> setGroup(QString("Level%1").arg(level + 1));
|
||||
int j;
|
||||
for (it = m_scores[level].begin(), j = 1; it != m_scores[level].end(); ++it, j++)
|
||||
{
|
||||
cfg->writeEntry(QString("Score%1").arg(j), (*it).first);
|
||||
cfg->writeEntry(QString("Name%1").arg(j), (*it).second);
|
||||
}
|
||||
cfg -> sync();
|
||||
}
|
||||
}
|
||||
|
||||
void highScoreDialog::showLevel(int level)
|
||||
{
|
||||
QSize max, aux;
|
||||
m_tw -> setCurrentPage(level -1);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
aux = static_cast<scoresWidget*>(m_tw -> page(i)) -> calcSize();
|
||||
max = max.expandedTo(aux);
|
||||
}
|
||||
if (max.width() < m_tw -> tabBarSizeHint().width() + 5) m_tw -> setMinimumSize(m_tw -> tabBarSizeHint().width() + 5, max.height() + m_tw -> tabBarSizeHint().height() + 5);
|
||||
|
||||
exec();
|
||||
delete this;
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef HIGHSCOREDIALOG_H
|
||||
#define HIGHSCOREDIALOG_H
|
||||
|
||||
#include <qpair.h>
|
||||
#include <qvaluelist.h>
|
||||
|
||||
#include <kdialogbase.h>
|
||||
|
||||
class myTabWidget;
|
||||
|
||||
class highScoreDialog : private KDialogBase
|
||||
{
|
||||
public:
|
||||
highScoreDialog(QWidget *parent);
|
||||
|
||||
bool scoreGoodEnough(int level, int score);
|
||||
void addScore(int level, int score, const QString &name);
|
||||
void showLevel(int level);
|
||||
|
||||
QValueList< QPair<int, QString> > m_scores[3];
|
||||
myTabWidget *m_tw;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,41 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <kaboutdata.h>
|
||||
#include <kapplication.h>
|
||||
#include <kcmdlineargs.h>
|
||||
#include <kprocess.h>
|
||||
#include <kstandarddirs.h>
|
||||
|
||||
#include "fontchecker.h"
|
||||
#include "blinken.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
KAboutData about("blinken", I18N_NOOP("blinKen"), "0.1.1", I18N_NOOP("A memory enhancement game"), KAboutData::License_GPL, "© 2005 Albert Astals Cid\n© 2005 Danny Allen");
|
||||
about.addAuthor("Albert Astals Cid", I18N_NOOP("Coding"), "tsdgeos@terra.es");
|
||||
about.addAuthor("Danny Allen", I18N_NOOP("Design, Graphics and Sounds"), "danny@dannyallen.co.uk");
|
||||
about.addCredit("Steve Jordi", I18N_NOOP("GPL'ed his 'Steve' font so that we could use it"), "steve@sjordi.com");
|
||||
KCmdLineArgs::init(argc, argv, &about);
|
||||
KApplication app;
|
||||
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
|
||||
|
||||
QFont f("Steve", 12, QFont::Normal, true);
|
||||
if (!fontChecker::checkInstalled(f, locate("appdata", "fonts/steve.ttf")))
|
||||
{
|
||||
KProcess *proc = new KProcess;
|
||||
for (int i = 0; i < argc; i++) *proc << argv[i];
|
||||
proc->start();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.setTopWidget(new blinken());
|
||||
return app.exec();
|
||||
}
|
||||
}
|
@ -0,0 +1,196 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qbrush.h>
|
||||
#include <qcolor.h>
|
||||
#include <qpainter.h>
|
||||
|
||||
#include "number.h"
|
||||
|
||||
const int number::m_number0[20] = {1, 0, 0, 2,
|
||||
0, 5, 5, 0,
|
||||
0, 5, 5, 0,
|
||||
0, 5, 5, 0,
|
||||
4, 0, 0, 3};
|
||||
|
||||
const int number::m_number1[20] = {5, 1, 0, 5,
|
||||
5, 5, 0, 5,
|
||||
5, 5, 0, 5,
|
||||
5, 5, 0, 5,
|
||||
5, 5, 0, 5};
|
||||
|
||||
const int number::m_number2[20] = {0, 0, 0, 2,
|
||||
5, 5, 5, 0,
|
||||
1, 0, 0, 3,
|
||||
0, 5, 5, 5,
|
||||
0, 0, 0, 0};
|
||||
|
||||
const int number::m_number3[20] = {0, 0, 0, 2,
|
||||
5, 5, 5, 0,
|
||||
5, 0, 0, 3,
|
||||
5, 5, 5, 2,
|
||||
0, 0, 0, 3};
|
||||
|
||||
|
||||
const int number::m_number4[20] = {0, 5, 5, 0,
|
||||
0, 5, 5, 0,
|
||||
0, 5, 5, 0,
|
||||
4, 0, 0, 0,
|
||||
5, 5, 5, 0};
|
||||
|
||||
const int number::m_number5[20] = {0, 0, 0, 0,
|
||||
0, 5, 5, 5,
|
||||
4, 0, 0, 2,
|
||||
5, 5, 5, 0,
|
||||
0, 0, 0, 3};
|
||||
|
||||
const int number::m_number6[20] = {1, 0, 0, 0,
|
||||
0, 5, 5, 5,
|
||||
0, 0, 0, 2,
|
||||
0, 5, 5, 0,
|
||||
4, 0, 0, 3};
|
||||
|
||||
const int number::m_number7[20] = {0, 0, 0, 2,
|
||||
5, 5, 5, 0,
|
||||
5, 5, 5, 0,
|
||||
5, 5, 5, 0,
|
||||
5, 5, 5, 0};
|
||||
|
||||
const int number::m_number8[20] = {1, 0, 0, 2,
|
||||
0, 5, 5, 0,
|
||||
4, 0, 0, 3,
|
||||
1, 5, 5, 2,
|
||||
4, 0, 0, 3};
|
||||
|
||||
const int number::m_number9[20] = {1, 0, 0, 2,
|
||||
0, 5, 5, 0,
|
||||
4, 0, 0, 3,
|
||||
5, 5, 5, 0,
|
||||
0, 0, 0, 3};
|
||||
|
||||
number::number(int n)
|
||||
{
|
||||
m_number = n;
|
||||
}
|
||||
|
||||
void number::paint(QPainter &p, int digits) const
|
||||
{
|
||||
int nDigits, digit, number;
|
||||
nDigits = 0;
|
||||
number = m_number;
|
||||
|
||||
while(nDigits < digits || number != 0)
|
||||
{
|
||||
digit = number % 10;
|
||||
number /= 10;
|
||||
paintDigit(p, digit);
|
||||
nDigits++;
|
||||
p.translate(-30, 0);
|
||||
}
|
||||
p.translate(30 * nDigits, 0);
|
||||
}
|
||||
|
||||
void number::paintDigit(QPainter &p, int number) const
|
||||
{
|
||||
// make gcc happy
|
||||
const int *n = m_number0;
|
||||
int shape;
|
||||
|
||||
switch (number)
|
||||
{
|
||||
case 1:
|
||||
n = m_number1;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
n = m_number2;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
n = m_number3;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
n = m_number4;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
n = m_number5;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
n = m_number6;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
n = m_number7;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
n = m_number8;
|
||||
break;
|
||||
|
||||
case 9:
|
||||
n = m_number9;
|
||||
break;
|
||||
}
|
||||
|
||||
p.setBrush(Qt::red);
|
||||
p.setPen(Qt::red);
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
shape = n[j + i * 4];
|
||||
if (shape == 0)
|
||||
{
|
||||
p.fillRect(7 * (j-1), 7 * (i-1), 6, 6, Qt::red);
|
||||
}
|
||||
else if (shape != 5)
|
||||
{
|
||||
if (shape == 1) p.translate(7 * (j-1), 7 * (i-1));
|
||||
else if (shape == 2)
|
||||
{
|
||||
p.translate(7 * j - 2, 7 * (i-1));
|
||||
p.rotate(90);
|
||||
}
|
||||
else if (shape == 3)
|
||||
{
|
||||
p.translate(7 * j - 2, 7 * i - 2);
|
||||
p.rotate(180);
|
||||
}
|
||||
else if (shape == 4)
|
||||
{
|
||||
p.translate(7 * (j-1), 7 * i - 2);
|
||||
p.rotate(270);
|
||||
}
|
||||
|
||||
p.drawPie(0, 0, 11, 11, 90 * 16, 16 * 90);
|
||||
|
||||
if (shape == 1) p.translate(-7 * (j-1), -7 * (i-1));
|
||||
else if (shape == 2)
|
||||
{
|
||||
p.rotate(-90);
|
||||
p.translate(-(7 * j - 2), -7 * (i-1));
|
||||
|
||||
}
|
||||
else if (shape == 3)
|
||||
{
|
||||
p.rotate(-180);
|
||||
p.translate(-(7 * j - 2), -(7 * i - 2));
|
||||
}
|
||||
else if (shape == 4)
|
||||
{
|
||||
p.rotate(-270);
|
||||
p.translate(- (7 * (j-1)), -(7 * i - 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Albert Astals Cid <tsdgeos@terra.es> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef NUMBER_H
|
||||
#define NUMBER_H
|
||||
|
||||
class QPainter;
|
||||
|
||||
class number
|
||||
{
|
||||
public:
|
||||
number(int n);
|
||||
|
||||
void paint(QPainter &p, int digits) const;
|
||||
|
||||
private:
|
||||
void paintDigit(QPainter &p, int n) const;
|
||||
|
||||
int m_number;
|
||||
|
||||
static const int m_number0[20];
|
||||
static const int m_number1[20];
|
||||
static const int m_number2[20];
|
||||
static const int m_number3[20];
|
||||
static const int m_number4[20];
|
||||
static const int m_number5[20];
|
||||
static const int m_number6[20];
|
||||
static const int m_number7[20];
|
||||
static const int m_number8[20];
|
||||
static const int m_number9[20];
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,4 @@
|
||||
File=blinken.kcfg
|
||||
ClassName=blinkenSettings
|
||||
Singleton=true
|
||||
Mutators=true
|
@ -0,0 +1,6 @@
|
||||
#MIN_CONFIG
|
||||
CXXFLAGS="$CXXFLAGS $KDE_DEFAULT_CXXFLAGS"
|
||||
AC_CHECK_SETENV
|
||||
AC_CHECK_UNSETENV
|
||||
|
||||
KDE_INIT_DOXYGEN([KDE Education API Reference], [Version $VERSION])
|
@ -0,0 +1,3 @@
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
SUBDIRS = $(AUTODIRS)
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 3.4 KiB |
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 885 B |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,361 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY blinken "<application>blinKen</application>">
|
||||
<!ENTITY kappname "&blinken;">
|
||||
<!ENTITY package "kdeedu">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"><!-- change language only here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &blinken; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Danny</firstname>
|
||||
<surname>Allen</surname>
|
||||
<affiliation>
|
||||
<address>&Danny.Allen.mail;</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
</authorgroup>
|
||||
|
||||
<copyright>
|
||||
<year>2005</year>
|
||||
<holder>&Danny.Allen;</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<date>2005-08-20</date>
|
||||
<releaseinfo>1.0</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
&blinken; brings a retro electronic memory game from the 1970's to &kde;.
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>kdeedu</keyword>
|
||||
<keyword>blinKen</keyword>
|
||||
<keyword>game</keyword>
|
||||
<keyword>child</keyword>
|
||||
<keyword>electronic</keyword>
|
||||
<keyword>retro</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>
|
||||
&blinken; is based on an electronic game released in 1978, which challenges players to remember sequences of increasing length. On the face of the device, there are 4 different color buttons, each one with their own distinctive sound. These buttons light up randomly, creating the sequence that the player must then recall. If the player is successful in remembering the sequence of lights in the correct order, they advance to the next stage, where an identical sequence with one extra step is presented. If they are incorrect, the game is lost, and the player must start again from the beginning.
|
||||
|
||||
The goal is to get a high score - each step in the sequence is worth one point, so correct entry of a sequence of 8 lights is worth 8 points on the high score table.
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="using-blinken">
|
||||
<title>Using &blinken;</title>
|
||||
|
||||
<para>
|
||||
Here is the screen that is presented on startup of &blinken;, showing the general interface to the application. Most of the screen is taken up by the <interface>device</interface>, with the <interface>4 colored buttons</interface>, with the device controls (<interface>score counter</interface>, <guibutton>Start</guibutton> button, &etc;) in the center of the screen. The current status of the application is displayed on the <interface>piece of paper</interface> under the device. In the corners of the application, there are 3 buttons:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Here is the screen that is presented on startup of &blinken;</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken1.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Here is the screen that is presented on startup of &blinken;</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
The <guiicon>Highscores</guiicon> button <action>opens a dialog that displays the <guilabel>Highscores table</guilabel></action> for each of the 3 difficulty levels (the <guilabel>Highscores</guilabel> table can also be accessed by <action>clicking on the <interface>score counter</interface>)</action>:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo><guiicon>Highscores</guiicon> button</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken_highscoresbutton.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase><guiicon>Highscores</guiicon> button</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
The <guiicon>Quit</guiicon> button <action>closes the application</action>:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo><guiicon>Quit</guiicon> button</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken_quitbutton.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase><guiicon>Quit</guiicon> button</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
The <guiicon>Help</guiicon> button is special, in that it <action>reveals 3 sub-buttons</action>. These buttons are shown when the <guiicon>Help</guiicon> button is <action>hovered over</action>, and provide access to the <guilabel>&blinken; handbook</guilabel> (this document), and the <guilabel>About &blinken;</guilabel> and <guilabel>About &kde;</guilabel> dialogs:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo><guiicon>Help</guiicon> button</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken_helpbutton.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase><guiicon>Help</guiicon> button</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
To become familiar with the workings of the game, you can interact with the <interface>colored buttons</interface> whilst on the main screen. The buttons will illuminate and produce a tone upon being pressed.
|
||||
</para>
|
||||
|
||||
<note><para>You need to have &arts; support in kdelibs to hear the sounds.</para></note>
|
||||
<sect1 id="starting-game">
|
||||
<title>Starting a Game</title>
|
||||
|
||||
<para>
|
||||
Once you are familiar with the workings of the application, a game can be started by pressing the <guibutton>Start</guibutton> button in the center of the screen. This <quote>powers on</quote> the device, as shown by the illuminated <interface>score counter</interface>. You can then <action>choose the difficulty level</action> that you want to attempt:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Select difficulty level</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken2.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Select difficulty level</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
There are 3 levels in &blinken;:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Level 1 is the easiest level, as it provides the longest time break between each sequence playback.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Level 2 is the intermediate level. It is identical to the previous level, but has a smaller time break between each sequence playback.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Level ? is the most difficult level of &blinken;. It takes the timings from Level 2, but each sequence is totally random, rather than following on from the previous sequence, as in the standard game type.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="enter-highscore">
|
||||
<title>Entering a New Highscore</title>
|
||||
|
||||
<para>
|
||||
If you are lucky enough to get a highscore, it will be entered into the <guilabel>Highscores</guilabel> table. A dialog will ask for a name to associate with your score in the table:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Highscore nickname prompt dialog</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken_nickprompt.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Highscore nickname prompt dialog</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Only 5 scores are kept for each level, so try not to be disappointed if you don't make it!
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="playing-tips">
|
||||
<title>Playing Tips</title>
|
||||
<para>
|
||||
&blinken; is the ultimate memory game, though you need not possess the ultimate memory to be successful. These tips will help you in your pursuit of the best score:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
If you have PC speakers, turn them on with the sound at a good level so that you can hear the tones alongside seeing the flashing lights.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Experiment with both the mouse and <link
|
||||
linkend="accessibility">keyboard</link> interaction methods, to see which one suites your memory best.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Try remembering the sequence as a list of colors.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Try remembering the sequence as positions on the screen.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="accessibility">
|
||||
<title>Accessibility Options</title>
|
||||
|
||||
<para>
|
||||
To allow &blinken; to be more easily enjoyed by certain users, there are several accessibility options built into &blinken;.
|
||||
</para>
|
||||
<para>
|
||||
To view and modify the accessibility options of &blinken;, press the <keycap>&Ctrl;</keycap> key (whilst a game is not in progress):
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&blinken; access keys</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="blinken_accesskeys.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&blinken; access keys</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
To return to the game screen, press the <keycap>&Ctrl;</keycap> key again.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Alongside use of the mouse, &blinken; also allows the user to operate the game using the keyboard.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The keys are <keycap>1</keycap>, <keycap>2</keycap>, <keycap>3</keycap>, <keycap>4</keycap> by default.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To change the mapping of any button, click it using the mouse. It will then be highlighted, waiting for input. Press the desired key on the keyboard to change the currently assigned key.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There are other options available in the middle of the window: <interface>sounds</interface> and <interface>font</interface>.
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
By unchecking the <interface>sounds</interface> checkbox, the &blinken; sound effects will be suppressed.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
By unchecking the <interface>font</interface> checkbox, a standard font will be used for status text instead of the default handwriting font.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="credits">
|
||||
<title>Credits and License</title>
|
||||
|
||||
<para>
|
||||
&blinken;
|
||||
</para>
|
||||
<para>
|
||||
Program copyright 2005 Albert Astals Cid <email>tsdgeos@terra.es</email> and &Danny.Allen; &Danny.Allen.mail;
|
||||
</para>
|
||||
<para>
|
||||
Contributors:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>"Steve" font: Steve Jordi
|
||||
<email>steve@sjordi.com</email>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
Documentation copyright 2005 &Danny.Allen; &Danny.Allen.mail;
|
||||
</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
&underFDL;
|
||||
&underGPL;
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<appendix id="installation">
|
||||
<title>Installation</title>
|
||||
|
||||
<sect1 id="getting-blinken">
|
||||
<title>How to obtain &blinken;</title>
|
||||
|
||||
&install.intro.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="compilation">
|
||||
<title>Compilation and installation</title>
|
||||
|
||||
&install.compile.documentation;
|
||||
|
||||
</sect1>
|
||||
</appendix>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
|
||||
// vim:ts=2:sw=2:tw=78:noet:noai
|
||||
-->
|
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 159 KiB |
After Width: | Height: | Size: 34 KiB |
@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<refentry lang="&language;">
|
||||
<refentryinfo>
|
||||
<author><personname><firstname>Ben</firstname><surname>Burton</surname></personname></author>
|
||||
<date>April 8, 2003</date>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle><command>kalzium</command></refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname><command>kalzium</command></refname>
|
||||
<refpurpose>A &kde; based chemistry teaching tool</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>kalzium</command>
|
||||
|
||||
<group><option>KDE Generic Options</option></group>
|
||||
<group><option>Qt Generic Options</option></group>
|
||||
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>&kalzium; is a program which shows you the Periodic System of
|
||||
the Elements (PSE). You can use &kalzium; to search for information
|
||||
about the elements or to learn facts about the PSE.</para>
|
||||
|
||||
<para>&kalzium; provides you with all kinds of information about the
|
||||
PSE. You can look up lots of information about the elements and also
|
||||
use visualisations to show them.</para>
|
||||
|
||||
<para>This package is part of the official KDE edutainment module. </para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
<para>More detailed user documentation is available from <ulink
|
||||
url="help:/kalzium">help:/kalzium</ulink> (either enter this
|
||||
<acronym>URL</acronym> into &konqueror;, or run
|
||||
<userinput><command>khelpcenter</command>
|
||||
<parameter>help:/kalzium</parameter></userinput>).</para>
|
||||
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Authors</title>
|
||||
|
||||
<para>&kalzium; was written by &Carsten.Niehaus;
|
||||
&Carsten.Niehaus.mail; and
|
||||
<personname><firstname>Tomisalve</firstname><surname>Gountchev</surname></personname>
|
||||
<email>tomi@idiom.com</email>.</para>
|
||||
|
||||
<para>This manual page was prepared by <personname><firstname>Ben</firstname><surname>Burton</surname></personname></para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 290 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 76 KiB |
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 20 KiB |
@ -0,0 +1,497 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY kanagram "<application>Kanagram</application>">
|
||||
<!ENTITY kappname "&kanagram;">
|
||||
<!ENTITY package "kdeedu">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"><!-- change language only here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &kanagram; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Danny</firstname>
|
||||
<surname>Allen</surname>
|
||||
<affiliation>
|
||||
<address>&Danny.Allen.mail;</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
</authorgroup>
|
||||
|
||||
<copyright>
|
||||
<year>2005</year>
|
||||
<holder>&Danny.Allen;</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<date>2005-09-04</date>
|
||||
<releaseinfo>1.0</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
&kanagram; brings fun anagram puzzles to &kde;.
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>kdeedu</keyword>
|
||||
<keyword>Kanagram</keyword>
|
||||
<keyword>game</keyword>
|
||||
<keyword>child</keyword>
|
||||
<keyword>anagram</keyword>
|
||||
<keyword>words</keyword>
|
||||
<keyword>jumble</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>
|
||||
&kanagram; is a game based on anagrams of words: the puzzle is solved when the letters of the scrambled word are put back in the correct order. There is no limit on either time taken, or the amount of attempts to solve the word. Included with &kanagram; are several vocabularies ready to play, with many more available from the Internet.
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="using-kanagram">
|
||||
<title>Using &kanagram;</title>
|
||||
|
||||
<para>
|
||||
Here is the screen that is presented on startup of &kanagram;, showing the main interface to the application. Much of the window is taken up by the <interface>blackboard</interface>, where the puzzles are written onto, with the <interface>filing cabinet</interface> on the right containing application controls:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Here is the screen that is presented on startup of &kanagram;</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="kanagram.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The <interface>Vocabulary Switcher</interface> allows the user to quickly <action>change the active vocabulary</action> by clicking on it: the &LMB; <action>advances to the next vocabulary</action>, with the &RMB; allowing you to <action>return to the previously-played vocabulary</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
In the center of the <interface>blackboard</interface> is the anagram puzzle to be solved.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
When the <quote><guibutton>Hint</guibutton></quote> button is clicked, a short sentence will appear, <action>describing the current word puzzle</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Reveal Word</guibutton></quote> button <action>solves the current word puzzle</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <interface>Entry Box</interface> allows you to <action>input your attempts</action> to solve the current word puzzle.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <interface>Enter</interface> button lets you <action>check if your answer is correct</action>. This function is also provided by the <keycap>Enter</keycap> key.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
This is the <guiicon>Next Word</guiicon> button, and allows you to <action>advance to the next anagram puzzle</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
This is the <guiicon>Configure</guiicon> button, which <action>opens the <guilabel>Configure</guilabel> &kanagram; dialog</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guiicon>Help</guiicon> button is special, in that it <action>reveals 3 sub-buttons</action>. These buttons are shown when the <guiicon>Help</guiicon> button is hovered over, and provide access to the <guilabel>&kanagram; handbook</guilabel> (this document), the <guilabel>About &kanagram;</guilabel> and the <guilabel>About &kde;</guilabel> dialogs:
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>The 3 different states of the <guiicon>Help</guiicon> button</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="helpstates.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guiicon>Quit</guiicon> button <action>closes the application</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<sect1 id="playing-game">
|
||||
<title>Playing a game</title>
|
||||
|
||||
<para>
|
||||
Now that you are familiar with the interface of &kanagram;, lets play a game!
|
||||
</para>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>
|
||||
Using the <interface>Vocabulary Switcher</interface>, <action>select the vocabulary theme</action> that you would like to attempt. A word from this vocabulary will then be presented in the middle of the <interface>blackboard</interface>. Now, try and guess what word the jumble of letters represents.
|
||||
<tip>
|
||||
<para>
|
||||
If you cannot guess what the word is, press the <quote><guibutton>Hint</guibutton></quote> button to get some friendly advice from your friend in the <interface>filing cabinet</interface>:
|
||||
</para>
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; hint</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="kanagram-hint.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; hint</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</tip>
|
||||
</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>
|
||||
Once you think you know the correct answer, type it into the <interface>Entry Box</interface> below the <interface>blackboard</interface>. Either press the <keycap>Enter</keycap> key, or click on the <interface>Enter</interface> button to the right of the <interface>Entry Box</interface> to check your answer: it will <action>change green on a correct answer</action>, and <action>red on an incorrect attempt</action>:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>answer highlighted</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="answer-highlight.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>answer highlighted</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>
|
||||
If you were correct, try and guess the next word! Alternatively, you can attempt one of the many other vocabularies bundled with &kanagram;.
|
||||
</para>
|
||||
</step>
|
||||
</procedure>
|
||||
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="configuring">
|
||||
<title>Configuring &kanagram;</title>
|
||||
|
||||
<para>
|
||||
The <guilabel>Configure</guilabel> dialog is opened by clicking on the <guiicon>Configure</guiicon> button:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; general settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="general-settings.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; general settings</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guilabel>Auto-hide hints after:</guilabel></quote> <interface>drop-down box</interface> allows you to specify how hints are presented to you. Here, you can set the hint box to disappear after a certain amount of seconds (⪚ 5 seconds), or you can leave it as default (<quote>Do not auto-hide hints</quote>).
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guilabel>Play Using:</guilabel></quote> <interface>drop-down box</interface> allows you to play &kanagram; using vocabularies of a different language. For this feature to work, you must have vocabularies of a separate language installed.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Get Chalk Font</guibutton></quote> button will be visible if you do not have the chalk-styled font installed on your system. Pressing this button will download the font from the Internet, which &kanagram; will then use after the application has been restarted.
|
||||
</para>
|
||||
<para>
|
||||
Once you have the chalk-styled font installed, the <quote><guilabel>Use standard fonts</guilabel></quote> <interface>checkbox</interface> becomes active. If checked, &kanagram; will display the <interface>blackboard</interface> text in a standard, rather than chalk-styled font. This should aid readability of the text:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; standard font</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="standard-fonts.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; standard font</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guilabel>Use sounds</guilabel></quote> <interface>checkbox</interface> allows you to either allow or suppress the &kanagram; sound effects.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
You need to have &arts; support in kdelibs to hear the sounds.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<sect1 id="vocabularies-config">
|
||||
<title>Vocabularies</title>
|
||||
|
||||
<para>
|
||||
The <guilabel>Vocabularies</guilabel> configuration page allows you to manage your installed vocabularies. Using this dialog, you can <action>edit</action> and <action>remove</action> downloaded vocabularies, as well as <action>create</action> your very own:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; vocabulary settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="vocab-settings.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; vocabulary settings</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Create New</guibutton></quote> button <action>opens the <link
|
||||
linkend="vocab-editor"><guilabel>Vocabulary Editor</guilabel></link> dialog</action> so that you can author your own vocabularies which you can then play.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Edit</guibutton></quote> button allows you to <action>make changes to vocabularies that you have either created or downloaded off the Internet</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Delete</guibutton></quote> button allows you to <action>delete vocabularies that you have created or downloaded</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
You can select which vocabulary you would like to apply these actions to by using the <interface>list of vocabularies</interface>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<sect2 id="vocab-editor">
|
||||
<title><guilabel>Vocabulary Editor</guilabel></title>
|
||||
|
||||
<para>
|
||||
The Vocabulary Editor allows you to create your own vocabularies, which &kanagram; can then test you with:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; <guilabel>Vocabulary Editor</guilabel></screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="vocab-editor.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; <guilabel>Vocabulary Editor</guilabel></phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guilabel>Vocabulary Name</guilabel> field lets you <action>name your vocabulary</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guilabel>Description</guilabel> field enables you to <action>expand on your vocabulary name</action>, providing your user with more details of the content of your vocabulary.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Try to keep both the name and description fields as short as possible. Effective vocabularies cover a narrow, focussed set of words for a single subject. Try to write at least 20 words for your vocabulary, so that it will not be quickly finished by the user.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Delete Word</guibutton></quote> button lets you <action>remove words from your vocabulary</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>New Word</guibutton></quote> button <action>creates a new word entry in your vocabulary</action>, ready for you to expand.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guilabel>Word</guilabel> field lets you <action>write word values into your vocabulary</action>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <guilabel>Hint</guilabel> field allows you to <action>write hints to accompany your words</action>.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Good hints clearly, yet subtly describe the word, whilst increasing the knowledge of the vocabulary subject for your user. Also ensure that your hints are fairly short (under 40 characters in length).
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Save</guibutton></quote> button <action>saves your vocabulary content</action>, and enables its use directly in &kanagram; (it will immediately become available within the application, selectable via. the <interface>Vocabulary Selector</interface>).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <quote><guibutton>Close</guibutton></quote> button <action>closes the <guilabel>Vocabulary Editor</guilabel> dialog</action> without saving the content of your vocabulary.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="newstuff-config">
|
||||
<title>New Stuff</title>
|
||||
|
||||
<para>
|
||||
The <guilabel>New Stuff</guilabel> configuration page allows you to obtain new vocabulary files from the Internet:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; new stuff settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="newstuff-settings.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; newstuff settings</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Click the <quote><guibutton>Download New Vocabularies</guibutton></quote> button to browse the available online content:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kanagram; new stuff dialog</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="newstuff-dialog.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kanagram; new stuff dialog</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
To install a vocabulary from the Internet, click on the vocabulary item in the list, then press the <quote><guibutton>Install</guibutton></quote> button to install to your system. The downloaded vocabulary will then be available to play immediately.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="credits">
|
||||
<title>Credits and License</title>
|
||||
|
||||
<para>
|
||||
&kanagram;
|
||||
</para>
|
||||
<para>
|
||||
Program copyright 2005 Joshua Keel <email>joshuakeel@gmail.com</email> and &Danny.Allen; &Danny.Allen.mail;
|
||||
</para>
|
||||
<para>
|
||||
Contributors:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Sound effects: Artemio
|
||||
<email>fillme</email>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
Documentation copyright 2005 &Danny.Allen; &Danny.Allen.mail;
|
||||
</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
&underFDL;
|
||||
&underGPL;
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<appendix id="installation">
|
||||
<title>Installation</title>
|
||||
|
||||
<sect1 id="getting-kanagram">
|
||||
<title>How to obtain &kanagram;</title>
|
||||
|
||||
&install.intro.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="compilation">
|
||||
<title>Compilation and installation</title>
|
||||
|
||||
&install.compile.documentation;
|
||||
|
||||
</sect1>
|
||||
</appendix>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
|
||||
// vim:ts=2:sw=2:tw=78:noet:noai
|
||||
-->
|
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 39 KiB |
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 28 KiB |
@ -0,0 +1,553 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY kbruch "<application>KBruch</application>">
|
||||
<!ENTITY kappname "&kbruch;">
|
||||
<!ENTITY package "kdeedu">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"><!-- change language only here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &kbruch; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Sebastian</firstname>
|
||||
<surname>Stein</surname>
|
||||
<affiliation>
|
||||
<address><email>seb.kde@hpfsc.de</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
|
||||
</authorgroup>
|
||||
|
||||
<copyright>
|
||||
<year>2001-2005</year>
|
||||
<holder>Sebastian Stein</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<date>2004-07-09</date>
|
||||
<releaseinfo>3.4</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>&kbruch; is a small program to practice calculating with fractions.
|
||||
Different exercises are provided for this purpose. The program checks user's
|
||||
input and gives feedback.
|
||||
</para>
|
||||
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>education</keyword>
|
||||
<keyword>fraction</keyword>
|
||||
<keyword>mathematics</keyword>
|
||||
<keyword>denominator</keyword>
|
||||
<keyword>kbruch</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>
|
||||
&kbruch; is a small program to practice calculating with fractions. Therefore
|
||||
4 different exercises are offered.
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
Fraction Task - in this exercise you have to solve a given fraction task.
|
||||
You have to enter numerator and denominator. This is the main exercise.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Comparison - in this exercise you have to compare the size of 2 given
|
||||
fractions.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Conversion - in this exercise you have to convert a given number into a
|
||||
fraction.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Factorization - in this exercise you have to factorize a given number into its prime factors.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
In all different exercises &kbruch; will generate a task and the user has to
|
||||
solve it. The program checks the input and gives a feedback about it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
&kbruch; counts how many tasks were solved at all and how many tasks were
|
||||
solved correctly. The statistics are shown to the user, but this part of the
|
||||
main window can be hidden. The user can reset the statistics at any point.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
&kbruch; is very compact and focuses on the core idea of a task generator. An
|
||||
online help system provides context-sensitive help for the different
|
||||
situations.
|
||||
</para>
|
||||
<para>
|
||||
&kbruch; is free and licensed under the &GNU; Public License.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="using-kbruch">
|
||||
<title>Using &kbruch;</title>
|
||||
|
||||
<sect1 id="overview">
|
||||
<title>Main screen</title>
|
||||
|
||||
<para>Here is a screenshot of &kbruch;'s main screen:</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kbruch; main screen, directly after the start</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="gui_main.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kbruch; main screen</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
All action takes place in this screen. This ensures that &kbruch; is
|
||||
easy to use even for young users! The main screen is separated into 5
|
||||
parts:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
the menubar with the 3 menus <guimenu>Task</guimenu>,
|
||||
<guimenu>Settings</guimenu> and <guimenu>Help</guimenu>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
the toolbar, where you can set the difficulty for the tasks given in the
|
||||
<guimenu>Fraction Task</guimenu> exercise
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
the exercise chooser, where you can switch between the different exercises
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
the task part, where you have to enter the result of the given task
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
the statistical part, where you can see how many tasks have been solved
|
||||
correctly or attempted
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
First you have to choose an exercise in the exercise chooser on the left side
|
||||
of the window. The task part will change according to the chosen task. The
|
||||
settings in the toolbar will be enabled, if you have chosen the exercise
|
||||
<guimenu>Fraction Task</guimenu>.
|
||||
</para>
|
||||
<para>
|
||||
You will find an icon to generate a new task in the toolbar as well. This
|
||||
action is also available in the menu
|
||||
<menuchoice><guimenu>Task</guimenu><guimenuitem>New
|
||||
Task</guimenuitem></menuchoice>. This action is always enabled. If you have not
|
||||
solved the currently given task, a new task is generated and the given task is
|
||||
counted as not correctly solved.
|
||||
</para>
|
||||
<para>
|
||||
You can hide the statistic part by dragging the vertical separator to the
|
||||
right.
|
||||
</para>
|
||||
<para>
|
||||
If you terminate &kbruch; the currently chosen exercise will be saved and
|
||||
restored on next startup.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="statistics">
|
||||
<title>Statistical Part</title>
|
||||
<para>
|
||||
In this part of the main screen you can see:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
how many tasks have been solved
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
how many tasks have been solved correctly
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
how many tasks have been solved incorrectly
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
You can reset the statistics by clicking on the <guimenu>Reset</guimenu> button
|
||||
under the figures.
|
||||
</para>
|
||||
<para>
|
||||
The statistics will be saved on &kbruch;'s termination and restored on next
|
||||
startup.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="settings">
|
||||
<title>Settings Window</title>
|
||||
<para>
|
||||
In this part of the main screen you can adjust some general settings for
|
||||
task display. To open this dialog use
|
||||
<menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure
|
||||
&kbruch;</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&kbruch; settings dialog</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settings.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kbruch; settings dialog</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
In the top part of the dialog you can choose a font for displaying. In the
|
||||
lower part you can choose colors for the different parts of a mathematical
|
||||
expression. You can set wether to show the mixed number notation in the result.
|
||||
This notation is not known everywhere and can be disabled therefore.
|
||||
</para>
|
||||
<para>
|
||||
The settings will be saved on &kbruch;'s termination and restored on the next
|
||||
startup.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="exercises">
|
||||
<title>Exercises</title>
|
||||
|
||||
<sect1 id="exer_fraction">
|
||||
<title>Exercise Fraction Task</title>
|
||||
|
||||
<para>In this exercise you have to solve a given task. Therefor you have to
|
||||
enter numerator and denominator. The difficulty of the generated task can be
|
||||
adjusted by the task parameters described below.
|
||||
</para>
|
||||
|
||||
<sect2 id="task_paras">
|
||||
<title>Task Parameters</title>
|
||||
<para>
|
||||
There are 3 parameters which influence the difficulty of the generated
|
||||
tasks:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><guilabel>Terms</guilabel></term>
|
||||
<listitem><para>The number of terms (separate fractions) given in each
|
||||
task. From 2 to 5, inclusive.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><guilabel>Max. main denominator</guilabel></term>
|
||||
<listitem><para>The highest number &kbruch; will use as the main denominator in the
|
||||
tasks it sets. From a minimum of 10 to a maximum of 50.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><guilabel>Operations</guilabel></term>
|
||||
<listitem><para>Operations which should be used in the
|
||||
task: <guilabel>Addition/Subtraction</guilabel>,
|
||||
<guilabel>Multiplication/Division</guilabel> or <guilabel>All Operations Mixed</guilabel>.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>
|
||||
After you have changed the parameters you have to click on the <guimenu>New
|
||||
Task</guimenu> button in the toolbar to generate a task which uses the new
|
||||
parameters. You can also call this action from the menubar with
|
||||
<menuchoice><guimenu>Task</guimenu><guimenuitem>New
|
||||
Task</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Your selection of the maximum main denominator will be reset to a default
|
||||
value every time you change the number of terms. So you should change the
|
||||
number of terms first and then select the maximum main denominator.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
If you have not solved the current task and call the <guimenu>New
|
||||
Task</guimenu> action, the task will be counted as not solved correctly. To
|
||||
prevent this you have to change the parameters after you solved the task but
|
||||
before generating a new one.
|
||||
</para>
|
||||
<para>
|
||||
The chosen parameters will be saved on &kbruch;'s termination and restored
|
||||
on next startup.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="exer_fraction_solve_task">
|
||||
<title>Solving Tasks</title>
|
||||
<para>
|
||||
After you have solved a given task, you need to enter the result into the two
|
||||
input boxes. In the upper box you enter the numerator and in the lower
|
||||
box the denominator.
|
||||
</para>
|
||||
<para>
|
||||
If the result is negative, you can enter a minus sign in front of the numerator
|
||||
or denominator. If the result is 0, just type a 0 in the numerator input field.
|
||||
If the result has a denominator of 1, you can leave the lower box empty.
|
||||
</para>
|
||||
<para>
|
||||
After you have entered the result you should click the <guibutton>Check
|
||||
Task</guibutton> button below the input boxes. &kbruch; will check your input
|
||||
and present the correct result. Therefore the screen changes a little, as
|
||||
you can see in the screenshot:
|
||||
</para>
|
||||
<screenshot>
|
||||
<screeninfo>Checked Task</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="checked.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Checked Task</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>
|
||||
This task was solved correctly. The correct value is shown in 2 different
|
||||
forms. The second form just in front of the word <guilabel>CORRECT</guilabel>
|
||||
is only used in some countries and must be read as 2 + 1/5 in the given case.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
You always have to enter the result reduced, because most teachers only
|
||||
give all points to reduced results. &kbruch; will show you a short message
|
||||
like the one in the screenshot below, if you enter the correct result
|
||||
unreduced.
|
||||
</para>
|
||||
</note>
|
||||
<screenshot>
|
||||
<screeninfo>Unreduced Result</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="reduced.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Unreduced Result</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
To continue with the next task, click on the <guimenu>Next Task</guimenu>
|
||||
button. If you want to change the parameters for the next task please do this
|
||||
before clicking on the <guimenu>Next Task</guimenu> button.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="exer_compare">
|
||||
<title>Exercise Comparison</title>
|
||||
|
||||
<para>In this exercise you have to compare 2 given fractions. You have to choose
|
||||
the bigger fraction of both by selecting the correct comparison sign.
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Exercise Comparison</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="compare.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Exercise Comparison</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>First choose the correct comparison sign. To toggle the comparison sign,
|
||||
you have to click on the button showing the comparison sign. After you have
|
||||
chosen the comparison sign click on the <guimenu>Check Task</guimenu> button.
|
||||
&kbruch; will check your input and present the correct result. After this step
|
||||
you will get to the next task by clicking on the <guimenu>Next Task</guimenu>
|
||||
button.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="exer_convert">
|
||||
<title>Exercise Conversion</title>
|
||||
|
||||
<para>In this exercise you have to convert a given number into a fraction. You
|
||||
have to enter numerator and denominator.
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Exercise Conversion</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="convert.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Exercise Conversion</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>On the left side of the equal sign in the screenshot above you can see a
|
||||
recurring decimal. This means, that the fraction shown as a decimal has a
|
||||
repeating part. The repeating part is marked with the small bar above the
|
||||
numbers. Those numbers repeat ad infinitum.
|
||||
</para>
|
||||
|
||||
<para>After you have entered the numerator and denominator click on the
|
||||
<guimenu>Check Task</guimenu> button. &kbruch; will check your input and
|
||||
present the correct result. After this step you will get to the next task by
|
||||
clicking on the <guimenu>Next Task</guimenu> button.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
Do not forget to enter the result reduced. Unreduced results will be counted as
|
||||
solved not correctly.
|
||||
</para>
|
||||
</note>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="exer_factorize">
|
||||
<title>Exercise Factorization</title>
|
||||
|
||||
<para>In this exercise you have to factorize a given number into its prime
|
||||
factors. You have to enter all prime factors of the number.
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Exercise Factorization</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="factorize.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Exercise Factorization</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>You can enter a factor by clicking on the prime <guimenu>factor
|
||||
buttons</guimenu>. The currently entered prime factors will be shown in the
|
||||
field next to the number to be factorized. You can remove the last entered
|
||||
prime factor by clicking on the <guimenu>Remove Last Factor</guimenu> button.
|
||||
</para>
|
||||
<para>
|
||||
After you have entered all prime factors click on the
|
||||
<guimenu>Check Task</guimenu> button. &kbruch; will check your input and
|
||||
present the correct result. After this step you will get to the next task by
|
||||
clicking on the <guimenu>Next Task</guimenu> button.
|
||||
</para>
|
||||
|
||||
<para>In the screenshot at the top of this page you can see a <quote>*</quote>
|
||||
between the prime factors. This is the multiplication sign. The product of all
|
||||
prime factors must be the number you try to factorize.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
You have to enter all prime factors even when a prime factor repeats several
|
||||
times. Example: As prime factors of number 18 you have to enter 2, 3 and 3.
|
||||
</para>
|
||||
</note>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="credits">
|
||||
|
||||
<title>Credits and License</title>
|
||||
<para>&kbruch;</para>
|
||||
<para>
|
||||
Program and documentation Copyright, 2001-2004 Sebastian Stein
|
||||
<email>seb.kde@hpfsc.de</email>
|
||||
</para>
|
||||
|
||||
<para>Thank you goes to:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>&Anne-Marie.Mahfouf; for managing the &kde;-edu project</para></listitem>
|
||||
<listitem><para>Klas Kalass for helping design the interface</para></listitem>
|
||||
<listitem><para>Eva Brucherseifer for writing <application>KMath</application> (&kbruch;'s &GUI; is based on this work)</para></listitem>
|
||||
<listitem><para>Dominique Devriese for bug fixing</para></listitem>
|
||||
<listitem><para><ulink url="http://www.net-tex.de/">Stefan Schumacher</ulink> for testing a very early version</para></listitem>
|
||||
<listitem><para><ulink url="http://www.guckes.net/">Sven Guckes</ulink> for testing the text interface (which has been removed)</para></listitem>
|
||||
<listitem><para>&David.Faure; for helping with &kde; <acronym>CVS</acronym> and &kde; Bugzilla</para></listitem>
|
||||
<listitem><para>&Robert.Gogolok; for helping with &kde; <acronym>CVS</acronym></para></listitem>
|
||||
<listitem><para>John Kesson for proof reading the handbook</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
|
||||
&underFDL; <!-- FDL: do not remove -->
|
||||
&underGPL; <!-- GPL License -->
|
||||
|
||||
</chapter>
|
||||
|
||||
<appendix id="installation">
|
||||
<title>Installation</title>
|
||||
|
||||
<sect1 id="getting-kbruch">
|
||||
<title>How to obtain &kbruch;</title>
|
||||
|
||||
&install.intro.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="requirements">
|
||||
<title>Requirements</title>
|
||||
|
||||
<para>
|
||||
In order to successfully use &kbruch;, you need &kde; > 3.1 .
|
||||
</para>
|
||||
|
||||
<para>
|
||||
&kbruch; itself can be found
|
||||
on <ulink url="http://edu.kde.org/kbruch/">the &kbruch; home page</ulink>
|
||||
and it is part of the &kde;-edu project</para>
|
||||
|
||||
<para>You can find a list of changes in the <acronym>CVS</acronym> commit
|
||||
messages.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="compilation">
|
||||
<title>Compilation and Installation</title>
|
||||
|
||||
&install.compile.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
</appendix>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
|
||||
// vim:ts=2:sw=2:tw=78:noet
|
||||
-->
|
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<refentry lang="&language;">
|
||||
<refentryinfo>
|
||||
<title>KDE User's Manual</title>
|
||||
<author>&Lauri.Watts;&Lauri.Watts.mail;</author>
|
||||
<date>May 25, 2005</date>
|
||||
<productname>K Desktop Environment</productname>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle><command>kbruch</command></refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname><command>kbruch</command></refname>
|
||||
<refpurpose>Learn calculating with fractions</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>kbruch</command>
|
||||
<arg choice="opt">KDE Generic Options</arg>
|
||||
<arg choice="opt">Qt Generic Options</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>&kbruch; is a small program to practice calculating with fractions.
|
||||
Different exercises are provided for this purpose. The program checks user's
|
||||
input and gives feedback.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>More detailed user documentation is available from <ulink
|
||||
url="help:/kbruch">help:/kbruch</ulink>
|
||||
(either enter this <acronym>URL</acronym> into &konqueror;, or run
|
||||
<userinput><command>khelpcenter</command>
|
||||
<parameter>help:/kbruch</parameter></userinput>).</para>
|
||||
<para>There is also further information available at <ulink
|
||||
url="http://edu.kde.org/kbruch/">the kde-edu website</ulink></para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Authors</title>
|
||||
<para>&kbruch; was written by
|
||||
<personname><firstname>Sebastian</firstname><surname>Stein</surname></personname> <email>seb.kde@hpfsc.de</email></para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 50 KiB |
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
@ -0,0 +1,334 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY kappname "&keduca;">
|
||||
<!ENTITY package "kdeedu">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &keduca; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Javier</firstname>
|
||||
<othername>J.</othername>
|
||||
<surname>Campos</surname>
|
||||
<affiliation>
|
||||
<address><email>&Javier.J.Campos.mail;</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
|
||||
</authorgroup>
|
||||
|
||||
<copyright>
|
||||
<year>1999</year>
|
||||
<holder>&Javier.J.Campos;</holder>
|
||||
</copyright>
|
||||
|
||||
<date>2002-10-08</date>
|
||||
<releaseinfo>1.1</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>&keduca; is flash card application, which allows you to make
|
||||
interactive form based tests.</para>
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>kdeedu</keyword>
|
||||
<keyword>KEduca</keyword>
|
||||
<keyword>test</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>&keduca; is flash card application, which allows you to make
|
||||
interactive form based tests.</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&keduca; screenshot</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="screenshot.png" format="PNG" />
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&keduca; screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
</chapter>
|
||||
<!--
|
||||
<chapter id="create-modify-test">
|
||||
<title>Creating a New Test</title>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="configuration">
|
||||
<title>Configuring &keduca;</title>
|
||||
|
||||
</chapter>
|
||||
-->
|
||||
<chapter id="command-reference">
|
||||
<title>Command Reference</title>
|
||||
|
||||
<sect1 id="file-menu">
|
||||
<title>The <guimenu>File</guimenu> Menu</title>
|
||||
|
||||
<sect2 id="main-window-file-menu">
|
||||
<title>The <guilabel>Main Window</guilabel> <guimenu>File</guimenu>
|
||||
Menu</title>
|
||||
|
||||
<para>The <guilabel>Main Window</guilabel> has the following
|
||||
entries:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice><!-- <shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>O</keycap></keycombo>
|
||||
</shortcut> -->
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Open...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Open an existing test file.</action></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guisubmenu>Open Recent</guisubmenu>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Open a recently used test file.</action></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Close</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>
|
||||
Close the currently open test file.
|
||||
</action></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Quit</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Quit</action> &keduca;</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="edit-test-window-file-menu">
|
||||
<title>The Editing Window <guimenu>File</guimenu> Menu</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>New</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Create a new test</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Open...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Open an existing test file.</action></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guisubmenu>Open Recent</guisubmenu>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Open a recently used test file.</action></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Save</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Save the currently open
|
||||
test.</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Save As...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Save the currently open game with a new
|
||||
name.</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Close</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>
|
||||
Close the currently open test file.
|
||||
</action></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Print...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Print the currently open
|
||||
test.</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Quit</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Quit</action> &keduca;</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="build-menu">
|
||||
<title>The <guimenu>Build</guimenu> Menu</title>
|
||||
|
||||
<para>The <guimenu>Build</guimenu> menu exists only in the
|
||||
<guilabel>Main Window</guilabel> of &keduca;.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Build</guimenu>
|
||||
<guimenuitem>Create/Modify...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Create or modify a test</action> in the Create or Modify a test
|
||||
window.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="settings-menu">
|
||||
<title>The <guimenu>Settings</guimenu> Menu</title>
|
||||
|
||||
<para>The first entries are available in both of the main &keduca;
|
||||
windows.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice><guimenu>Settings</guimenu>
|
||||
<guimenuitem>Show Toolbar</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Toggle on and off the display of the toolbar.</action>
|
||||
The default is on.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice><guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure Shortcuts...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Personalize the keybindings</action> for &keduca;.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice><guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure Toolbars...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Personalize the toolbars</action> for &keduca;.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>The following entry is only available in the <guilabel>Main
|
||||
Window</guilabel>.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice><guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure &keduca;</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem>
|
||||
<para><action>Customize</action> &keduca;. The options available to
|
||||
you are described in the Configuration chapter.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="help-menu">
|
||||
<title>The <guimenu>Help</guimenu> Menu</title>
|
||||
|
||||
&help.menu.documentation;
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="credits-and-licenses">
|
||||
<title>Credits and Licenses</title>
|
||||
|
||||
<para>&keduca; is copyright 2001, Javier Campos.</para>
|
||||
|
||||
<para>Documentation partly by &Lauri.Watts; &Lauri.Watts.mail;</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
|
||||
&underFDL;
|
||||
&underGPL;
|
||||
|
||||
</chapter>
|
||||
<!--
|
||||
<appendix id="installation">
|
||||
<title>Installation</title>
|
||||
|
||||
&install.intro.documentation;
|
||||
&install.compile.documentation;
|
||||
</appendix>
|
||||
-->
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
-->
|
@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<refentry lang="&language;">
|
||||
<refentryinfo>
|
||||
<title>KDE User's Manual</title>
|
||||
<author>&Lauri.Watts;&Lauri.Watts.mail;</author>
|
||||
<date>March 16, 2005</date>
|
||||
<productname>K Desktop Environment</productname>
|
||||
</refentryinfo>
|
||||
<refmeta>
|
||||
<refentrytitle><command>keduca</command></refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname><command>keduca</command></refname>
|
||||
<refpurpose>Interactive form-based tests and exams.</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>keduca</command>
|
||||
<group><option>file</option></group>
|
||||
<arg choice="opt">KDE Generic Options</arg>
|
||||
<arg choice="opt">Qt Generic Options</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>&keduca; is flash card application, which allows you to make
|
||||
interactive form based tests.</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Options</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term><option><replaceable>file</replaceable></option></term>
|
||||
<listitem><para>File to load</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>More detailed user documentation is available from <ulink
|
||||
url="help:/keduca">help:/keduca</ulink>
|
||||
(either enter this <acronym>URL</acronym> into &konqueror;, or run
|
||||
<userinput><command>khelpcenter</command>
|
||||
<parameter>help:/keduca</parameter></userinput>).</para>
|
||||
|
||||
<para>There is also further information available at the <ulink
|
||||
url="http://edu.kde.org/keduca/">KDE Educatainment project website</ulink>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Authors</title>
|
||||
<para>&keduca; was written by <personname><firstname>Javier</firstname><surname>Campos</surname></personname></para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<refentry lang="&language;">
|
||||
<refentryinfo>
|
||||
<title>KDE User's Manual</title>
|
||||
<author><personname>
|
||||
<firstname>Ben</firstname>
|
||||
<surname>Burton</surname>
|
||||
</personname>
|
||||
<email>bab@debian.org</email></author>
|
||||
<date>2005-05-27</date>
|
||||
<productname>K Desktop Environment</productname>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle><command>keducabuilder</command></refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname><command>keducabuilder</command></refname>
|
||||
<refpurpose>test/exam editor for keduca</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>keducabuilder</command>
|
||||
<group><option>file</option></group>
|
||||
<arg choice="opt">KDE Generic Options</arg>
|
||||
<arg choice="opt">Qt Generic Options</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para><application>KEducaBuilder</application> is the test editor for
|
||||
&keduca;, a flash-card application for working with interactive form-based
|
||||
tests. KEducaBuilder is used to create and edit these tests, whereas
|
||||
&keduca; itself can be used to view and take these tests. </para>
|
||||
<para>This application is part of the &kde; edutainment module. </para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Options</title>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option><replaceable>file</replaceable></option></term>
|
||||
<listitem><para>Filename to load in the editor</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>keduca(1)</para>
|
||||
|
||||
<para>More detailed user documentation is available from <ulink
|
||||
url="help:/keduca">help:/&keduca;</ulink>
|
||||
(either enter this <acronym>URL</acronym> into &konqueror;, or run
|
||||
<userinput><command>khelpcenter</command>
|
||||
<parameter>help:/keduca</parameter></userinput>).</para>
|
||||
|
||||
<para>There is also further information available at the <ulink url="http://edu.kde.org/keduca/">&kde; Edutainment website:</ulink></para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Authors</title>
|
||||
<para>&keduca; was written by <personname><firstname>Javier</firstname><surname>Campos</surname></personname></para><para>This man page based on the one written for Debian by <personname><firstname>Ben</firstname><surname>Burton</surname></personname> <email>bab@debian.org</email>.</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
After Width: | Height: | Size: 25 KiB |
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
|
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 711 B |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,655 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY kgeography "<application>KGeography</application>">
|
||||
<!ENTITY kappname "&kgeography;">
|
||||
<!ENTITY package "playground/edu">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &kgeography; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<personname>
|
||||
<firstname>Anne-Marie</firstname>
|
||||
<surname>Mahfouf</surname>
|
||||
</personname>
|
||||
<email>&Anne-Marie.Mahfouf.mail;</email>
|
||||
</author>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
</authorgroup>
|
||||
|
||||
|
||||
<copyright>
|
||||
<year>2005</year>
|
||||
<holder>&Anne-Marie.Mahfouf;</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<date>2005-08-02</date>
|
||||
<releaseinfo>0.4</releaseinfo>
|
||||
|
||||
<!-- Abstract about this handbook -->
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
&kgeography; is a geography learning tool for &kde;. Right now it has six usage modes:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Browse the maps clicking in a map division to see its name, capital and flag</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The game tells you a map division name and you have to click on it</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The game tells you a capital and you have to guess the division it belongs to</para>
|
||||
</listitem><listitem>
|
||||
<para>The game tells you a division and you have to guess its capital</para>
|
||||
</listitem><listitem>
|
||||
<para>The game shows you a map division flag and you have to guess its name</para>
|
||||
</listitem><listitem>
|
||||
<para>The game tells you a map division name and you have to guess its flag</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</abstract>
|
||||
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>kdeedu</keyword>
|
||||
<keyword>KGeography</keyword>
|
||||
<keyword>geography</keyword>
|
||||
<keyword>maps</keyword>
|
||||
<keyword>countries</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<!-- The introduction chapter contains a brief introduction for the
|
||||
application that explains what it does and where to report
|
||||
problems. Basically a long version of the abstract. Don't include a
|
||||
revision history. (see installation appendix comment) -->
|
||||
|
||||
<para>
|
||||
&kgeography; is a geography learning tool for &kde;. It allows you to learn about the political divisions of some countries (divisions, capitals of those divisions and their associated flags if there are some).
|
||||
</para>
|
||||
<para>
|
||||
Maps available in current release are: Africa, Asia, Austria, Brazil, Canada, China, Europe, France, Germany, Italy, Italy by provinces, North and Central America, Norway, Poland, South America, Spain, USA and the world.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="quick-start">
|
||||
<title>Quick Start to &kgeography;</title>
|
||||
<para>
|
||||
When you run &kgeography; for the first time, it first asks you to choose a map to start with.
|
||||
<screenshot>
|
||||
<screeninfo>Here's a screenshot of &kgeography; at first start</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start1.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Here's a screenshot of &kgeography; at first start</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Here we choose Canada
|
||||
<screenshot>
|
||||
<screeninfo>Canada is choosen</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start2.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Canada is choosen</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
And &kgeography; main window appears with the map of Canada:
|
||||
<screenshot>
|
||||
<screeninfo>&kgeography; main window</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start3.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kgeography; main window</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
You can then choose what type of learning or testing you want to do by looking at the menu on the left:
|
||||
<screenshot>
|
||||
<screeninfo>&kgeography; menu</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start4.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&kgeography; menu</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Browse the map: a &LMB; click on an area of the map will display informations about that area:
|
||||
<screenshot>
|
||||
<screeninfo>Browse the map</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start5.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Browse the map</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Click division in the map: you are first asked how many questions you want
|
||||
<screenshot>
|
||||
<screeninfo>How many questions</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start6.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>How many questions</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Then you are asked to click on a specific province:
|
||||
<screenshot>
|
||||
<screeninfo>Click on a province</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start7.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Click on a province</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
When you finish all the questions, a result dialog is shown with your correct and uncorrect answers:
|
||||
<screenshot>
|
||||
<screeninfo>Your results</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start8.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Your results</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Guess a division from its capital: you are asked to find the name of a province among a choice of 4 given its capital:
|
||||
<screenshot>
|
||||
<screeninfo>Guess a division from its capital</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start9.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Guess a division from its capital</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
And the results are displayed when the test is finished:
|
||||
<screenshot>
|
||||
<screeninfo>Your results</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start10.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Your results</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Guess the capital from a division: you have a capital and four province names and you must choose the correct one. As before, at the end a result dialog is shown.
|
||||
</para>
|
||||
<para>
|
||||
Guess division from its flag: a flag is shown and you must find the province it belongs to.
|
||||
<screenshot>
|
||||
<screeninfo>the flag question</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start11.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>the flag question</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Guess the flag of a division: a province name is given and you must find the correct flag among four.
|
||||
<screenshot>
|
||||
<screeninfo>match the flag with the province</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="first-start12.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>match the flag with the province</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="using-kapp">
|
||||
<title>Using &kgeography;</title>
|
||||
|
||||
<para>
|
||||
&kgeography; displays informations about some countries and tests you about those informations.
|
||||
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Here's a screenshot of &kgeography;</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="kgeography.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
|
||||
|
||||
<sect1 id="kapp-features">
|
||||
<title>More &kgeography; features</title>
|
||||
|
||||
<para>Another feature of &kgeography; is the possibility of zoom on a map.
|
||||
<screenshot>
|
||||
<screeninfo>Zoom</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="zoom.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Zoom</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
While in zoom mode, you can press &RMB; to go back to the original map size (the <guimenuitem>Original Size</guimenuitem> action has the same effect). Use the scroll bars to move around the zoomed map or use the <guimenuitem>Move</guimenuitem> action that will allow you to drag the map using &LMB;.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<!--<chapter id="teachers-parents">
|
||||
<title>Teachers/Parents guide to &kgeography; </title>
|
||||
This chapter should emphasize the educational aims of your app and
|
||||
guide the parent/teacher on how to help the child using it.
|
||||
</chapter>-->
|
||||
|
||||
<chapter id="how-to-maps">
|
||||
<title>How to make maps</title>
|
||||
<para>A map in &kgeography; is made by two files, one is the image of the map and the other one is its description. </para>
|
||||
<sect1 id="helper-tool">
|
||||
<title>Helper tool</title>
|
||||
<para>
|
||||
You can find <ulink url="http://kgeography.berlios.de/gen_map.pl">here</ulink> a tool (made by Yann Verley) which helped him with the map of France. To find out its usage, simply execute it and read the help message. It basically creates the <literal role="extension">.kgm</literal> file from a plain text file and creates a file with the colors it has assigned to each division, so you can fill the map according to them.</para>
|
||||
</sect1>
|
||||
<sect1 id="description-file">
|
||||
<title>Description file</title>
|
||||
<para>
|
||||
The description file is needed and its file extension is <literal role="extension">.kgm</literal>. It should begin with <sgmltag class="starttag">map</sgmltag> and end with <sgmltag class="endtag">map</sgmltag>.
|
||||
</para>
|
||||
<para>
|
||||
Inside of those tags there should be:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">mapFile</sgmltag> and <sgmltag class="endtag">mapFile</sgmltag>: the name of the file (without any path) containing the map image, ⪚ <quote>europe.png</quote>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">name</sgmltag> and <sgmltag class="endtag">name</sgmltag>: the name of map, ⪚ <quote>Europe</quote>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>A <sgmltag class="starttag">division</sgmltag> and <sgmltag class="endtag">division</sgmltag> for each division in the map.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
Each division has these tags:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">name</sgmltag> and <sgmltag class="endtag">name</sgmltag>: the name of the division, ⪚ <quote>Albania</quote>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">capital</sgmltag> and <sgmltag class="endtag">capital</sgmltag>: the name of the capital of the division, ⪚ <quote>Tirana</quote>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">ignore</sgmltag> and <sgmltag class="endtag">ignore</sgmltag>: can be set to <userinput>yes</userinput>, <userinput>allowClickMode</userinput> and <userinput>no</userinput>. If this tag is set to <userinput>yes</userinput> then the division will be ignored when asking for divisions in that map. It is then as if this division does not exist in &kgeography; quiz modes. If this tag is set to <userinput>allowClickMode</userinput> then &kgeography; will ask for the division in the <guibutton>Click Division in Map...</guibutton> mode but not in other quiz modes. Setting this tag to <userinput>no</userinput> means the division will appear in all modes (browse and quizzes). This tag is optional and when there is no <sgmltag class="starttag">ignore</sgmltag> tag that means as it is set to <userinput>no</userinput>. For example <quote>Algeria</quote> has this tag set to <userinput>yes</userinput> in the <quote>Europe</quote> map which means that <quote>Algeria</quote> will not be part of any quiz in the <quote>Europe</quote> map.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">flag</sgmltag> and <sgmltag class="endtag">flag</sgmltag>: the file (without any path) containing the flag of the division, ⪚ <quote>albania.png</quote>. This tag is optional. Not needed for the divisions whose <sgmltag class="starttag">ignore</sgmltag> tag is set to <userinput>yes</userinput>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">color</sgmltag> and <sgmltag class="endtag">color</sgmltag>: the color the division has in the map.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
The color is defined using three tags:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">red</sgmltag> and <sgmltag class="endtag">red</sgmltag>: red component of the color. Valid values are between 0 and 255.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">green</sgmltag> and <sgmltag class="endtag">green</sgmltag>: green component of the color. Valid values are between 0 and 255.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><sgmltag class="starttag">blue</sgmltag> and <sgmltag class="endtag">blue</sgmltag>: blue component of the color. Valid values are between 0 and 255.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<tip>
|
||||
<para>
|
||||
It is convenient to create 2 or 3 false divisions like <quote>Water</quote>, <quote>Frontier</quote> and <quote>Coast</quote> and set them with the <sgmltag class="starttag">ignore</sgmltag> tag set to <userinput>yes</userinput>.
|
||||
</para>
|
||||
</tip>
|
||||
<important>
|
||||
<para>All names (capitals and divisions) must be in English.</para>
|
||||
</important>
|
||||
</sect1>
|
||||
<sect1 id="map-file">
|
||||
<title>Map file</title>
|
||||
<para>
|
||||
The map file is quite simple but laborious to create. It has to be in <acronym>PNG</acronym> format.
|
||||
You can find some maps to transform at <ulink url="https://www.cia.gov/cia/publications/factbook/docs/refmaps.html">Cia Reference Maps</ulink>. If no map fits your needs you can download the <ulink url="https://www.cia.gov/cia/publications/factbook/reference_maps/pdf/political_world.pdf">political world map</ulink>, take a screenshot of it and work from it.
|
||||
Each division in the map should have one and only one color. To achieve this you can use image processing programs like <application>The Gimp</application> and <application>Kolourpaint</application>.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="flags">
|
||||
<title>Flags</title>
|
||||
<para>
|
||||
If you have used the <sgmltag class="starttag">flag</sgmltag> tag you should provide the flag files. They have to be in <acronym>PNG</acronym> format and better if they are 300x200 pixels and you provide a <acronym>SVG</acronym> file for it. To obtain <acronym>SVG</acronym> flags of almost all countries in the world and some other divisions, you can consult the <ulink url="http://www.sodipodi.com/index.php3?section=clipart/flags">Sodipodi flags collection</ulink>.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="how-to-test">
|
||||
<title>How to test</title>
|
||||
<para>
|
||||
Before sending your map to Albert <email>tsdgeos@terra.es</email>, you should test it to see it has no errors. To achieve that, you have to do the following:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Put the map description and map image file in <filename class="directory">$<envar>KDEDIR</envar>/share/apps/kgeography/</filename></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Put the flag <acronym>PNG</acronym> files (if any) in <filename class="directory">$<envar>KDEDIR</envar>/share/apps/kgeography/flags/</filename></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
Once that has been done you should be able of opening your map from inside &kgeography;.
|
||||
</para>
|
||||
<para>
|
||||
If you don't know which is your <filename class="directory">$<envar>KDEDIR</envar></filename>, type <userinput><command>kde-config</command> <option>--prefix</option></userinput> in a shell.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="non-political-maps">
|
||||
<title>Non political maps</title>
|
||||
<para> Is it possible to do non-political maps? Yes, it is!
|
||||
<screenshot>
|
||||
<screeninfo>Example of how to create a non political map</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="river.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Example of how to create a non political map</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
<para>
|
||||
Of course, the division concept can be extended to a river or a mountain. During the creation of the map, you should keep in mind that most times the river or mountain will be too small that you should provide an additional clicking area.
|
||||
In this example the river would have the maroon area and color <20,76,34> as its identifier.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="commands">
|
||||
<title>Command Reference</title>
|
||||
|
||||
<!-- (OPTIONAL, BUT RECOMMENDED) This chapter should list all of the
|
||||
application windows and their menubar and toolbar commands for easy reference.
|
||||
Also include any keys that have a special function but have no equivalent in the
|
||||
menus or toolbars. This may not be necessary for small apps or apps with no tool
|
||||
or menu bars. -->
|
||||
|
||||
<sect1 id="kapp-mainwindow">
|
||||
<title>The main &kgeography; window</title>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>File</guimenu> Menu</title>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>O</keycap></keycombo>
|
||||
</shortcut>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Open Map...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Open the choose map dialog</action></para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
|
||||
</shortcut>
|
||||
<guimenu>File</guimenu>
|
||||
<guimenuitem>Quit</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Quits</action> &kgeography;</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>View</guimenu> Menu</title>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>View</guimenu>
|
||||
<guimenuitem>Zoom</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Goes in zoom mode</action></para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>View</guimenu>
|
||||
<guimenuitem>Original Size</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Sets</action> the map back to its original size</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>View</guimenu>
|
||||
<guimenuitem>Move</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Moves</action> the current map</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Settings</guimenu> Menu</title>
|
||||
<para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Show/Hide Toolbar</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Show/Hide the &kgeography; toolbar.</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure Shortcuts...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Configure key shortcuts for &kgeography;.</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure Toolbars...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Configure the &kgeography; toolbar.</action></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>The <guimenu>Help</guimenu> Menu</title>
|
||||
|
||||
<!-- Assuming you have a standard help menu (help, what's this, about -->
|
||||
<!-- &kgeography;, about KDE) then the documentation is already written. -->
|
||||
<!-- The following entity is valid anywhere that a variablelist is -->
|
||||
<!-- valid. -->
|
||||
|
||||
&help.menu.documentation;
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<!--<chapter id="faq">
|
||||
<title>Questions and Answers</title>
|
||||
|
||||
|
||||
&reporting.bugs;
|
||||
&updating.documentation;
|
||||
|
||||
<qandaset id="faqlist">
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>My Mouse doesn't work. How do I quit &kgeography;?</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>You silly goose! Check out the <link linkend="commands">Commands
|
||||
Section</link> for the answer.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Why am I not able to twiddle my documents?</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>You can only twiddle your documents if you have the foobar.lib
|
||||
installed.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>-->
|
||||
|
||||
<chapter id="credits">
|
||||
|
||||
<!-- Include credits for the programmers, documentation writers, and
|
||||
contributors here. The license for your software should then be included below
|
||||
the credits with a reference to the appropriate license file included in the KDE
|
||||
distribution. -->
|
||||
|
||||
<title>Credits and License</title>
|
||||
|
||||
<para>
|
||||
&kgeography;
|
||||
</para>
|
||||
<para>
|
||||
Program copyright 2004-2005 Albert Astals Cid <email>tsdgeos@terra.es</email>
|
||||
</para>
|
||||
|
||||
|
||||
<para>
|
||||
Documentation Copyright © 2005 &Anne-Marie.Mahfouf; <email>&Anne-Marie.Mahfouf.mail;</email>
|
||||
</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
&underFDL;
|
||||
&underGPL;
|
||||
|
||||
</chapter>
|
||||
|
||||
<appendix id="installation">
|
||||
<title>Installation</title>
|
||||
|
||||
<sect1 id="getting-kapp">
|
||||
<title>How to obtain &kgeography;</title>
|
||||
|
||||
<!-- This first entity contains boiler plate for applications that are
|
||||
part of KDE CVS. You should remove it if you are releasing your
|
||||
application -->
|
||||
|
||||
&install.intro.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="compilation">
|
||||
<title>Compilation and Installation</title>
|
||||
|
||||
<!-- This entity contains the boilerplate text for standard -->
|
||||
<!-- compilation instructions. If your application requires any -->
|
||||
<!-- special handling, remove it, and replace with your own text. -->
|
||||
|
||||
&install.compile.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
</appendix>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: xml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
|
||||
vim:tabstop=2:shiftwidth=2:expandtab
|
||||
-->
|
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 594 B |
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,4 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,929 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN"
|
||||
"dtd/kdex.dtd" [
|
||||
<!ENTITY kappname "&khangman;">
|
||||
<!ENTITY package "kdeedu">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"><!-- change language only here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &khangman; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Anne-Marie</firstname>
|
||||
<surname>Mahfouf</surname>
|
||||
<affiliation>
|
||||
<address>&Anne-Marie.Mahfouf.mail;</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
</authorgroup>
|
||||
|
||||
|
||||
<copyright>
|
||||
<year>2001</year><year>2005</year>
|
||||
<holder>&Anne-Marie.Mahfouf;</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
|
||||
<date>2006-02-01</date>
|
||||
<releaseinfo>1.6</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
&khangman; is the classic hangman game for children, adapted for &kde;.
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>kdeedu</keyword>
|
||||
<keyword>KHangMan</keyword>
|
||||
<keyword>hangman</keyword>
|
||||
<keyword>game</keyword>
|
||||
<keyword>child</keyword>
|
||||
<keyword>words</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>
|
||||
&khangman; is a game based on the well-known hangman game. It is aimed at
|
||||
children aged six and over. The game has four levels of difficulty: Animals (animals
|
||||
words), Easy, Medium and Hard. A word is picked at random, the letters are
|
||||
hidden, and you must guess the word by trying one letter after another. Each
|
||||
time you guess a wrong letter, part of a picture of a hangman is drawn. You
|
||||
must guess the word before being hanged! You have 10 tries.
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="using-khangman">
|
||||
<title>Using &khangman;</title>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Here's a screenshot of &khangman; when you start it for the first time</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="khangman1.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&khangman; screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Here you can see &khangman; as it is the first time you run it. Level is Animals,
|
||||
language is default (English here, the default is your current &kde; language if
|
||||
the data exists), the theme is "Sea". Any changes in level, language or theme
|
||||
(background) are written in the configuration file and restored in your next
|
||||
game.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Please note how easy it is to change the level and the theme, just
|
||||
click on the combo boxes on the toolbar. Getting a new word and quitting the
|
||||
game are also easily done by clicking on the corresponding buttons on the
|
||||
toolbar.
|
||||
</para>
|
||||
|
||||
<sect1 id="general-usage">
|
||||
<title>General usage</title>
|
||||
|
||||
<!-- FIXME: A word cannot really be displayed and hidden at the same time, -->
|
||||
<!-- although I cannot think of a better way to phrase this -->
|
||||
<para>A word is chosen and its letters are displayed as an underscore (_) symbol. You know how many letters there are in the
|
||||
word. You have to guess the word by trying one letter after another. You enter the letter in the text box and you either press the Enter key or click on the Guess button to see if the letter belongs or not to the word. </para>
|
||||
|
||||
<para>The word is picked at random and it is not the same as the previous word.
|
||||
</para>
|
||||
|
||||
<important><para>All the words are nouns (there are no verbs or adjectives, &etc;).</para></important>
|
||||
|
||||
<para>
|
||||
Usually, it is not important whether you type in lowercase or uppercase. The program
|
||||
converts all input into lowercase (except for German words beginning with an uppercase letter). The program does that automatically.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The current level and current language are displayed in the statusbar.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Each time you guess a letter that is not in the word, another part of the
|
||||
hangman is drawn. You have 10 tries to guess the word. After that, the correct
|
||||
answer is displayed.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There are 4 levels: easy, medium, hard and animals, plus levels for other
|
||||
topics in some languages. The program scans for all data files in all
|
||||
languages.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In the easy level, the words are quite simple and related to everyday life. It
|
||||
is suitable for children from 6 to 9. The animals level contains only names of
|
||||
animals so they are easier to find. Some of them are easy, others are more
|
||||
difficult. In the medium level, the words are longer and more difficult. It is
|
||||
suitable for ages 9+. The hard level is just that, hard, &ie; the words are
|
||||
difficult to spell and not very well known. This level is challenging, even for
|
||||
adults.
|
||||
</para>
|
||||
|
||||
<para>After a word is guessed (or the hangman is completed), you are
|
||||
prompted for another word and you can either use the
|
||||
<keycap>Y</keycap> or <keycap>N</keycap> keys or the mouse to answer
|
||||
yes or no. If you say <guilabel>No</guilabel>, the game quits. If you
|
||||
say <guilabel>Yes</guilabel>, another word is ready to be guessed.
|
||||
</para>
|
||||
|
||||
<para>You type the letter you want to try in the text box (the mouse cursor is
|
||||
ready in the text box) and you hit the &Enter; key. If the letter belongs to the
|
||||
word, it takes its place, as many times as it appears in the word. If the
|
||||
letter does not belong to the word, it goes in the Misses field and a further
|
||||
part of the hangman is drawn on the right. You have ten tries and after that
|
||||
you lose and the correct word is displayed.
|
||||
</para>
|
||||
|
||||
<para>During the game, you can choose to start a new game by going in the
|
||||
<guimenu>Game</guimenu> menu and choosing <guimenuitem>New</guimenuitem> or
|
||||
clicking on the <guiicon>New</guiicon> icon on the toolbar. You can also change
|
||||
the level with the level button on the toolbar (this will bring you a new word
|
||||
for the new level).</para>
|
||||
|
||||
<para>
|
||||
Future improvement (in &kde; 4) will allow you to create your own words file.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="languages">
|
||||
<title>Playing in different languages</title>
|
||||
<para>
|
||||
You can play &khangman; in twenty-four languages: Brazilian Portuguese, Bulgarian, Catalan, Czech, Danish, Dutch, English,
|
||||
Finnish, French, German, Hungarian, Irish (Gaelic), Italian, Norwegian (Bokmål), Norwegian (Nynorsk), Portuguese, Spanish, Serbian (Latin and Cyrillic), Slovenian, Tajik, Swedish, Russian and Turkish.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
By default, after the first installation of &khangman;, only English and your &kde; language if it is one of the above and if you have the corresponding kde-i18n package will be installed. For example if you are a Danish user and if you have &kde; in Danish, in <guimenu>Languages</guimenu> you will see two items: English and Danish and Danish will be the default.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can still play &khangman; in other languages. It is very easy to add new data in &khangman;. All you need is a working Internet connection.
|
||||
You click on the <guimenu>File</guimenu> menu and then on <guimenu>Get Words in New Language...</guimenu>. A dialog appears, similar to this one:
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>The Get New Words dialog for &khangman;</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="getnewstuff.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>The Get New Words dialog for &khangman;</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Click on the language name you want to install and then on the <guibutton>Install</guibutton> button. If the language is successfully installed, a green tick is displayed in front of the language name. You click on the <guibutton>Close</guibutton> button to close the Get New Words dialog (if you want another language, you get repeat these steps).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can then easily change the language by going in the <guimenu>Languages</guimenu> and choose the new language.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Please note that you can now type the special characters in a language by displaying the <interface>Special Characters Toolbar</interface>.
|
||||
This toolbar holds buttons with an icon of each special character per language like é in French for example. Clicking on such a
|
||||
button will write the corresponding letter in the input line and you validate your choice with Enter. You can of course also use the keyboard layout corresponding to the language. This toolbar can be shown or hidden. The setting is restored next time you play &khangman;.
|
||||
</para>
|
||||
|
||||
<important><para>
|
||||
Please note that you need Arial and URW Bookman fonts in order to display the special characters correctly in some languages. Provided you have those fonts installed, &khangman; will automatically use them. If you see small squares instead of letters, then you may not have one of these fonts installed. Type <command>fonts:/</command> into the &konqueror; address bar to check which fonts you have installed.
|
||||
</para></important>
|
||||
|
||||
</sect1>
|
||||
<sect1 id="few-tips">
|
||||
<title>A few tips</title>
|
||||
<para>
|
||||
Try to guess the vowels first. Then have a go with the most common consonants:
|
||||
l, t, r, n, s
|
||||
</para>
|
||||
<para>corresponding:
|
||||
when you see <quote>io</quote>, try n after that, in French and English.
|
||||
</para>
|
||||
<para>
|
||||
In Brazilian Portuguese, Catalan, Spanish and Portuguese, the accented
|
||||
vowels can be discovered when you type the non accented corresponding
|
||||
vowel. For example, all the accented <quote>a</quote> are displayed in
|
||||
the word when you type <quote>a</quote>. This is when <guilabel>Type accented
|
||||
letters</guilabel> on the <guilabel>Languages</guilabel> page of &khangman;'s
|
||||
configuration dialog is not checked. When <guilabel>Type accented
|
||||
letters</guilabel> is checked, then you have to type
|
||||
the accented letters yourself. When you type <quote>a</quote>, only
|
||||
<quote>a</quote> is displayed and you have to type for example
|
||||
ã for this letter to be displayed.
|
||||
</para>
|
||||
<para>
|
||||
Did you know? In English, the most common letter is e (12.7%), followed by t
|
||||
(9.1%) then a (8.2%), i (7.0%) and n (6.7%).
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="menus">
|
||||
<title>Menubar and toolbars</title>
|
||||
|
||||
<sect1 id="mainwindow">
|
||||
<title>The Main &khangman; Window</title>
|
||||
|
||||
<para>The <guimenu>Game</guimenu> menu has 3 items:
|
||||
<guimenuitem>New</guimenuitem>, <guimenuitem>Get Words in New Language...</guimenuitem> and
|
||||
<guimenuitem>Quit</guimenuitem>.</para>
|
||||
|
||||
<para><guimenuitem>New</guimenuitem> brings you a new game, &ie; a new
|
||||
word to guess, in the same level you already
|
||||
are. <guimenuitem>Get Words in New Language...</guimenuitem> will display the Get New Stuff dialog to allow you to download data in a new language. <guimenuitem>Quit</guimenuitem> quits the game by closing the
|
||||
main window and writing the actual settings in the configuration
|
||||
file.</para>
|
||||
|
||||
<para>
|
||||
The <guimenu>Level</guimenu> menu allows you to choose the level, &ie; the difficulty of the word to guess.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <guimenu>Languages</guimenu> menu allows you to change the language the words are displayed in.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <guimenu>Look</guimenu> menu proposes two themes: the <guimenuitem>Sea Theme</guimenuitem> and the <guimenuitem>Desert Theme</guimenuitem>. The background and the font colors changes for each theme.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <guimenuitem>Settings</guimenuitem> menu allows you to configure
|
||||
&khangman; easily. First, <guimenuitem>Toolbars</guimenuitem> and
|
||||
<guimenuitem>Show Statusbar</guimenuitem> give you the possibility to
|
||||
hide/show the toolbars and statusbar.
|
||||
</para>
|
||||
|
||||
<para>There are two toolbars: the main one which is the one on top
|
||||
with the buttons and combo boxes and the
|
||||
<guilabel>Special Characters</guilabel> toolbar which, when it is shown, is
|
||||
on the bottom. This toolbar has buttons with the special characters
|
||||
for each language: accented letters and other special characters. This
|
||||
allows users to easily play in another language without having to configure
|
||||
a new keyboard layout. You click on a special letter and it is
|
||||
displayed as the letter to try. Pressing &Enter; will make the program
|
||||
see if the letter is present in the word or not. The toolbar can be
|
||||
hidden if you don't want it. This is saved in the configuration file
|
||||
so if the toolbar is hidden, it will be hidden next time you run
|
||||
&khangman;.
|
||||
</para>
|
||||
<tip>
|
||||
<para>
|
||||
It is of course possible to move the toolbars around. Put the mouse
|
||||
cursor on the small handle on the left of the toolbar, press the &LMB;
|
||||
and drag the toolbar to position it on the screen where you want
|
||||
it. If you point the mouse on one of the toolbars and press the right
|
||||
mouse button, a context menu appears to let you choose different
|
||||
options for the toolbar.
|
||||
</para>
|
||||
</tip>
|
||||
<para>
|
||||
<guimenuitem>Configure Shortcuts...</guimenuitem> is a standard &kde; setting dialog that allows you to
|
||||
choose different shortcut keys for different actions. For example,
|
||||
<keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo> is the
|
||||
standard shortcut for <guimenuitem>Quit</guimenuitem>.</para>
|
||||
<para><guimenuitem>Configure Toolbars...</guimenuitem> is also a
|
||||
standard &kde; menu item that allows you to add or suppress items from
|
||||
the toolbar.</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&khangman; Desert theme</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="khangman2.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&khangman; Desert theme</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para> Here you have &khangman; with the Desert theme, Catalan language and level Easy. The
|
||||
<interface>Characters</interface> toolbar is shown here.</para>
|
||||
|
||||
<para>The level is chosen with a combo box in the toolbar or via the <guimenu>Level</guimenu> menu in the menubar. The available levels are <guimenuitem>Easy</guimenuitem>, <guimenuitem>Medium</guimenuitem>, <guimenuitem>Animals</guimenuitem> and <guimenuitem>Hard</guimenuitem>. Easy is related to common objects a child aged six
|
||||
or seven knows. Medium regards nouns a bit more challenging, hard is
|
||||
quite difficult and animals is only animals nouns. </para>
|
||||
|
||||
<para> All words are nouns. No verbs, no adjectives. The chosen level
|
||||
is then displayed on the statusbar.</para>
|
||||
<para>Only letters are allowed to be typed in the text box.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="settings">
|
||||
<title>Available Settings</title>
|
||||
<para>
|
||||
A toolbar is provided for quick access to some settings. You can click on a button to have a new game (i.e. a new word), or to quit the game. The level and the theme are easily changed via 2 combo boxes on the toolbar.
|
||||
</para>
|
||||
<para>
|
||||
In <guimenu>Settings</guimenu>, <guimenu>Configure &khangman;...</guimenu> you will find tree pages. The first one is for <guilabel>General</guilabel> settings.
|
||||
</para>
|
||||
|
||||
<sect2 id="general-settings">
|
||||
<title>General Settings</title>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&khangman; General settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settings1.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&khangman; General settings</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para><guilabel>Require more guesses for duplicate letters</guilabel>: this is unchecked as default. When unchecked, if you try the letter "a" and the word has several as, they will be all displayed. For example if the word is "potato" and you try "o", both os will be diaplayed. If you check this option however, only the first "o" will be displayed and you will have to try it one more time to display the second "o" in "potato". This increases the difficulty.
|
||||
</para>
|
||||
|
||||
<para><guilabel>Do not display the 'Congratulations! You won!' dialog</guilabel>: the default is unchecked, that means that when you win a game, a message box will be displayed to tell you that you won and ask you if you want to play again. If you check this option, this dialog is not displayed anymore, instead a new game starts directly after 3 seconds.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In the Sounds section, if you check <guilabel>Enable sounds</guilabel> then a sound will be played on new game and another sound will be played when you win a game.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
<sect2 id="languages-settings">
|
||||
<title>Languages Settings</title>
|
||||
<para>The <guilabel>Languages</guilabel> Settings tab allows you to set some settings specific to some languages. If the settings are not available for the language you are playing in then those settings will be grayed and disabled so you cannot choose them.
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&khangman; Languages Settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settings2.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&khangman; Languages Settings</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Some languages also have hints to help you guess the word. The hint is shown by a right-click and gives a short definition of the word to guess. If this setting is enabled and if you check the option <guilabel>Show hints</guilabel>, you can &RMB; click anywhere on the game and get a hint shown for four seconds. This hint should help you to guess the word more easily.
|
||||
</para>
|
||||
|
||||
<para><guilabel>Type accented letters</guilabel> is available for Brazilian Portuguese, Catalan, Portuguese and Spanish in &khangman;'s configuration dialog. If you check <guilabel>Type accented letters</guilabel> then you will have to type all accented vowels (like ã). If this remains unchecked, when you type any vowel, all accented vowels will be displayed as well.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="timers-settings">
|
||||
<title>Timers Settings</title>
|
||||
<para>The <guilabel>Timers</guilabel> Settings tab allows you to <guilabel>Set the time for displaying the hint</guilabel> and to <guilabel>Set the time for Already Guessed Letter</guilabel> tooltip.
|
||||
</para>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>&khangman; Timers Settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settings3.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>&khangman; Timers Settings</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
<guilabel>Set the time for displaying the hint:</guilabel> allows you to set a greater time for showing the hint label. It is necessary to increase the time for younger children for example as they read more slowly than adults.
|
||||
</para>
|
||||
|
||||
<para><guilabel>Set the time for displaying the Already Guessed Letter</guilabel> allows you to increase or decrease the time for displaying the Already Guessed Letter tooltip. This tooltip is a label which appears when you tried a letter that was already tried. Some people will want not to see it for long while children will need time to understand it and thus will need to set the display for a longer duration.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="commands">
|
||||
<title>Command Reference</title>
|
||||
|
||||
<sect1 id="khangman-mainwindow">
|
||||
<title>Menus and Shortcut Keys</title>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Game</guimenu> Menu</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
|
||||
</shortcut>
|
||||
<guimenu>Game</guimenu>
|
||||
<guimenuitem>New</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>New</action> game (&ie; new word)</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>G</keycap></keycombo>
|
||||
</shortcut>
|
||||
<guimenu>Game</guimenu>
|
||||
<guimenuitem>Get Words in New Language...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Display</action> the KNewStuff dialog which lists all the data available in the different languages. </para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<shortcut>
|
||||
<keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo>
|
||||
</shortcut>
|
||||
<guimenu>Game</guimenu>
|
||||
<guimenuitem>Quit</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Quits</action> &khangman;</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Level</guimenu> Menu</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Level</guimenu>
|
||||
<guimenuitem>Animals</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the list of animals words to guess</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Level</guimenu>
|
||||
<guimenuitem>Easy</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the list of easy words to guess</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Level</guimenu>
|
||||
<guimenuitem>Medium</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the list of medium difficulty words to guess</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Level</guimenu>
|
||||
<guimenuitem>Hard</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the list of difficult words to guess</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Language</guimenu> Menu</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Language</guimenu>
|
||||
<guimenuitem>English</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the English language for the words to guess.</para>
|
||||
<para>All other installed languages are displayed as items in this menu as well.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Look</guimenu> Menu</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Look</guimenu>
|
||||
<guimenuitem>Sea Theme</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the Sea background picture and associated font colors</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Look</guimenu>
|
||||
<guimenuitem>Desert Theme</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Choose</action> the Desert background picture and associated font colors</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Settings</guimenu> Menu</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guisubmenu>Toolbars</guisubmenu>
|
||||
<guimenuitem>Main (&khangman;)</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Toggle</action> the Main Toolbar</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guisubmenu>Toolbars</guisubmenu>
|
||||
<guimenuitem>Special Characters (&khangman;)</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Toggle</action> the Characters Toolbar</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Show Statusbar</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Toggle</action> the statusbar</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure Shortcuts...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Open</action> standard &kde; setting dialog that allows you to
|
||||
choose different shortcut keys for different actions.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure Toolbars...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Configure</action> the items you want to put in the toolbar
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><menuchoice>
|
||||
<guimenu>Settings</guimenu>
|
||||
<guimenuitem>Configure &khangman;...</guimenuitem>
|
||||
</menuchoice></term>
|
||||
<listitem><para><action>Display</action> the &khangman; settings dialog
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>The <guimenu>Help</guimenu> Menu</title>
|
||||
&help.menu.documentation;
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="developers">
|
||||
<title>Developer's Guide to &khangman;</title>
|
||||
|
||||
<sect1 id="changing-words">
|
||||
<title>How to add words in a new language for the game</title>
|
||||
|
||||
<para>Thanks to Stefan Asserhäll, it is very easy to add a new language
|
||||
directly to the game. The procedure described here can also be
|
||||
found in the <filename class="directory">khangman</filename> source folder
|
||||
in the file <filename>README.languages</filename>. Please follow the procedure and then send me the files tarred and gzipped to annemarie.mahfouf@free.fr.
|
||||
</para>
|
||||
<para>
|
||||
The twenty four available languages so far by code are: bg ca cs da de en es fr fi ga hu it nb nl nn pt pt_BR ru sl sr sr@Ltn sv tg and tr. If your language code is not among those, you can proceed further.
|
||||
</para>
|
||||
<para>Most of this data should be completed to include <emphasis>hints</emphasis>, please see below. Complete data: bg de fr en it only have hints so the other above languages must be updated as soon as possible.
|
||||
</para>
|
||||
<para>Be sure you are working with the latest svn trunk sources of &khangman; by
|
||||
issuing a
|
||||
<screen><userinput><command>
|
||||
svn up khangman
|
||||
</command></userinput></screen>
|
||||
in the kdeedu module. Then
|
||||
<screen><userinput><command>
|
||||
cd kdeedu/khangman
|
||||
</command></userinput></screen>
|
||||
</para>
|
||||
<para>The words are stored in 4 separate files, one for each level. The files are in
|
||||
<filename class="directory">/khangman/data/en</filename>. The file
|
||||
<filename>easy.txt</filename> is for level easy, the file
|
||||
<filename>medium.txt</filename> is for level medium, the file
|
||||
<filename>animals.txt</filename> is for level animals and the file
|
||||
<filename>hard.txt</filename> is for level hard.</para>
|
||||
<para>English is the default and thus the only language to be shipped with &khangman;. All other languages data are put in the correct kde-l10n.
|
||||
</para>
|
||||
<procedure>
|
||||
<step><para>Enter the following commands in a &konsole; to create the folder
|
||||
and files for the new language:</para>
|
||||
<!-- Do not wrap or indent the next line, it's white space sensitive -->
|
||||
<screen><userinput><command>./add_language <replaceable>language_code</replaceable></command></userinput></screen>
|
||||
<para>Here you must replace <replaceable>language_code</replaceable>
|
||||
with your language code.</para>
|
||||
</step>
|
||||
<step>
|
||||
<para>The files now use the kvtml format. The tag <sgmltag class="starttag">o</sgmltag> is for the word and the tag <sgmltag class="starttag">t</sgmltag> is for the hint. Try to match the hint with the level of difficulty. The level 'Easy' will require an easy hint but the level 'Hard' will require the definition in the dictionary. Try not to use words of the same family in the hint, that would give the word away too easily! </para>
|
||||
<para>An example of a kvtml file is as follow:</para>
|
||||
<programlisting><markup>
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE kvtml SYSTEM "kvoctrain.dtd">
|
||||
<kvtml>
|
||||
<e>
|
||||
<o>cane</o>
|
||||
<t>è il tuo animale domestico preferito</t>
|
||||
</e>
|
||||
...
|
||||
...
|
||||
</kvtml>
|
||||
</markup></programlisting>
|
||||
</step>
|
||||
<step>
|
||||
<para>Edit all indicated text files in the new folder with a text editor,
|
||||
and replace each word inside the <sgmltag class="starttag">o</sgmltag> tag with a translated word and each hint inside a <sgmltag class="starttag">t</sgmltag> with a translated hint. It is not really important
|
||||
that the exact meaning is preserved, but try to keep the length and
|
||||
level of difficulty roughly the same.
|
||||
You can include words with white space or - in them, in that case the white space or the -
|
||||
will be shown instead of the _.
|
||||
Please contact &Anne-Marie.Mahfouf; <email>annemarie.mahfouf@free.fr</email> if there is anything special related to your language so I can adapt the code to it (especially the special and accented characters).</para>
|
||||
|
||||
<para>You can just translate the words but you can also adapt them
|
||||
following the level and add new words if you want. For example,
|
||||
<quote>table</quote> is in level easy in English but in your language,
|
||||
it can be level medium. Feel free to adapt the files to your language
|
||||
needs. The number of words in a file is not important, you can add
|
||||
some if you want.</para>
|
||||
|
||||
<para>Remember that all words are nouns.</para>
|
||||
|
||||
<para> Note that you must use <emphasis role="bold">UTF-8 encoding</emphasis> when editing the
|
||||
files. If your editor cannot do this, try using &kwrite; or &kate;. When
|
||||
opening a file in &kwrite; or &kate; you can select utf8 encoding with
|
||||
the combo box at the top of the file open dialog.</para>
|
||||
|
||||
<para>Please keep the actual English filenames in your
|
||||
<replaceable>language_code</replaceable> dir.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Enter the following command to install the new data files:</para>
|
||||
<screen><userinput><command>make</command></userinput>
|
||||
<userinput><command>make install</command></userinput></screen>
|
||||
|
||||
<para>You may have to become <systemitem
|
||||
class="username">root</systemitem> to run <command>make
|
||||
install</command>, depending on your installation.</para>
|
||||
</step>
|
||||
<step>
|
||||
<para>Run the game and check that your language has been added:</para>
|
||||
<screen><userinput><command>khangman</command></userinput></screen>
|
||||
</step>
|
||||
<step><para>Instead of committing your files, please sent them to
|
||||
&Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail; tarred and gzipped. As there are
|
||||
now twenty three languages, a wizard (KNewStuff) is now included in &khangman;
|
||||
to easily download and install new languages that are placed on the website.
|
||||
This is done to reduce the size of the kdeedu module and it will also be done in
|
||||
&klettres;, &kstars; and maybe &ktouch;.
|
||||
Please contact Anne-Marie by email if you need further information.</para>
|
||||
<para>When you send me the files, please don't forget to mention any <emphasis role="bold">special characters</emphasis> used in your language (put them in a text file, one per line and add this file in the tarball) and please mention any other specificity.</para>
|
||||
<para><emphasis>Please never commit files in a BRANCH as it might break the game.</emphasis></para>
|
||||
</step>
|
||||
</procedure>
|
||||
<para>Many thanks for your contribution!</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="internal">
|
||||
<title>What is stored by &khangman; and where</title>
|
||||
<para>
|
||||
When you get a new language via <menuchoice><guimenu>Game</guimenu> <guimenuitem>Get Words in New Language...</guimenuitem></menuchoice>, the new language data is stored in <filename class="directory">$~/.kde/share/apps/khangman/data</filename> in the language code folder. The available language dir names are also stored in the &khangman; config file in <filename>~/.kde/share/config/khangmanrc</filename>.
|
||||
</para>
|
||||
<para>
|
||||
The provider name (i.e. the address of the website where to download the new languages) is stored in <filename>$KDEDIR/share/apps/khangman/khangmanrc</filename>.
|
||||
</para>
|
||||
<para>
|
||||
The English language (default) and the user language from his i18n package(s) (if available) are stored in <filename class="directory">$KDEDIR/share/apps/khangman</filename>.
|
||||
</para>
|
||||
<para>
|
||||
In the configuration file, stored for each user in his <filename>~/.kde/share/config/khangmanrc</filename> are saved all the game settings such as the background, last level played, ... plus the files that were downloaded from the KNewStuff dialog.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="planned-features">
|
||||
<title>Planned Features for &khangman;</title>
|
||||
<para>
|
||||
A planned feature is of course to have more language data and also hints in every language. You can help for this in your own language if it is not done yet. Please contact me if you want to help with this, it's just a matter of translating the English words to your language (see <link linkend="changing-words">How to add words in a new language for the game</link>).
|
||||
</para>
|
||||
<para>
|
||||
What can also be done is to use other kvtml files like the ones that are on the
|
||||
&kde;-Edu website to play &khangman;. For example, imagine you can play the
|
||||
capitals of the world, the hint will tell you the country and you have to guess
|
||||
the capital. Or learn words in another language, the hint is the word in your
|
||||
language, the word to guess is the translation in the new language.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="faq">
|
||||
<title>Questions and Answers</title>
|
||||
|
||||
&reporting.bugs;
|
||||
&updating.documentation;
|
||||
|
||||
<qandaset id="faqlist">
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>I have an error message telling me the pictures cannot be found.</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>The game installs by default in <filename
|
||||
class="directory">/usr/local/kde</filename> so add <filename
|
||||
class="directory">/usr/local/kde/bin</filename> to your path and set
|
||||
the <envar>KDEDIR</envar> variable to <filename
|
||||
class="directory">/usr/local/kde</filename> before running the
|
||||
game. An easy way is to configure &khangman; with the option
|
||||
<option>--prefix</option>=$<envar>KDEDIR</envar> where
|
||||
$<envar>KDEDIR</envar> is where the rest of &kde; is installed. This
|
||||
could vary widely, depending on the distribution and operating system
|
||||
you.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>&khangman; does not start correctly after I upgraded from an earlier version to the &kde; 3.5 version</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
There might be a problem due to the change of the configuration file. Please remove the <filename>khangmanrc</filename> file in your <filename class="directory">$HOME/.kde/share/config</filename> folder.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>
|
||||
|
||||
<chapter id="credits">
|
||||
|
||||
<title>Credits and License</title>
|
||||
|
||||
<para>
|
||||
&khangman;
|
||||
</para>
|
||||
<para>
|
||||
Program copyright 2001-2006 &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;
|
||||
</para>
|
||||
<para>
|
||||
Contributors:
|
||||
<itemizedlist>
|
||||
<listitem><para>Hangman graphics: Renaud Blanchard
|
||||
<email>kisukuma@chez.com</email></para> </listitem>
|
||||
<listitem><para>Sounds: Ludovic Grossard
|
||||
<email>ludovic.grossard@libertysurf.fr</email></para> </listitem>
|
||||
<listitem><para>Blue theme, icons and code: &Primoz.Anzur;
|
||||
&Primoz.Anzur.mail;</para> </listitem>
|
||||
<listitem><para>Swedish data files, coding help, transparent pictures and i18n fixes: Stefan Asserhäll
|
||||
<email>stefan.asserhall@telia.com
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Nature theme: Joe Bolin
|
||||
<email>jbolin@users.sourceforge.net</email></para> </listitem>
|
||||
<listitem><para>Softer Hangman Pictures: Matt Howe
|
||||
<email>mdhowe@bigfoot.com</email></para> </listitem>
|
||||
<listitem><para>Spanish data files: eXParTaKus
|
||||
<email>expartakus@expartakus.com
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Spanish data hints: Rafael Beccar
|
||||
<email>rafael.beccar@kdemail.net
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Danish data files: Erik Kjaer Pedersen
|
||||
<email>erik@mpim-bonn.mpg.de
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Finnish data files: Niko Lewman
|
||||
<email>niko.lewman@edu.hel.fi
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Brazilian Portuguese data files: João Sebastião de Oliveira Bueno
|
||||
<email>gwidion@mpc.com.br
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Catalan data files: Antoni Bella
|
||||
<email>bella5@teleline.es
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Italian data files: Giovanni Venturi
|
||||
<email>jumpyj@tiscali.it
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Dutch data files: Rinse
|
||||
<email>rinse@kde.nl
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Portuguese data files: Pedro Morais
|
||||
<email>morais@kde.org
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Serbian (Cyrillic and Latin) data files: Chusslove Illich
|
||||
<email>chaslav@sezampro.yu
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Slovenian data files: Jure Repinc
|
||||
<email>jlp@holodeck1.com
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Czech data files: Lukáš Tinkl
|
||||
<email>lukas@kde.org
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Tajik data files: Roger Kovacs
|
||||
<email>rkovacs@khujand.org
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Norwegian (Bokmål) data files: Torger Åge Sinnes
|
||||
<email>torg-a-s@online.no
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Hungarian data files: Tamas Szanto
|
||||
<email>tszanto@mol.hu
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Norwegian (Nynorsk) data files: Gaute Hvoslef Kvalnes
|
||||
<email>gaute@verdsveven.com
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Turkish data files: Mehmet Özel
|
||||
<email>mehmet_ozel2003@hotmail.com
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Bulgarian data files: Radostin Radnev
|
||||
<email>radnev@yahoo.com
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Irish (Gaelic) data files: Kevin Patrick Scannell
|
||||
<email>scannell@slu.edu
|
||||
</email></para> </listitem>
|
||||
<listitem><para>Coding help: &Robert.Gogolok;
|
||||
&Robert.Gogolok.mail;</para> </listitem>
|
||||
<listitem><para>Coding help: Benjamin Meyer
|
||||
<email>ben@meyerhome.net</email></para> </listitem>
|
||||
<listitem><para>Code fixes: Lubos Lunàk
|
||||
<email>l.lunak@kde.org</email></para> </listitem>
|
||||
<listitem><para>Code fixes: Albert Astals Cid
|
||||
<email>tsdgeos@terra.es</email></para> </listitem>
|
||||
<listitem><para>Usability study: Celeste Paul
|
||||
<email>seele@obso1337.org</email></para> </listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Documentation copyright 2001-2005 &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;
|
||||
</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
&underFDL; <!-- FDL: do not remove -->
|
||||
&underGPL; <!-- GPL License -->
|
||||
|
||||
</chapter>
|
||||
|
||||
<appendix id="installation">
|
||||
<title>Installation</title>
|
||||
|
||||
<sect1 id="getting-khangman">
|
||||
<title>How to obtain &khangman;</title>
|
||||
|
||||
&install.intro.documentation;
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="compilation">
|
||||
<title>Compilation and installation</title>
|
||||
|
||||
&install.compile.documentation;
|
||||
|
||||
</sect1>
|
||||
</appendix>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes: nil
|
||||
sgml-general-insert-case: lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
-->
|
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 226 KiB |
@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY % English "INCLUDE">
|
||||
]>
|
||||
|
||||
<refentry lang="&language;">
|
||||
<refentryinfo>
|
||||
<title>KDE User's Manual</title>
|
||||
<author><personname><firstname>Ben</firstname><surname>Burton</surname></personname> <email>bab@debian.org</email></author>
|
||||
<date>May 25, 2005</date>
|
||||
<productname>K Desktop Environment</productname>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle><command>khangman</command></refentrytitle>
|
||||
<manvolnum>6</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname><command>khangman</command></refname>
|
||||
<refpurpose>The classical hangman game for KDE</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>khangman</command>
|
||||
<arg choice="opt">KDE Generic Options</arg>
|
||||
<arg choice="opt">Qt Generic Options</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>&khangman; is a game based on the well known hangman game. It is
|
||||
aimed for children 6 and above. It has four levels of difficulty: Animals
|
||||
(animals words), Easy, Medium and Hard.</para><para>A word is picked at
|
||||
random and the letters are hidden. You must guess the word by trying one
|
||||
letter after another. Each time you guess a wrong letter, part of a picture
|
||||
of a hangman is drawn. You must guess the word before getting hanged! You
|
||||
have 10 tries.</para><para>This application is part of the &kde; Edutainment
|
||||
module.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>More detailed user documentation is available from <ulink
|
||||
url="help:/khangman">help:/khangman</ulink>
|
||||
(either enter this <acronym>URL</acronym> into &konqueror;, or run
|
||||
<userinput><command>khelpcenter</command>
|
||||
<parameter>help:/khangman</parameter></userinput>).</para>
|
||||
|
||||
<para>There is also further information available at the <ulink url="http://edu.kde.org/khangman/">&kde; Edutainment web site</ulink>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Authors</title>
|
||||
<para>&khangman; was written by <personname><firstname>Primoz</firstname><surname>Anzur</surname></personname> and &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;</para>
|
||||
<para>This manual page based on the one prepared by <personname><firstname>Ben</firstname><surname>Burton</surname></personname> for the Debian project.</para>
|
||||
|
||||
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,5 @@
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
KDE_MANS = AUTO
|
||||
|
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,998 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN"
|
||||
"dtd/kdex.dtd" [
|
||||
<!ENTITY kseg "<application>KSeg</application>">
|
||||
<!ENTITY cabri "<application>Cabri</application>">
|
||||
<!ENTITY drgeo "<application>Dr.Geo</application>">
|
||||
<!ENTITY package "kdeedu">
|
||||
<!ENTITY kappname "&kig;">
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE">
|
||||
<!-- change language only here -->
|
||||
]
|
||||
>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
<bookinfo>
|
||||
<title>The &kig; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Dominique</firstname> <surname>Devriese</surname>
|
||||
<affiliation>
|
||||
<address><email>devriese@kde.org</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
</authorgroup>
|
||||
|
||||
|
||||
<copyright>
|
||||
<year>2002</year><year>2003</year><year>2004</year> <holder>Dominique
|
||||
Devriese</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<date>2005-08-20</date> <releaseinfo>0.10.5</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
&kig; is a &kde; application for Interactive Geometry.
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>KDE-Edu</keyword>
|
||||
<keyword>Kig</keyword>
|
||||
<keyword>Interactive Geometry</keyword>
|
||||
<keyword>KGeo</keyword>
|
||||
<keyword>Cabri</keyword>
|
||||
<keyword>Dr.Geo</keyword>
|
||||
<keyword>KSeg</keyword>
|
||||
</keywordset>
|
||||
</bookinfo>
|
||||
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>
|
||||
&kig; is an application for Interactive Geometry. It's intended
|
||||
to serve two purposes:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para> Allow students to interactively explore
|
||||
mathematical figures and concepts using the computer.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para> Serve as a <acronym>WYSIWYG</acronym> tool for
|
||||
drawing mathematical figures and including them in other
|
||||
documents.</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
You can report problems in &kig; using the internal bug
|
||||
reporting tool
|
||||
(<menuchoice><guimenu>Help</guimenu><guimenuitem>Report
|
||||
Bug...</guimenuitem></menuchoice>), or just contact me at
|
||||
<email>toscano.pino@tiscali.it</email>.
|
||||
</para>
|
||||
<para>
|
||||
Since &kig; supports macros and the construction of locuses, it allows for
|
||||
some
|
||||
rather advanced macros to be defined. If you have created an
|
||||
interesting macro, which you think might be useful for other
|
||||
people, please mail it to me at
|
||||
<email>toscano.pino@tiscali.it</email>, so I can include it in the
|
||||
distribution (if you do this, it will be licensed under the
|
||||
terms of &kig;'s license, the <ulink
|
||||
url="http://www.gnu.org/licenses/licenses.html#GPL">GPL</ulink>,
|
||||
so that other people can freely use and adapt it).
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="using-kig-basic">
|
||||
<title>Basic usage</title>
|
||||