summaryrefslogtreecommitdiffstats
path: root/app_templates
diff options
context:
space:
mode:
Diffstat (limited to 'app_templates')
-rw-r--r--app_templates/kcontrol_module/AUTHORS1
-rw-r--r--app_templates/kcontrol_module/COPYING340
-rw-r--r--app_templates/kcontrol_module/ChangeLog0
-rw-r--r--app_templates/kcontrol_module/INSTALL43
-rw-r--r--app_templates/kcontrol_module/MANIFEST.in6
-rw-r--r--app_templates/kcontrol_module/NEWS0
-rw-r--r--app_templates/kcontrol_module/README0
-rw-r--r--app_templates/kcontrol_module/TODO0
-rw-r--r--app_templates/kcontrol_module/doc/en/index.docbook555
-rw-r--r--app_templates/kcontrol_module/po/README1
-rwxr-xr-xapp_templates/kcontrol_module/setup.py32
-rw-r--r--app_templates/kcontrol_module/src/KcontrolModuleWidgetUI.ui33
-rw-r--r--app_templates/kcontrol_module/src/hi16-app-kcontrol_module.png8
-rw-r--r--app_templates/kcontrol_module/src/hi32-app-kcontrol_module.png26
-rw-r--r--app_templates/kcontrol_module/src/kcontrol_module.desktop15
-rw-r--r--app_templates/kcontrol_module/src/kcontrol_module.lsm16
-rwxr-xr-xapp_templates/kcontrol_module/src/kcontrol_module.py166
-rw-r--r--app_templates/kdeapp/AUTHORS1
-rw-r--r--app_templates/kdeapp/COPYING340
-rw-r--r--app_templates/kdeapp/ChangeLog0
-rw-r--r--app_templates/kdeapp/INSTALL43
-rw-r--r--app_templates/kdeapp/MANIFEST.in6
-rw-r--r--app_templates/kdeapp/NEWS0
-rw-r--r--app_templates/kdeapp/README0
-rw-r--r--app_templates/kdeapp/TODO0
-rw-r--r--app_templates/kdeapp/doc/en/index.docbook555
-rw-r--r--app_templates/kdeapp/po/README1
-rwxr-xr-xapp_templates/kdeapp/setup.py30
-rw-r--r--app_templates/kdeapp/src/hi16-app-kdeapp.png8
-rw-r--r--app_templates/kdeapp/src/hi32-app-kdeapp.png26
-rw-r--r--app_templates/kdeapp/src/kdeapp.desktop35
-rw-r--r--app_templates/kdeapp/src/kdeapp.lsm16
-rwxr-xr-xapp_templates/kdeapp/src/kdeapp.py280
-rw-r--r--app_templates/kdeapp/src/kdeappiface.py26
-rw-r--r--app_templates/kdeapp/src/kdeappui.rc8
-rw-r--r--app_templates/kdeapp/src/kdeappview.py91
-rw-r--r--app_templates/kdeapp/src/prefdialog.py53
-rw-r--r--app_templates/kdeutility/AUTHORS1
-rw-r--r--app_templates/kdeutility/COPYING340
-rw-r--r--app_templates/kdeutility/ChangeLog0
-rw-r--r--app_templates/kdeutility/INSTALL43
-rw-r--r--app_templates/kdeutility/MANIFEST.in6
-rw-r--r--app_templates/kdeutility/NEWS0
-rw-r--r--app_templates/kdeutility/README0
-rw-r--r--app_templates/kdeutility/TODO0
-rw-r--r--app_templates/kdeutility/doc/en/index.docbook555
-rw-r--r--app_templates/kdeutility/po/README1
-rwxr-xr-xapp_templates/kdeutility/setup.py31
-rw-r--r--app_templates/kdeutility/src/KDEUtilityDialogUI.ui33
-rw-r--r--app_templates/kdeutility/src/hi16-app-kdeutility.png8
-rw-r--r--app_templates/kdeutility/src/hi32-app-kdeutility.png26
-rw-r--r--app_templates/kdeutility/src/kdeutility.desktop35
-rw-r--r--app_templates/kdeutility/src/kdeutility.lsm16
-rwxr-xr-xapp_templates/kdeutility/src/kdeutility.py51
-rw-r--r--app_templates/kioslave/AUTHORS1
-rw-r--r--app_templates/kioslave/COPYING340
-rw-r--r--app_templates/kioslave/ChangeLog0
-rw-r--r--app_templates/kioslave/INSTALL43
-rw-r--r--app_templates/kioslave/MANIFEST.in6
-rw-r--r--app_templates/kioslave/NEWS0
-rw-r--r--app_templates/kioslave/README0
-rw-r--r--app_templates/kioslave/TODO0
-rw-r--r--app_templates/kioslave/doc/en/index.docbook555
-rwxr-xr-xapp_templates/kioslave/setup.py30
-rw-r--r--app_templates/kioslave/src/kioslave.lsm16
-rw-r--r--app_templates/kioslave/src/kioslave.protocol13
-rwxr-xr-xapp_templates/kioslave/src/kioslave.py618
67 files changed, 5529 insertions, 0 deletions
diff --git a/app_templates/kcontrol_module/AUTHORS b/app_templates/kcontrol_module/AUTHORS
new file mode 100644
index 0000000..0463c0d
--- /dev/null
+++ b/app_templates/kcontrol_module/AUTHORS
@@ -0,0 +1 @@
+$AUTHOR$ <$EMAIL$>
diff --git a/app_templates/kcontrol_module/COPYING b/app_templates/kcontrol_module/COPYING
new file mode 100644
index 0000000..c13faf0
--- /dev/null
+++ b/app_templates/kcontrol_module/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/app_templates/kcontrol_module/ChangeLog b/app_templates/kcontrol_module/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kcontrol_module/ChangeLog
diff --git a/app_templates/kcontrol_module/INSTALL b/app_templates/kcontrol_module/INSTALL
new file mode 100644
index 0000000..b94cd85
--- /dev/null
+++ b/app_templates/kcontrol_module/INSTALL
@@ -0,0 +1,43 @@
+Basic Installation
+==================
+These are generic installation instructions.
+
+This software uses the Python language's distutils system for installation.
+A detailed guide for users and system administrators to using distutils to
+install software can be found here:
+
+ http://docs.python.org/inst/inst.html
+
+The simplest way to install this software is to run the following command as
+the root user:
+
+ python setup.py install
+
+The setup.py script will automatically detect the directories to use for
+documentation, binaries and other software files.
+
+
+Uninstallation
+==============
+During installation setup.py creates list of files and directories that
+were installed in a file called install_log.txt.
+
+ python setup.py uninstall
+
+
+Installing into an alternate root
+=================================
+For packaging purposes it is often very useful to be able to install all files
+relative not to the usual root directory (/) but into an alternative
+directory.
+
+ python setup.py install --root=/tmp/alternativeroot/
+
+
+Operation Controls
+==================
+--verbose
+ Print more information about what setup.py is doing.
+
+--help
+ Print a summary of the options to setup.py, and exit.
diff --git a/app_templates/kcontrol_module/MANIFEST.in b/app_templates/kcontrol_module/MANIFEST.in
new file mode 100644
index 0000000..c2dde3f
--- /dev/null
+++ b/app_templates/kcontrol_module/MANIFEST.in
@@ -0,0 +1,6 @@
+recursive-include doc *.docbook *.png
+recursive-include po *.po *.pot
+include AUTHORS ChangeLog COPYING INSTALL MANIFEST.in NEWS README TODO
+global-include *.desktop *.py *.ui *.png *.lsm
+global-exclude *~ .svn
+global-exclude *~ .cvs
diff --git a/app_templates/kcontrol_module/NEWS b/app_templates/kcontrol_module/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kcontrol_module/NEWS
diff --git a/app_templates/kcontrol_module/README b/app_templates/kcontrol_module/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kcontrol_module/README
diff --git a/app_templates/kcontrol_module/TODO b/app_templates/kcontrol_module/TODO
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kcontrol_module/TODO
diff --git a/app_templates/kcontrol_module/doc/en/index.docbook b/app_templates/kcontrol_module/doc/en/index.docbook
new file mode 100644
index 0000000..325987f
--- /dev/null
+++ b/app_templates/kcontrol_module/doc/en/index.docbook
@@ -0,0 +1,555 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY appname "<application>MyApplicaition 0.1</application>">
+ <!ENTITY kappname "&appname;"><!-- Do *not* replace kappname-->
+ <!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc -->
+ <!ENTITY % addindex "IGNORE">
+ <!ENTITY % English "INCLUDE"><!-- change language only here -->
+
+
+ <!-- Do not define any other entities; instead, use the entities
+ from kde-genent.entities and $LANG/user.entities. -->
+]>
+<!-- kdoctemplate v0.8 October 1 1999
+ Minor update to "Credits and Licenses" section on August 24, 2000
+ Removed "Revision history" section on 22 January 2001
+ Changed to Installation/Help menu entities 18 October 2001
+ Other minor cleanup and changes 18 October 2001 -->
+
+
+<!--
+This template was designed by: David Rugge davidrugge@mindspring.com
+with lots of help from: Eric Bischoff ebisch@cybercable.tm.fr
+and Frederik Fouvry fouvry@sfs.nphil.uni-tuebingen.de
+of the KDE DocBook team.
+
+You may freely use this template for writing any sort of KDE documentation.
+If you have any changes or improvements, please let us know.
+
+Remember:
+- in XML, the case of the <tags> and attributes is relevant ;
+- also, quote all attributes.
+
+Please don't forget to remove all these comments in your final documentation,
+thanks ;-).
+-->
+
+<!-- ................................................................ -->
+
+<!-- The language must NOT be changed here. -->
+
+<book lang="&language;">
+
+<!-- This header contains all of the meta-information for the document such
+as Authors, publish date, the abstract, and Keywords -->
+
+<bookinfo>
+<title>The &appname; Handbook</title>
+
+<authorgroup>
+<author>
+<firstname></firstname>
+<othername></othername>
+<surname>%{AUTHOR}</surname>
+<affiliation>
+<address><email>%{EMAIL}</email></address>
+</affiliation>
+</author>
+</authorgroup>
+
+<!-- TRANS:ROLES_OF_TRANSLATORS -->
+
+<copyright>
+<year>1999</year>
+<year>%{YEAR}</year>
+<holder>%{AUTHOR}</holder>
+</copyright>
+<!-- Translators: put here the copyright notice of the translation -->
+<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
+ and in the FDL itself on how to use it. -->
+<legalnotice>&FDLNotice;</legalnotice>
+
+<!-- Date and version information of the documentation
+Don't forget to include this last date and this last revision number, we
+need them for translation coordination !
+Please respect the format of the date (YYYY-MM-DD) and of the version
+(V.MM.LL), it could be used by automation scripts.
+Do NOT change these in the translation. -->
+
+<date>2001-10-18</date>
+<releaseinfo>%{VERSION}</releaseinfo>
+
+<!-- Abstract about this handbook -->
+
+<abstract>
+<para>
+&appname; is an application specially designed to do nothing you would
+ever want.
+</para>
+</abstract>
+
+<!-- This is a set of Keywords for indexing by search engines.
+Please at least include KDE, the KDE package it is in, the name
+ of your application, and a few relevant keywords. -->
+
+<keywordset>
+<keyword>KDE</keyword>
+<keyword>%{APPNAME}</keyword>
+<keyword>nothing</keyword>
+<keyword>nothing else</keyword>
+</keywordset>
+
+</bookinfo>
+
+<!-- The contents of the documentation begin here. Label
+each chapter so with the id attribute. This is necessary for two reasons: it
+allows you to easily reference the chapter from other chapters of your
+document, and if there is no ID, the name of the generated HTML files will vary
+from time to time making it hard to manage for maintainers and for the CVS
+system. Any chapter labelled (OPTIONAL) may be left out at the author's
+discretion. Other chapters should not be left out in order to maintain a
+consistent documentation style across all KDE apps. -->
+
+<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>
+&appname; is a program that lets you do absolutely nothing. Please report
+any problems or feature requests to the &kde; mailing lists.
+</para>
+</chapter>
+
+<chapter id="using-appname">
+<title>Using &appname;</title>
+
+<!-- This chapter should tell the user how to use your app. You should use as
+many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
+your application. -->
+
+<para>
+
+<!-- Note that all graphics should be in .png format. Use no gifs because of
+patent issues. -->
+
+<screenshot>
+<screeninfo>Here's a screenshot of &appname;</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshot.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="screenshot.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Screenshot</phrase>
+ </textobject>
+ </mediaobject>
+</screenshot>
+</para>
+
+
+<sect1 id="appname-features">
+<title>More &appname; features</title>
+
+<para>It slices! It dices! and it comes with a free toaster!</para>
+<para>
+The Squiggle Tool <guiicon><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="squiggle.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="squiggle.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Squiggle</phrase>
+ </textobject>
+</inlinemediaobject></guiicon> is used to draw squiggly lines all over
+the &appname; main window. It's not a bug, it's a feature!
+</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="appname-mainwindow">
+<title>The main &appname; window</title>
+
+<sect2>
+<title>The File Menu</title>
+<para>
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>New</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Creates a new document</action></para></listitem>
+</varlistentry>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>Save</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Saves the document</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> &appname;</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 -->
+<!-- &appname;, 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="developers">
+<title>Developer's Guide to &appname;</title>
+
+<!-- (OPTIONAL) A Programming/Scripting reference chapter should be
+used for apps that use plugins or that provide their own scripting hooks
+and/or development libraries. -->
+
+<para>
+Programming &appname; plugins is a joy to behold. Just read through the next
+66 pages of API's to learn how!
+</para>
+
+<!-- Use refentries to describe APIs. Refentries are fairly complicated and you
+should consult the docbook reference for further details. The example below was
+taken from that reference and shortened a bit for readability. -->
+
+<refentry id="re-1007-unmanagechildren-1">
+<refmeta>
+<refentrytitle>XtUnmanageChildren</refentrytitle>
+<refmiscinfo>Xt - Geometry Management</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XtUnmanageChildren
+</refname>
+<refpurpose>remove a list of children from a parent widget's managed
+list.
+<indexterm id="ix-1007-unmanagechildren-1"><primary>widgets</primary><secondary>removing</secondary></indexterm>
+<indexterm id="ix-1007-unmanagechildren-2"><primary>XtUnmanageChildren</primary></indexterm>
+</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv>
+<refsynopsisdivinfo>
+<date>4 March 1996</date>
+</refsynopsisdivinfo>
+<synopsis>
+void XtUnmanageChildren(<replaceable class="parameter">children</replaceable>, <replaceable class="parameter">num_children</replaceable>)
+ WidgetList <replaceable class="parameter">children</replaceable>;
+ Cardinal <replaceable class="parameter">num_children</replaceable>;
+</synopsis>
+
+<refsect2 id="r2-1007-unmanagechildren-1">
+<title>Inputs</title>
+<variablelist>
+<varlistentry>
+<term><replaceable class="parameter">children</replaceable>
+</term>
+<listitem>
+<para>Specifies an array of child widgets. Each child must be of
+class RectObj or any subclass thereof.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><replaceable class="parameter">num_children</replaceable>
+</term>
+<listitem>
+<para>Specifies the number of elements in <replaceable class="parameter">children</replaceable>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refsect2></refsynopsisdiv>
+
+<refsect1 id="r1-1007-unmanagechildren-1">
+<title>Description
+</title>
+<para><function>XtUnmanageChildren()</function> unmaps the specified widgets
+and removes them from their parent's geometry management.
+The widgets will disappear from the screen, and (depending
+on its parent) may no longer have screen space allocated for
+them.
+</para>
+<para>Each of the widgets in the <replaceable class="parameter">children</replaceable> array must have
+the same parent.
+</para>
+<para>See the &ldquo;Algorithm&rdquo; section below for full details of the
+widget unmanagement procedure.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-2">
+<title>Usage</title>
+<para>Unmanaging widgets is the usual method for temporarily
+making them invisible. They can be re-managed with
+<function>XtManageChildren()</function>.
+</para>
+<para>You can unmap a widget, but leave it under geometry
+management by calling <function>XtUnmapWidget()</function>. You can
+destroy a widget's window without destroying the widget by
+calling <function>XtUnrealizeWidget()</function>. You can destroy a
+widget completely with <function>XtDestroyWidget()</function>.
+</para>
+<para>If you are only going to unmanage a single widget, it is
+more convenient to call <function>XtUnmanageChild()</function>. It is
+often more convenient to call <function>XtUnmanageChild()</function>
+several times than it is to declare and initialize an array
+of widgets to pass to <function>XtUnmanageChildren()</function>. Calling
+<function>XtUnmanageChildren()</function> is more efficient, however,
+because it only calls the parent's <function>change_managed()</function>
+method once.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-3">
+<title>Algorithm
+</title>
+<para><function>XtUnmanageChildren()</function> performs the following:
+</para>
+<variablelist>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Ignores the child if it already is unmanaged or is being
+destroyed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Otherwise, if the child is realized, it makes it nonvisible
+by unmapping it.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-4">
+<title>Structures</title>
+<para>The <type>WidgetList</type> type is simply an array of widgets:
+</para>
+<screen id="sc-1007-unmanagechildren-1">typedef Widget *WidgetList;
+</screen>
+</refsect1>
+</refentry>
+
+</chapter>
+
+<chapter id="faq">
+<title>Questions and Answers</title>
+
+<!-- (OPTIONAL but recommended) This chapter should include all of the silly
+(and not-so-silly) newbie questions that fill up your mailbox. This chapter
+should be reserved for BRIEF questions and answers! If one question uses more
+than a page or so then it should probably be part of the
+"Using this Application" chapter instead. You should use links to
+cross-reference questions to the parts of your documentation that answer them.
+This is also a great place to provide pointers to other FAQ's if your users
+must do some complicated configuration on other programs in order for your
+application work. -->
+
+&reporting.bugs;
+&updating.documentation;
+
+<qandaset id="faqlist">
+<qandaentry>
+<question>
+<para>My Mouse doesn't work. How do I quit &appname;?</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 can't I 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>
+&appname;
+</para>
+<para>
+Program copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+<para>
+Contributors:
+<itemizedlist>
+<listitem><para>Konqui the KDE Dragon <email>konqui@kde.org</email></para>
+</listitem>
+<listitem><para>Tux the Linux Penguin <email>tux@linux.org</email></para>
+</listitem>
+</itemizedlist>
+</para>
+
+<para>
+Documentation copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+
+<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
+
+&underFDL; <!-- FDL: do not remove -->
+
+<!-- Determine which license your application is licensed under,
+ and delete all the remaining licenses below:
+
+ (NOTE: All documentation are licensed under the FDL,
+ regardless of what license the application uses) -->
+
+&underGPL; <!-- GPL License -->
+&underBSDLicense; <!-- BSD License -->
+&underArtisticLicense; <!-- BSD Artistic License -->
+&underX11License; <!-- X11 License -->
+
+</chapter>
+
+<appendix id="installation">
+<title>Installation</title>
+
+<sect1 id="getting-appname">
+<title>How to obtain &appname;</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="requirements">
+<title>Requirements</title>
+
+<!--
+List any special requirements for your application here. This should include:
+.Libraries or other software that is not included in kdesupport,
+kdelibs, or kdebase.
+.Hardware requirements like amount of RAM, disk space, graphics card
+capabilities, screen resolution, special expansion cards, etc.
+.Operating systems the app will run on. If your app is designed only for a
+specific OS, (you wrote a graphical LILO configurator for example) put this
+information here.
+-->
+
+<para>
+In order to successfully use &appname;, you need &kde; 1.1. Foobar.lib is
+required in order to support the advanced &appname; features. &appname; uses
+about 5 megs of memory to run, but this may vary depending on your
+platform and configuration.
+</para>
+
+<para>
+All required libraries as well as &appname; itself can be found
+on <ulink url="ftp://ftp.appname.org">The &appname; home page</ulink>.
+</para>
+
+<!-- For a list of updates, you may refer to the application web site
+or the ChangeLog file, or ... -->
+<para>
+You can find a list of changes at <ulink
+url="http://apps.kde.org/appname">http://apps.kde.org/appname</ulink>.
+</para>
+</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>
+
+<sect1 id="configuration">
+<title>Configuration</title>
+
+<para>Don't forget to tell your system to start the <filename>dtd</filename>
+dicer-toaster daemon first, or &appname; won't work !</para>
+
+</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:tabstop=2:shiftwidth=2:expandtab
+-->
+
diff --git a/app_templates/kcontrol_module/po/README b/app_templates/kcontrol_module/po/README
new file mode 100644
index 0000000..0e18f16
--- /dev/null
+++ b/app_templates/kcontrol_module/po/README
@@ -0,0 +1 @@
+.pot and .pot translation files should be placed here.
diff --git a/app_templates/kcontrol_module/setup.py b/app_templates/kcontrol_module/setup.py
new file mode 100755
index 0000000..6741051
--- /dev/null
+++ b/app_templates/kcontrol_module/setup.py
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+###########################################################################
+# setup - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : YOUR@EMAIL.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import kdedistutils
+
+kdedistutils.setup(name="kcontrol_module",
+ version="0.1.0",
+ author="AUTHOR",
+ author_email="YOUR@EMAIL.com",
+ url="http://www.TESTAPP.com/",
+ min_kde_version = "3.0.0",
+ min_qt_version = "3.0.0",
+ license = "GPL",
+ application_data = ['src/kcontrol_module.py','src/KcontrolModuleWidgetUI.ui'],
+ executable_links = [('kcontrol_module','kcontrol_module.py')],
+ docbooks = [ ('doc/en','en') ],
+ i18n = ('po',['src']),
+ kcontrol_modules = [ ('src/kcontrol_module.desktop','kcontrol_module.py')] )
diff --git a/app_templates/kcontrol_module/src/KcontrolModuleWidgetUI.ui b/app_templates/kcontrol_module/src/KcontrolModuleWidgetUI.ui
new file mode 100644
index 0000000..4ff94d7
--- /dev/null
+++ b/app_templates/kcontrol_module/src/KcontrolModuleWidgetUI.ui
@@ -0,0 +1,33 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>KcontrolModuleWidgetUI</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>KcontrolModuleWidgetUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Congratulations, Kcontrol_module template application is working!</string>
+ </property>
+ </widget>
+ </hbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/app_templates/kcontrol_module/src/hi16-app-kcontrol_module.png b/app_templates/kcontrol_module/src/hi16-app-kcontrol_module.png
new file mode 100644
index 0000000..40fe05e
--- /dev/null
+++ b/app_templates/kcontrol_module/src/hi16-app-kcontrol_module.png
@@ -0,0 +1,8 @@
+‰PNG
+
+
+IHDR
+¸àÿ5Ñ M¼ZŒñfθ92@³
+–é2w”l†A;Àv“c)‡\)¬…/l Fö\ÿžÏ“ß÷ù~ŸžSöŒüXºÅ¦©=t jÊ76ºþ{rumuüê­_Š€% ¾ñ}Êfb{ñZéöRdYÁ7éC2ÊTWÕ“¦Ó²ã³O>ÍfX²GØȵæÆ,F‹&/#x<Ž&Pµ·%]E«ÉÜ–C®f U¥ÕS¿»ïä
+"Öl+²*±²²Jã»Ç°˜M¨ªJde…­Ù9Hz]—qTÖPòBÉIÀ×
+ÙÝ}±¦ÂQ±˜•—‰ ¤bRˆ¢³ªÒÛ÷€ ï]ánv–ïbf,Àûƒøçü:ÀLÑdÖ4€íPuCÀ ÊÔ7ÔòAK ÷\ýô^¿ÏŸ=.~¾ö¡åÐ|ÙŽ2³wÄË|x¾ðw’ÎN†Vd/RKë‡ç6¼Æý+÷øæôɤ°¡ÄôÔĦú7fmcú5€ hr¬96“MŠD#xÆ=IaûÞ‚OHxcú7=# “U¦DæoVÏi
diff --git a/app_templates/kcontrol_module/src/hi32-app-kcontrol_module.png b/app_templates/kcontrol_module/src/hi32-app-kcontrol_module.png
new file mode 100644
index 0000000..8a6093e
--- /dev/null
+++ b/app_templates/kcontrol_module/src/hi32-app-kcontrol_module.png
@@ -0,0 +1,26 @@
+‰PNG
+
+
+IHDR
+:IDATxœ¥—{Œ\Õ}Ç?wîyÜ;;ûðâ}`¯õ®×k̲~&Žq¥R- H£„Gpk
+PPJ£&(
+´J¥¨EQþ©Ú4Iq QDHC~D6ØÂBص—×®ÙµÙÇÎÌ™;Ï;Ó?f½1µ i{¤£«+]ï÷œóý}¿¿kö_åòB”«e,Ë¢3²„Ö–6”TضÍ3'Ÿ``ÙÀIe«m=½½¹§ü´ý‰¯}›j ´¢^«w™O<wìYë¯þkV_Ý˺˜xå,“¯MðÏ?ý.½½‹x!þ—c¤ÄŒôlÛ8¼‘ÕÞvßßoZ—¶ó÷ßÿ¿;ퟙ<“ØrÝVöí¾ÍŒOŽ›»>ÿ™\Oü¾Àõz‘U#fhÅa7Œë†YÒÙI5¨rì—‡ÍÉÇùøµŸ@¹[
+>±u;µj¿ùÛoš¯íQk╳ÿ?ç¢çÌÚ•kq×
+£…-­ít/ïE(‰tB ¤£06 Ñse_¸û€ù·ýžõ¥?ºÿ²u­ÿ©7Þ»ì£ÑQ3¼r)%‘H+B
+ŒÖŽ6´ë²CHW£ØRШ7ؾk33³ÌM¾Ïá_<dzGf¬XºbqíÕÀ@ï€YӷƬ\oÖ­Z‡ã8„B!</MP X½i-õzƒJ©ŒÐ§ÅA(AHØHGáD\æfcTJeÊùkV ³aõ lñÛYkÔ/¼rÐ õ
+á:.®ãbŒ¡X,ò©[w²sï „ åyh­)
+¼tè†Á–¢©a#” •H㶸äÓ>gÆ~ÃSo
+“/äY58È—¿õç$ÓiÆÆßÄÏøTJjA
+€5›†¹0ù>
+n¼å“ÜtçMt?±€çgj|’#O=‹]»žùd۶ȕr(¥Á¯ß±¿z'N½Œ—ÌÏä)ûE
+™<A±BP®0ùê[,íëfåÕýTƒR ¤Va#¥ ªø¦ÀÃ_yˆ‡ÿâ3zõ&Ë›K‘ÍgAP¡T…Bcp—°nŠoó&þô+÷ðËN’IfðS9ò©~*KÎË’ñÒŒMŽQ(˜MͲÿ‹÷²ãSŸFHA(d¡”Dj…m‡B`Œaï­·òÝïü£¹fhÔõzî¥Ý
+c Ó³
+PJ¢±8^*K.£àù³
+žOP š>²ìå(Â--H­°, ©$•R…j9 Ÿõ‰'¢$²‰¢–šz£Ž1†C/¼ÀÎ;8üâ >ô|pó-ûÁ¥°ÑZ“ÉfñRY¼x?™%7Ÿ!—Îà%ÓÄçc+EĪѡœmÛmbáî¤#Iœ3xÍ A©BÑÏ3vnœF£Ñ4š¬£óqvîØÀSÿãíÏßu§B •BIT
+G)²^sç~*G&šb~.N46Ç©3§Hù©³ÀHèÀý_lÏ»%êµ:Ò‘¸m-dbi\×Å
+YTÊR~
+À3Æ`ŒáÊ®
+¹±x”S§(WË–eYÕÅ,8òäa{âQnÛ÷¹fí*±0%á¶þðö›I—Ó]
+¨Uöܲ!ìEg»(6-›¡ã:.JJ”T´EZ ªÇ^:E$â²rÝÀbâj¡q¥K*—"¬ÂÍ–L\
+i#¤h†‡h-ÂÆ–M[½èérá½µ¥Gkå eóØíTN¾ršb¾H6•Å‰¸ô/ë ? h°e3Šµ«éìZ‚‚B¾ˆTÍl—²*J6½])…‚ÙX ?—ÇC{Gë¯ZG½QçĽL¹T!›Ê’MdÈDS´/YÀµC×^š]M[?~£õîô›æÎ/ÜE,ž T(á¸BØ\¬oÛ¡ìÕ²,¦¦Ïãg}ò™<¥| Óh0ñú[,_µŒ H'<ò©Ù¸G*–À5W¹fIë’¤§õ½¤ZX·yÿåßÍõ×m¥œ/áÍ%ÙuûMTk5¤X¡aÇEkÅÔô éd¦ép©…´O¥Øô·µ…eÃ+(Ê$gb¤ãó\8žã¯Ç/ù
+›·†l!0µZW'^]ì,ËâÿBâwؼzõFƒî%Ýöž9-¥Þ+Ú® ÑhΧ±,«ÙðòÞbøûŽÿìl€\l4f7
diff --git a/app_templates/kcontrol_module/src/kcontrol_module.desktop b/app_templates/kcontrol_module/src/kcontrol_module.desktop
new file mode 100644
index 0000000..f0381c5
--- /dev/null
+++ b/app_templates/kcontrol_module/src/kcontrol_module.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Name=Kcontrol module
+Name[en]=Kcontrol module
+name[en_GB]=Kcontrol module
+Comment=Kcontrol module template
+Comment[en]=Kcontrol module template
+Comment[en_GB]=Kcontrol module template
+Icon=daemons.png
+X-KDE-ModuleType=Library
+X-KDE-Library=kcontrol_module
+X-KDE-FactoryName=kcontrol_module
+X-KDE-RootOnly=false
+Type=Application
+Exec=kcmshell kcontrol_module
+Categories=QT;KDE;X-KDE-settings-system;
diff --git a/app_templates/kcontrol_module/src/kcontrol_module.lsm b/app_templates/kcontrol_module/src/kcontrol_module.lsm
new file mode 100644
index 0000000..43d0d5f
--- /dev/null
+++ b/app_templates/kcontrol_module/src/kcontrol_module.lsm
@@ -0,0 +1,16 @@
+Begin3
+Title: $APPNAME$ -- Some description
+Version: $VERSION$
+Entered-date:
+Description:
+Keywords: KDE Qt
+Author: $AUTHOR$ <$EMAIL$>
+Maintained-by: $AUTHOR$ <$EMAIL$>
+Home-page:
+Alternate-site:
+Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
+ xxxxxx $APPNAMELC$-$VERSION$.tar.gz
+ xxx $APPNAMELC$-$VERSION$.lsm
+Platform: Linux. Needs KDE
+Copying-policy: $LICENSE$
+End
diff --git a/app_templates/kcontrol_module/src/kcontrol_module.py b/app_templates/kcontrol_module/src/kcontrol_module.py
new file mode 100755
index 0000000..b435287
--- /dev/null
+++ b/app_templates/kcontrol_module/src/kcontrol_module.py
@@ -0,0 +1,166 @@
+#!/usr/bin/python
+###########################################################################
+# kcontrol_module - description #
+# ------------------------------ #
+# begin : Mon May 2 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import sys
+from qt import *
+from kdecore import *
+from kdeui import *
+
+import kdedesigner
+from KcontrolModuleWidgetUI import *
+
+description = "A Kcontrol module"
+version = "0.1"
+
+############################################################################
+def AboutData():
+ global version,description
+
+ about_data = KAboutData("kcontrol_module", "kcontrol_module", version, \
+ description, KAboutData.License_GPL, "(C) 2005 AUTHOR", None, None,\
+ "your@email.com")
+ about_data.addAuthor("AUTHOR", None, "your@email.com")
+ return about_data
+
+############################################################################
+class KcontrolModuleWidget(KcontrolModuleWidgetUI):
+ def __init__(self,parent=None):
+ KcontrolModuleWidgetUI.__init__(self,parent,"Kcontrol module")
+ # Add other methods, slots and signals here.
+
+############################################################################
+# The base class that we use depends on whether this is running inside
+# kcontrol or as a standalone application.
+# Are we running as a separate standalone application or in KControl?
+standalone = __name__=='__main__'
+
+if standalone:
+ programbase = KDialogBase
+else:
+ programbase = KCModule
+
+class KcontrolModuleApp(programbase):
+ ########################################################################
+ def __init__(self,parent=None,name=None):
+ global standalone
+ if standalone:
+ KDialogBase.__init__(self,KJanusWidget.Plain,"Kcontrol module",KDialogBase.User1|KDialogBase.Close, KDialogBase.Close)
+ self.setButtonText(KDialogBase.User1,"About")
+ else:
+ KCModule.__init__(self,parent,name)
+ # Create a configuration object.
+ self.config = KConfig("kcontrol_module")
+ self.setButtons(0)
+ self.aboutdata = AboutData()
+
+ # The appdir needs to be explicitly otherwise we won't be able to
+ # load our icons and images.
+ KGlobal.iconLoader().addAppDir("kcontrol_module")
+
+ if standalone:
+ toplayout = QVBoxLayout( self.plainPage(), 0, KDialog.spacingHint() )
+ mainwidget = KcontrolModuleWidget(self.plainPage())
+ else:
+ toplayout = QVBoxLayout( self, 0, KDialog.spacingHint() )
+ mainwidget = KcontrolModuleWidget(self)
+
+ toplayout.addWidget(mainwidget)
+
+ self.aboutus = KAboutApplication(self)
+
+ ########################################################################
+ def __del__(self):
+ pass
+
+ ########################################################################
+ # KDialogBase method
+ def exec_loop(self):
+ global programbase
+
+ # Load configuration here
+ self.__loadOptions()
+
+ programbase.exec_loop(self)
+
+ # Save configuration here
+ self.__saveOptions()
+
+ ########################################################################
+ # KDialogBase method
+ def slotUser1(self):
+ self.aboutus.show()
+
+ ########################################################################
+ def slotCloseButton(self):
+ self.close()
+
+ ########################################################################
+ def __loadOptions(self):
+ global kapp
+ config = kapp.config()
+ config.setGroup("General")
+ size = config.readSizeEntry("Geometry")
+ if size.isEmpty()==False:
+ self.resize(size)
+
+ #######################################################################
+ def __saveOptions(self):
+ global kapp
+ config = kapp.config()
+ config.setGroup("General")
+ config.writeEntry("Geometry", self.size())
+ config.sync()
+
+ #######################################################################
+ # KControl virtual void methods
+ def load(self):
+ pass
+ def save(self):
+ pass
+ def defaults(self):
+ pass
+ def sysdefaults(self):
+ pass
+
+ def aboutData(self):
+ # Return the KAboutData object which we created during initialisation.
+ return self.aboutdata
+
+ def buttons(self):
+ # Only supply a Help button. Other choices are Default and Apply.
+ return KCModule.Help
+
+############################################################################
+# This is the entry point used when running this module outside of kcontrol.
+def main():
+ global kapp
+ about_data = AboutData()
+ KCmdLineArgs.init(sys.argv,about_data)
+ kapp = KApplication()
+ myapp = KcontrolModuleApp()
+ myapp.exec_loop()
+
+############################################################################
+# Factory function for KControl
+def create_kcontrol_module(parent,name):
+ global kapp
+ kapp = KApplication.kApplication()
+ return KcontrolModuleApp(parent, name)
+
+############################################################################
+if standalone:
+ main()
diff --git a/app_templates/kdeapp/AUTHORS b/app_templates/kdeapp/AUTHORS
new file mode 100644
index 0000000..0463c0d
--- /dev/null
+++ b/app_templates/kdeapp/AUTHORS
@@ -0,0 +1 @@
+$AUTHOR$ <$EMAIL$>
diff --git a/app_templates/kdeapp/COPYING b/app_templates/kdeapp/COPYING
new file mode 100644
index 0000000..c13faf0
--- /dev/null
+++ b/app_templates/kdeapp/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/app_templates/kdeapp/ChangeLog b/app_templates/kdeapp/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeapp/ChangeLog
diff --git a/app_templates/kdeapp/INSTALL b/app_templates/kdeapp/INSTALL
new file mode 100644
index 0000000..b94cd85
--- /dev/null
+++ b/app_templates/kdeapp/INSTALL
@@ -0,0 +1,43 @@
+Basic Installation
+==================
+These are generic installation instructions.
+
+This software uses the Python language's distutils system for installation.
+A detailed guide for users and system administrators to using distutils to
+install software can be found here:
+
+ http://docs.python.org/inst/inst.html
+
+The simplest way to install this software is to run the following command as
+the root user:
+
+ python setup.py install
+
+The setup.py script will automatically detect the directories to use for
+documentation, binaries and other software files.
+
+
+Uninstallation
+==============
+During installation setup.py creates list of files and directories that
+were installed in a file called install_log.txt.
+
+ python setup.py uninstall
+
+
+Installing into an alternate root
+=================================
+For packaging purposes it is often very useful to be able to install all files
+relative not to the usual root directory (/) but into an alternative
+directory.
+
+ python setup.py install --root=/tmp/alternativeroot/
+
+
+Operation Controls
+==================
+--verbose
+ Print more information about what setup.py is doing.
+
+--help
+ Print a summary of the options to setup.py, and exit.
diff --git a/app_templates/kdeapp/MANIFEST.in b/app_templates/kdeapp/MANIFEST.in
new file mode 100644
index 0000000..c2dde3f
--- /dev/null
+++ b/app_templates/kdeapp/MANIFEST.in
@@ -0,0 +1,6 @@
+recursive-include doc *.docbook *.png
+recursive-include po *.po *.pot
+include AUTHORS ChangeLog COPYING INSTALL MANIFEST.in NEWS README TODO
+global-include *.desktop *.py *.ui *.png *.lsm
+global-exclude *~ .svn
+global-exclude *~ .cvs
diff --git a/app_templates/kdeapp/NEWS b/app_templates/kdeapp/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeapp/NEWS
diff --git a/app_templates/kdeapp/README b/app_templates/kdeapp/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeapp/README
diff --git a/app_templates/kdeapp/TODO b/app_templates/kdeapp/TODO
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeapp/TODO
diff --git a/app_templates/kdeapp/doc/en/index.docbook b/app_templates/kdeapp/doc/en/index.docbook
new file mode 100644
index 0000000..325987f
--- /dev/null
+++ b/app_templates/kdeapp/doc/en/index.docbook
@@ -0,0 +1,555 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY appname "<application>MyApplicaition 0.1</application>">
+ <!ENTITY kappname "&appname;"><!-- Do *not* replace kappname-->
+ <!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc -->
+ <!ENTITY % addindex "IGNORE">
+ <!ENTITY % English "INCLUDE"><!-- change language only here -->
+
+
+ <!-- Do not define any other entities; instead, use the entities
+ from kde-genent.entities and $LANG/user.entities. -->
+]>
+<!-- kdoctemplate v0.8 October 1 1999
+ Minor update to "Credits and Licenses" section on August 24, 2000
+ Removed "Revision history" section on 22 January 2001
+ Changed to Installation/Help menu entities 18 October 2001
+ Other minor cleanup and changes 18 October 2001 -->
+
+
+<!--
+This template was designed by: David Rugge davidrugge@mindspring.com
+with lots of help from: Eric Bischoff ebisch@cybercable.tm.fr
+and Frederik Fouvry fouvry@sfs.nphil.uni-tuebingen.de
+of the KDE DocBook team.
+
+You may freely use this template for writing any sort of KDE documentation.
+If you have any changes or improvements, please let us know.
+
+Remember:
+- in XML, the case of the <tags> and attributes is relevant ;
+- also, quote all attributes.
+
+Please don't forget to remove all these comments in your final documentation,
+thanks ;-).
+-->
+
+<!-- ................................................................ -->
+
+<!-- The language must NOT be changed here. -->
+
+<book lang="&language;">
+
+<!-- This header contains all of the meta-information for the document such
+as Authors, publish date, the abstract, and Keywords -->
+
+<bookinfo>
+<title>The &appname; Handbook</title>
+
+<authorgroup>
+<author>
+<firstname></firstname>
+<othername></othername>
+<surname>%{AUTHOR}</surname>
+<affiliation>
+<address><email>%{EMAIL}</email></address>
+</affiliation>
+</author>
+</authorgroup>
+
+<!-- TRANS:ROLES_OF_TRANSLATORS -->
+
+<copyright>
+<year>1999</year>
+<year>%{YEAR}</year>
+<holder>%{AUTHOR}</holder>
+</copyright>
+<!-- Translators: put here the copyright notice of the translation -->
+<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
+ and in the FDL itself on how to use it. -->
+<legalnotice>&FDLNotice;</legalnotice>
+
+<!-- Date and version information of the documentation
+Don't forget to include this last date and this last revision number, we
+need them for translation coordination !
+Please respect the format of the date (YYYY-MM-DD) and of the version
+(V.MM.LL), it could be used by automation scripts.
+Do NOT change these in the translation. -->
+
+<date>2001-10-18</date>
+<releaseinfo>%{VERSION}</releaseinfo>
+
+<!-- Abstract about this handbook -->
+
+<abstract>
+<para>
+&appname; is an application specially designed to do nothing you would
+ever want.
+</para>
+</abstract>
+
+<!-- This is a set of Keywords for indexing by search engines.
+Please at least include KDE, the KDE package it is in, the name
+ of your application, and a few relevant keywords. -->
+
+<keywordset>
+<keyword>KDE</keyword>
+<keyword>%{APPNAME}</keyword>
+<keyword>nothing</keyword>
+<keyword>nothing else</keyword>
+</keywordset>
+
+</bookinfo>
+
+<!-- The contents of the documentation begin here. Label
+each chapter so with the id attribute. This is necessary for two reasons: it
+allows you to easily reference the chapter from other chapters of your
+document, and if there is no ID, the name of the generated HTML files will vary
+from time to time making it hard to manage for maintainers and for the CVS
+system. Any chapter labelled (OPTIONAL) may be left out at the author's
+discretion. Other chapters should not be left out in order to maintain a
+consistent documentation style across all KDE apps. -->
+
+<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>
+&appname; is a program that lets you do absolutely nothing. Please report
+any problems or feature requests to the &kde; mailing lists.
+</para>
+</chapter>
+
+<chapter id="using-appname">
+<title>Using &appname;</title>
+
+<!-- This chapter should tell the user how to use your app. You should use as
+many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
+your application. -->
+
+<para>
+
+<!-- Note that all graphics should be in .png format. Use no gifs because of
+patent issues. -->
+
+<screenshot>
+<screeninfo>Here's a screenshot of &appname;</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshot.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="screenshot.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Screenshot</phrase>
+ </textobject>
+ </mediaobject>
+</screenshot>
+</para>
+
+
+<sect1 id="appname-features">
+<title>More &appname; features</title>
+
+<para>It slices! It dices! and it comes with a free toaster!</para>
+<para>
+The Squiggle Tool <guiicon><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="squiggle.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="squiggle.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Squiggle</phrase>
+ </textobject>
+</inlinemediaobject></guiicon> is used to draw squiggly lines all over
+the &appname; main window. It's not a bug, it's a feature!
+</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="appname-mainwindow">
+<title>The main &appname; window</title>
+
+<sect2>
+<title>The File Menu</title>
+<para>
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>New</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Creates a new document</action></para></listitem>
+</varlistentry>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>Save</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Saves the document</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> &appname;</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 -->
+<!-- &appname;, 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="developers">
+<title>Developer's Guide to &appname;</title>
+
+<!-- (OPTIONAL) A Programming/Scripting reference chapter should be
+used for apps that use plugins or that provide their own scripting hooks
+and/or development libraries. -->
+
+<para>
+Programming &appname; plugins is a joy to behold. Just read through the next
+66 pages of API's to learn how!
+</para>
+
+<!-- Use refentries to describe APIs. Refentries are fairly complicated and you
+should consult the docbook reference for further details. The example below was
+taken from that reference and shortened a bit for readability. -->
+
+<refentry id="re-1007-unmanagechildren-1">
+<refmeta>
+<refentrytitle>XtUnmanageChildren</refentrytitle>
+<refmiscinfo>Xt - Geometry Management</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XtUnmanageChildren
+</refname>
+<refpurpose>remove a list of children from a parent widget's managed
+list.
+<indexterm id="ix-1007-unmanagechildren-1"><primary>widgets</primary><secondary>removing</secondary></indexterm>
+<indexterm id="ix-1007-unmanagechildren-2"><primary>XtUnmanageChildren</primary></indexterm>
+</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv>
+<refsynopsisdivinfo>
+<date>4 March 1996</date>
+</refsynopsisdivinfo>
+<synopsis>
+void XtUnmanageChildren(<replaceable class="parameter">children</replaceable>, <replaceable class="parameter">num_children</replaceable>)
+ WidgetList <replaceable class="parameter">children</replaceable>;
+ Cardinal <replaceable class="parameter">num_children</replaceable>;
+</synopsis>
+
+<refsect2 id="r2-1007-unmanagechildren-1">
+<title>Inputs</title>
+<variablelist>
+<varlistentry>
+<term><replaceable class="parameter">children</replaceable>
+</term>
+<listitem>
+<para>Specifies an array of child widgets. Each child must be of
+class RectObj or any subclass thereof.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><replaceable class="parameter">num_children</replaceable>
+</term>
+<listitem>
+<para>Specifies the number of elements in <replaceable class="parameter">children</replaceable>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refsect2></refsynopsisdiv>
+
+<refsect1 id="r1-1007-unmanagechildren-1">
+<title>Description
+</title>
+<para><function>XtUnmanageChildren()</function> unmaps the specified widgets
+and removes them from their parent's geometry management.
+The widgets will disappear from the screen, and (depending
+on its parent) may no longer have screen space allocated for
+them.
+</para>
+<para>Each of the widgets in the <replaceable class="parameter">children</replaceable> array must have
+the same parent.
+</para>
+<para>See the &ldquo;Algorithm&rdquo; section below for full details of the
+widget unmanagement procedure.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-2">
+<title>Usage</title>
+<para>Unmanaging widgets is the usual method for temporarily
+making them invisible. They can be re-managed with
+<function>XtManageChildren()</function>.
+</para>
+<para>You can unmap a widget, but leave it under geometry
+management by calling <function>XtUnmapWidget()</function>. You can
+destroy a widget's window without destroying the widget by
+calling <function>XtUnrealizeWidget()</function>. You can destroy a
+widget completely with <function>XtDestroyWidget()</function>.
+</para>
+<para>If you are only going to unmanage a single widget, it is
+more convenient to call <function>XtUnmanageChild()</function>. It is
+often more convenient to call <function>XtUnmanageChild()</function>
+several times than it is to declare and initialize an array
+of widgets to pass to <function>XtUnmanageChildren()</function>. Calling
+<function>XtUnmanageChildren()</function> is more efficient, however,
+because it only calls the parent's <function>change_managed()</function>
+method once.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-3">
+<title>Algorithm
+</title>
+<para><function>XtUnmanageChildren()</function> performs the following:
+</para>
+<variablelist>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Ignores the child if it already is unmanaged or is being
+destroyed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Otherwise, if the child is realized, it makes it nonvisible
+by unmapping it.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-4">
+<title>Structures</title>
+<para>The <type>WidgetList</type> type is simply an array of widgets:
+</para>
+<screen id="sc-1007-unmanagechildren-1">typedef Widget *WidgetList;
+</screen>
+</refsect1>
+</refentry>
+
+</chapter>
+
+<chapter id="faq">
+<title>Questions and Answers</title>
+
+<!-- (OPTIONAL but recommended) This chapter should include all of the silly
+(and not-so-silly) newbie questions that fill up your mailbox. This chapter
+should be reserved for BRIEF questions and answers! If one question uses more
+than a page or so then it should probably be part of the
+"Using this Application" chapter instead. You should use links to
+cross-reference questions to the parts of your documentation that answer them.
+This is also a great place to provide pointers to other FAQ's if your users
+must do some complicated configuration on other programs in order for your
+application work. -->
+
+&reporting.bugs;
+&updating.documentation;
+
+<qandaset id="faqlist">
+<qandaentry>
+<question>
+<para>My Mouse doesn't work. How do I quit &appname;?</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 can't I 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>
+&appname;
+</para>
+<para>
+Program copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+<para>
+Contributors:
+<itemizedlist>
+<listitem><para>Konqui the KDE Dragon <email>konqui@kde.org</email></para>
+</listitem>
+<listitem><para>Tux the Linux Penguin <email>tux@linux.org</email></para>
+</listitem>
+</itemizedlist>
+</para>
+
+<para>
+Documentation copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+
+<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
+
+&underFDL; <!-- FDL: do not remove -->
+
+<!-- Determine which license your application is licensed under,
+ and delete all the remaining licenses below:
+
+ (NOTE: All documentation are licensed under the FDL,
+ regardless of what license the application uses) -->
+
+&underGPL; <!-- GPL License -->
+&underBSDLicense; <!-- BSD License -->
+&underArtisticLicense; <!-- BSD Artistic License -->
+&underX11License; <!-- X11 License -->
+
+</chapter>
+
+<appendix id="installation">
+<title>Installation</title>
+
+<sect1 id="getting-appname">
+<title>How to obtain &appname;</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="requirements">
+<title>Requirements</title>
+
+<!--
+List any special requirements for your application here. This should include:
+.Libraries or other software that is not included in kdesupport,
+kdelibs, or kdebase.
+.Hardware requirements like amount of RAM, disk space, graphics card
+capabilities, screen resolution, special expansion cards, etc.
+.Operating systems the app will run on. If your app is designed only for a
+specific OS, (you wrote a graphical LILO configurator for example) put this
+information here.
+-->
+
+<para>
+In order to successfully use &appname;, you need &kde; 1.1. Foobar.lib is
+required in order to support the advanced &appname; features. &appname; uses
+about 5 megs of memory to run, but this may vary depending on your
+platform and configuration.
+</para>
+
+<para>
+All required libraries as well as &appname; itself can be found
+on <ulink url="ftp://ftp.appname.org">The &appname; home page</ulink>.
+</para>
+
+<!-- For a list of updates, you may refer to the application web site
+or the ChangeLog file, or ... -->
+<para>
+You can find a list of changes at <ulink
+url="http://apps.kde.org/appname">http://apps.kde.org/appname</ulink>.
+</para>
+</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>
+
+<sect1 id="configuration">
+<title>Configuration</title>
+
+<para>Don't forget to tell your system to start the <filename>dtd</filename>
+dicer-toaster daemon first, or &appname; won't work !</para>
+
+</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:tabstop=2:shiftwidth=2:expandtab
+-->
+
diff --git a/app_templates/kdeapp/po/README b/app_templates/kdeapp/po/README
new file mode 100644
index 0000000..0e18f16
--- /dev/null
+++ b/app_templates/kdeapp/po/README
@@ -0,0 +1 @@
+.pot and .pot translation files should be placed here.
diff --git a/app_templates/kdeapp/setup.py b/app_templates/kdeapp/setup.py
new file mode 100755
index 0000000..8cf6964
--- /dev/null
+++ b/app_templates/kdeapp/setup.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+###########################################################################
+# setup - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2003 #
+# copyright : (C) 2003-2004 by AUTHOR #
+# email : YOUR@EMAIL.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import kdedistutils
+
+kdedistutils.setup(name="kdeapp",
+ version="0.1.0",
+ author="AUTHOR",
+ author_email="YOUR@EMAIL.com",
+ url="http://www.KDEAPP.com/",
+ min_kde_version = "3.0.0",
+ min_qt_version = "3.0.0",
+ license = "GPL",
+ application_data = ['src/kdeapp.py','src/prefdialog.py','src/kdeappview.py'],
+ executable_links = [('kdeapp','kdeapp.py')],
+ docbooks = [ ('doc/en','en') ] )
diff --git a/app_templates/kdeapp/src/hi16-app-kdeapp.png b/app_templates/kdeapp/src/hi16-app-kdeapp.png
new file mode 100644
index 0000000..40fe05e
--- /dev/null
+++ b/app_templates/kdeapp/src/hi16-app-kdeapp.png
@@ -0,0 +1,8 @@
+‰PNG
+
+
+IHDR
+¸àÿ5Ñ M¼ZŒñfθ92@³
+–é2w”l†A;Àv“c)‡\)¬…/l Fö\ÿžÏ“ß÷ù~ŸžSöŒüXºÅ¦©=t jÊ76ºþ{rumuüê­_Š€% ¾ñ}Êfb{ñZéöRdYÁ7éC2ÊTWÕ“¦Ó²ã³O>ÍfX²GØȵæÆ,F‹&/#x<Ž&Pµ·%]E«ÉÜ–C®f U¥ÕS¿»ïä
+"Öl+²*±²²Jã»Ç°˜M¨ªJde…­Ù9Hz]—qTÖPòBÉIÀ×
+ÙÝ}±¦ÂQ±˜•—‰ ¤bRˆ¢³ªÒÛ÷€ ï]ánv–ïbf,Àûƒøçü:ÀLÑdÖ4€íPuCÀ ÊÔ7ÔòAK ÷\ýô^¿ÏŸ=.~¾ö¡åÐ|ÙŽ2³wÄË|x¾ðw’ÎN†Vd/RKë‡ç6¼Æý+÷øæôɤ°¡ÄôÔĦú7fmcú5€ hr¬96“MŠD#xÆ=IaûÞ‚OHxcú7=# “U¦DæoVÏi
diff --git a/app_templates/kdeapp/src/hi32-app-kdeapp.png b/app_templates/kdeapp/src/hi32-app-kdeapp.png
new file mode 100644
index 0000000..8a6093e
--- /dev/null
+++ b/app_templates/kdeapp/src/hi32-app-kdeapp.png
@@ -0,0 +1,26 @@
+‰PNG
+
+
+IHDR
+:IDATxœ¥—{Œ\Õ}Ç?wîyÜ;;ûðâ}`¯õ®×k̲~&Žq¥R- H£„Gpk
+PPJ£&(
+´J¥¨EQþ©Ú4Iq QDHC~D6ØÂBص—×®ÙµÙÇÎÌ™;Ï;Ó?f½1µ i{¤£«+]ï÷œóý}¿¿kö_åòB”«e,Ë¢3²„Ö–6”TضÍ3'Ÿ``ÙÀIe«m=½½¹§ü´ý‰¯}›j ´¢^«w™O<wìYë¯þkV_Ý˺˜xå,“¯MðÏ?ý.½½‹x!þ—c¤ÄŒôlÛ8¼‘ÕÞvßßoZ—¶ó÷ßÿ¿;ퟙ<“ØrÝVöí¾ÍŒOŽ›»>ÿ™\Oü¾Àõz‘U#fhÅa7Œë†YÒÙI5¨rì—‡ÍÉÇùøµŸ@¹[
+>±u;µj¿ùÛoš¯íQk╳ÿ?ç¢çÌÚ•kq×
+£…-­ít/ïE(‰tB ¤£06 Ñse_¸û€ù·ýžõ¥?ºÿ²u­ÿ©7Þ»ì£ÑQ3¼r)%‘H+B
+ŒÖŽ6´ë²CHW£ØRШ7ؾk33³ÌM¾Ïá_<dzGf¬XºbqíÕÀ@ï€YӷƬ\oÖ­Z‡ã8„B!</MP X½i-õzƒJ©ŒÐ§ÅA(AHØHGáD\æfcTJeÊùkV ³aõ lñÛYkÔ/¼rÐ õ
+á:.®ãbŒ¡X,ò©[w²sï „ åyh­)
+¼tè†Á–¢©a#” •H㶸äÓ>gÆ~ÃSo
+“/äY58È—¿õç$ÓiÆÆßÄÏøTJjA
+€5›†¹0ù>
+n¼å“ÜtçMt?±€çgj|’#O=‹]»žùd۶ȕr(¥Á¯ß±¿z'N½Œ—ÌÏä)ûE
+™<A±BP®0ùê[,íëfåÕýTƒR ¤Va#¥ ªø¦ÀÃ_yˆ‡ÿâ3zõ&Ë›K‘ÍgAP¡T…Bcp—°nŠoó&þô+÷ðËN’IfðS9ò©~*KÎË’ñÒŒMŽQ(˜MͲÿ‹÷²ãSŸFHA(d¡”Dj…m‡B`Œaï­·òÝïü£¹fhÔõzî¥Ý
+c Ó³
+PJ¢±8^*K.£àù³
+žOP š>²ìå(Â--H­°, ©$•R…j9 Ÿõ‰'¢$²‰¢–šz£Ž1†C/¼ÀÎ;8üâ >ô|pó-ûÁ¥°ÑZ“ÉfñRY¼x?™%7Ÿ!—Îà%ÓÄçc+EĪѡœmÛmbáî¤#Iœ3xÍ A©BÑÏ3vnœF£Ñ4š¬£óqvîØÀSÿãíÏßu§B •BIT
+G)²^sç~*G&šb~.N46Ç©3§Hù©³ÀHèÀý_lÏ»%êµ:Ò‘¸m-dbi\×Å
+YTÊR~
+À3Æ`ŒáÊ®
+¹±x”S§(WË–eYÕÅ,8òäa{âQnÛ÷¹fí*±0%á¶þðö›I—Ó]
+¨Uöܲ!ìEg»(6-›¡ã:.JJ”T´EZ ªÇ^:E$â²rÝÀbâj¡q¥K*—"¬ÂÍ–L\
+i#¤h†‡h-ÂÆ–M[½èérá½µ¥Gkå eóØíTN¾ršb¾H6•Å‰¸ô/ë ? h°e3Šµ«éìZ‚‚B¾ˆTÍl—²*J6½])…‚ÙX ?—ÇC{Gë¯ZG½QçĽL¹T!›Ê’MdÈDS´/YÀµC×^š]M[?~£õîô›æÎ/ÜE,ž T(á¸BØ\¬oÛ¡ìÕ²,¦¦Ïãg}ò™<¥| Óh0ñú[,_µŒ H'<ò©Ù¸G*–À5W¹fIë’¤§õ½¤ZX·yÿåßÍõ×m¥œ/áÍ%ÙuûMTk5¤X¡aÇEkÅÔô éd¦ép©…´O¥Øô·µ…eÃ+(Ê$gb¤ãó\8žã¯Ç/ù
+›·†l!0µZW'^]ì,ËâÿBâwؼzõFƒî%Ýöž9-¥Þ+Ú® ÑhΧ±,«ÙðòÞbøûŽÿìl€\l4f7
diff --git a/app_templates/kdeapp/src/kdeapp.desktop b/app_templates/kdeapp/src/kdeapp.desktop
new file mode 100644
index 0000000..2787759
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeapp.desktop
@@ -0,0 +1,35 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=$APPNAME$
+Exec=$APPNAMELC$ %i %m -caption "%c"
+Icon=$APPNAMELC$
+Type=Application
+DocPath=$APPNAMELC$/$APPNAMELC$.html
+Comment=A KDE KPart Application
+Comment[ca]=Una aplicació KPart per a KDE
+Comment[cy]=Cymhwysiad KPart KDE
+Comment[da]=Et KDE KPart program
+Comment[de]=Eine KDE-Komponenten-Anwendung
+Comment[el]=Μια εφαÏμογή KPart του KDE
+Comment[es]=Una aplicación KPart de KDE
+Comment[et]=KDE KPart rakendus
+Comment[fr]=Une application KPart pour KDE.
+Comment[hi]=à¤à¤• केडीई के-पारà¥à¤Ÿ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—
+Comment[hu]=KPart-alapú KDE-alkalmazás
+Comment[is]=KDE KPart forrit
+Comment[it]=Applicazione KPart di KDE
+Comment[ja]=KDE KPart アプリケーション
+Comment[nb]=Et KDE KPart-program
+Comment[nl]=Een KDE KPart-toepassing
+Comment[pl]=Aplikacja KDE
+Comment[pt]=Uma aplicação KPart do KDE
+Comment[pt_BR]=Um Aplicativo KPart do KDE
+Comment[ru]=Приложение KPart Ð´Ð»Ñ KDE
+Comment[sl]=Program KPart za KDE
+Comment[sr]=KDE KPart програм
+Comment[sr@Latn]=KDE KPart program
+Comment[sv]=Ett KDE Kpart-program
+Comment[ta]=கெடி கெபாரà¯à®Ÿà¯ பயனà¯à®ªà®¾à®Ÿà¯
+Comment[tg]=Ба кор андохтани KPart барои KDE
+Comment[zh_CN]=一个 KDE KPart 应用程åº
+Terminal=0
diff --git a/app_templates/kdeapp/src/kdeapp.lsm b/app_templates/kdeapp/src/kdeapp.lsm
new file mode 100644
index 0000000..43d0d5f
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeapp.lsm
@@ -0,0 +1,16 @@
+Begin3
+Title: $APPNAME$ -- Some description
+Version: $VERSION$
+Entered-date:
+Description:
+Keywords: KDE Qt
+Author: $AUTHOR$ <$EMAIL$>
+Maintained-by: $AUTHOR$ <$EMAIL$>
+Home-page:
+Alternate-site:
+Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
+ xxxxxx $APPNAMELC$-$VERSION$.tar.gz
+ xxx $APPNAMELC$-$VERSION$.lsm
+Platform: Linux. Needs KDE
+Copying-policy: $LICENSE$
+End
diff --git a/app_templates/kdeapp/src/kdeapp.py b/app_templates/kdeapp/src/kdeapp.py
new file mode 100755
index 0000000..6c9b921
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeapp.py
@@ -0,0 +1,280 @@
+#!/usr/bin/python
+###########################################################################
+# kdeapp - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from qt import *
+from kdecore import *
+from kdeui import *
+import sys
+from prefdialog import *
+from kdeappview import *
+
+description = "A KDE Application"
+version = "0.1";
+
+class KdeApp(KMainWindow):
+ def __init__(self):
+ KMainWindow.__init__(self,None,"KdeApp")
+
+ self._view = KdeAppView(self)
+ self._printer = None
+
+ # accept dnd
+ self.setAcceptDrops(True)
+
+ # tell the KMainWindow that this is indeed the main widget
+ self.setCentralWidget(self._view)
+
+ # then, setup our actions
+ self._setupActions()
+
+ # and a status bar
+ self.statusBar().show()
+
+ # Apply the create the main window and ask the mainwindow to
+ # automatically save settings if changed: window size, toolbar
+ # position, icon size, etc. Also to add actions for the statusbar
+ # toolbar, and keybindings if necessary.
+ self.setAutoSaveSettings()
+
+ # allow the view to change the statusbar and caption
+ self.connect(self._view, PYSIGNAL("signalChangeStatusbar"), self.changeStatusbar)
+ self.connect(self._view, PYSIGNAL("signalChangeCaption"), self.changeCaption)
+
+ def load(self,url):
+ target = QString()
+ # the below code is what you should normally do. in this
+ # example case, we want the url to our own. you probably
+ # want to use this code instead for your app
+
+ if False:
+ # download the contents
+ if KIO.NetAccess.download(url, target):
+ # set our caption
+ self.setCaption(url)
+
+ # load in the file (target is always local)
+ self.loadFile(target)
+
+ # and remove the temp file
+ KIO.NetAccess.removeTempFile(target)
+
+ self.setCaption(url.prettyURL())
+ self._view.openURL(url)
+
+
+ def _setupActions(self):
+ global kapp
+ KStdAction.openNew(self.fileNew, self.actionCollection())
+ KStdAction.open(self.fileOpen, self.actionCollection())
+ KStdAction.save(self.fileSave, self.actionCollection())
+ KStdAction.saveAs(self.fileSaveAs, self.actionCollection())
+ KStdAction.print_(self.filePrint, self.actionCollection())
+ KStdAction.quit(kapp.quit, self.actionCollection())
+
+ self._toolbarAction = KStdAction.showToolbar(self.optionsShowToolbar, self.actionCollection())
+ self._statusbarAction = KStdAction.showStatusbar(self.optionsShowStatusbar, self.actionCollection())
+ KStdAction.keyBindings(self.optionsConfigureKeys, self.actionCollection())
+
+ KStdAction.configureToolbars(self.optionsConfigureToolbars, self.actionCollection())
+ KStdAction.preferences(self.optionsPreferences, self.actionCollection())
+
+ # this doesn't do anything useful. it's just here to illustrate
+ # how to insert a custom menu and menu item
+ custom = KAction(i18n("Cus&tom Menuitem"), KShortcut(),
+ self.optionsPreferences,
+ self.actionCollection(), "custom_action")
+ self.createGUI()
+
+ def _saveProperties(self,config):
+ # the 'config' object points to the session managed
+ # config file. anything you write here will be available
+ # later when this app is restored
+
+ if not self._view.currentURL().isEmpty():
+ config.writeEntry("lastURL", self._view.currentURL())
+
+ def _readProperties(self,config):
+ # the 'config' object points to the session managed
+ # config file. this function is automatically called whenever
+ # the app is being restored. read in here whatever you wrote
+ # in 'saveProperties'
+
+ url = config.readPathEntry("lastURL")
+
+ if not url.isEmpty():
+ self._view.openURL(KURL(url))
+
+ def dragEnterEvent(self,event):
+ # accept uri drops only
+ event.accept(KURLDrag.canDecode(event))
+
+ def dropEvent(self,event):
+ # this is a very simplistic implementation of a drop event. we
+ # will only accept a dropped URL. the Qt dnd code can do *much*
+ # much more, so please read the docs there
+ urls = KURL.List()
+
+ # see if we can decode a URI.. if not, just ignore it
+ if KURLDrag.decode(event, urls) and not urls.isEmpty():
+ # okay, we have a URI.. process it
+ url = urls.first()
+
+ # load in the file
+ self.load(url)
+
+ def fileNew(self):
+ # this slot is called whenever the File->New menu is selected,
+ # the New shortcut is pressed (usually CTRL+N) or the New toolbar
+ # button is clicked
+
+ # create a new window
+ KdeApp().show()
+
+ def fileOpen(self):
+ # this slot is called whenever the File->Open menu is selected,
+ # the Open shortcut is pressed (usually CTRL+O) or the Open toolbar
+ # button is clicked
+
+ ## this brings up the generic open dialog
+ #KURL url = KURLRequesterDlg::getURL(QString::null, this, i18n("Open Location") );
+
+ # standard filedialog
+ url = KFileDialog.getOpenURL(None, One, self, i18n("Open Location"))
+ if not url.isEmpty():
+ self._view.openURL(url)
+
+ def fileSave(self):
+ # this slot is called whenever the File->Save menu is selected,
+ # the Save shortcut is pressed (usually CTRL+S) or the Save toolbar
+ # button is clicked
+
+ # save the current file
+ pass
+
+ def fileSaveAs(self):
+ # this slot is called whenever the File->Save As menu is selected,
+ file_url = KFileDialog.getSaveURL()
+ if not file_url.isEmpty() and file_url.isValid():
+ # save your info, here
+ pass
+
+
+ def filePrint(self):
+ # this slot is called whenever the File->Print menu is selected,
+ # the Print shortcut is pressed (usually CTRL+P) or the Print toolbar
+ # button is clicked
+ if self._printer is None:
+ self._printer = KPrinter()
+
+ if self._printer.setup(self):
+ # setup the printer. with Qt, you always "print" to a
+ # QPainter.. whether the output medium is a pixmap, a screen,
+ # or paper
+ p = QPainter()
+ p.begin(self._printer)
+
+ # we let our view do the actual printing
+ metrics = QPaintDeviceMetrics(m_printer)
+ self._view.print_(p, metrics.height(), metrics.width())
+
+ # and send the result to the printer
+ p.end();
+
+ def optionsPreferences(self):
+ # popup some sort of preference dialog, here
+ dlg = PreferencesDialog()
+ if dlg.exec_loop():
+ # redo your settings
+ pass
+
+ def optionsShowToolbar(self):
+ # this is all very cut and paste code for showing/hiding the
+ # toolbar
+ if self._toolbarAction.isChecked():
+ self.toolBar().show()
+ else:
+ self.toolBar().hide()
+
+ def optionsShowStatusbar(self):
+ # this is all very cut and paste code for showing/hiding the
+ # statusbar
+
+ if self._statusbarAction.isChecked():
+ self.statusBar().show()
+ else:
+ self.statusBar().hide()
+
+ def optionsConfigureKeys(self):
+ KKeyDialog.configure(self.actionCollection())
+
+ def optionsConfigureToolbars(self):
+ # use the standard toolbar editor
+ self.saveMainWindowSettings(KGlobal.config())
+
+ def newToolbarConfig(self):
+ # this slot is called when user clicks "Ok" or "Apply" in the toolbar editor.
+ # recreate our GUI, and re-apply the settings (e.g. "text under icons", etc.)
+ self.createGUI()
+ self.applyMainWindowSettings(KGlobal.config())
+
+ def changeStatusbar(self,text):
+ # display the text on the statusbar
+ self.statusBar().message(text)
+
+ def changeCaption(self,text):
+ # display the text on the caption
+ self.setCaption(text)
+
+
+options = [ ("+[URL]", "Document to open", "") ]
+
+def main():
+ global kapp,version,description,options
+
+ aboutdata = KAboutData("kdeapp", "KdeApp", version, description, \
+ KAboutData.License_GPL, "(C) 2005 AUTHOR", None, None, "your@email.com")
+ aboutdata.addAuthor("AUTHOR", None, "your@email.com")
+ KCmdLineArgs.init(sys.argv,aboutdata)
+ KCmdLineArgs.addCmdLineOptions(options)
+ kapp = KApplication()
+
+ # register ourselves as a dcop client
+ kapp.dcopClient().registerAs(kapp.name(), False)
+
+ # see if we are starting with session management
+ if kapp.isRestored():
+ n = 1
+ while KMainWindow.canBeRestored(n):
+ KdeApp().restore(n)
+ n += 1
+ else:
+ # no session.. just start up normally
+ args = KCmdLineArgs.parsedArgs()
+ if args.count() == 0:
+ widget = KdeApp()
+ widget.show()
+ else:
+ i = 0
+ for i in range(args.count()):
+ widget = KdeApp()
+ widget.show()
+ widget.load(args.url(i))
+
+ args.clear()
+
+ return kapp.exec_loop()
+main()
diff --git a/app_templates/kdeapp/src/kdeappiface.py b/app_templates/kdeapp/src/kdeappiface.py
new file mode 100644
index 0000000..1ff3b0f
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeappiface.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+###########################################################################
+# testappiface - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2003 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from dcopexport import DCOPExObj
+
+class TestAppIface(DCOPExObj):
+ def __init__(self, parent, id="Value"):
+ DCOPExObj.__init__(self, id)
+ self.addMethod("void openURL(QString url)", self.openURL)
+
+ def openURL(self,url):
+ pass
diff --git a/app_templates/kdeapp/src/kdeappui.rc b/app_templates/kdeapp/src/kdeappui.rc
new file mode 100644
index 0000000..6c3f6a9
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeappui.rc
@@ -0,0 +1,8 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui name="testapp" version="1">
+<MenuBar>
+ <Menu name="custom"><text>C&amp;ustom</text>
+ <Action name="custom_action" />
+ </Menu>
+</MenuBar>
+</kpartgui>
diff --git a/app_templates/kdeapp/src/kdeappview.py b/app_templates/kdeapp/src/kdeappview.py
new file mode 100644
index 0000000..af28a44
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeappview.py
@@ -0,0 +1,91 @@
+#!/usr/bin/python
+###########################################################################
+# kdeappview - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from qt import *
+from kdecore import *
+from kdeui import *
+from kio import *
+from khtml import *
+from kparts import *
+#from kdeappiface import *
+
+class KdeAppView(QWidget):
+ def __init__(self,parent):
+ QWidget.__init__(self,parent)
+ #self._dcopclient= KdeAppIface(self,"KdeAppIface")
+
+ # setup our layout manager to automatically add our widgets
+ top_layout = QHBoxLayout(self)
+ top_layout.setAutoAdd(True)
+
+ if True:
+ self._html = KHTMLPart(self)
+ else:
+
+ # we want to look for all components that satisfy our needs. the
+ # trader will actually search through *all* registered KDE
+ # applications and components -- not just KParts. So we have to
+ # specify two things: a service type and a constraint
+ #
+ # the service type is like a mime type. we say that we want all
+ # applications and components that can handle HTML -- 'text/html'
+ #
+ # however, by itself, this will return such things as Netscape..
+ # not what we wanted. so we constrain it by saying that the
+ # string 'KParts/ReadOnlyPart' must be found in the ServiceTypes
+ # field. with this, only components of the type we want will be
+ # returned.
+ offers = KTrader.self().query("text/html", "'KParts/ReadOnlyPart' in ServiceTypes")
+
+ self._html = None
+ # in theory, we only care about the first one.. but let's try all
+ # offers just in case the first can't be loaded for some reason
+ for ptr in offers:
+ # we now know that our offer can handle HTML and is a part.
+ # since it is a part, it must also have a library... let's try to
+ # load that now
+ self._html = createReadOnlyPart(ptr.library(),self,ptr.name(),"KParts::ReadOnlyPart",QStringList())
+ if self._html is not None:
+ break
+
+ # if our factory is invalid, then we never found our component
+ # and we might as well just exit now
+ if self._html is None:
+ KMessageBox.error(self, i18n("Could not find a suitable HTML component"))
+ return
+
+ QObject.connect(self._html, SIGNAL("setWindowCaption(const QString&)"), self.slotSetTitle)
+ QObject.connect(self._html, SIGNAL("setStatusBarText(const QString&)"), self.slotOnURL)
+
+ def print_(self,p,height,width):
+ pass
+ # do the actual printing, here
+ # p.drawText(etc..)
+
+ def currentURL(self):
+ return self._html.url().url()
+
+ def openURL(self,url):
+ if isinstance(url,QString):
+ url = KURL(url)
+ self._html.openURL(url)
+
+ def slotOnURL(self,url):
+ self.emit(PYSIGNAL("signalChangeStatusbar"),(url,) )
+
+ def slotSetTitle(self,title):
+ self.emit(PYSIGNAL("signalChangeCaption"),(title,) )
diff --git a/app_templates/kdeapp/src/prefdialog.py b/app_templates/kdeapp/src/prefdialog.py
new file mode 100644
index 0000000..7932f84
--- /dev/null
+++ b/app_templates/kdeapp/src/prefdialog.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+###########################################################################
+# testapp - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from qt import *
+from kdecore import *
+from kdeui import *
+
+class TestAppPrefDialog(KDialogBase):
+ def __init__(self):
+ KDialogBase.__init__(TreeList, i18n("TestApp Preferences"),
+ KDialogBase.Help|KDialogBase.Default|KDialogBase.Ok|KDialogBase.Apply|KDialogBase.Cancel, Ok)
+
+ # this is the base class for your preferences dialog. it is now
+ # a Treelist dialog.. but there are a number of other
+ # possibilities (including Tab, Swallow, and just Plain)
+ frame = self.addPage(i18n("First Page"), i18n("Page One Options"))
+ self._pageOne = TestAppPrefPageOne(frame)
+
+ frame = self.addPage(i18n("Second Page"), i18n("Page Two Options"))
+ self._pageTwo = TestAppPrefPageTwo(frame)
+
+class TestAppPrefPageOne(QFrame):
+ def __init__(self,parent):
+ QFrame.__init__(self,parent)
+
+ layout = QHBoxLayout(self)
+ layout.setAutoAdd(True)
+
+ QLabel(i18n("Add something here"), self)
+
+class TestAppPrefPageTwo(QFrame):
+ def __init__(self,parent):
+ QFrame.__init__(self,parent)
+
+ layout = QHBoxLayout(self)
+ layout.setAutoAdd(True)
+
+ QLabel(i18n("Add something here"), self)
+
diff --git a/app_templates/kdeutility/AUTHORS b/app_templates/kdeutility/AUTHORS
new file mode 100644
index 0000000..0463c0d
--- /dev/null
+++ b/app_templates/kdeutility/AUTHORS
@@ -0,0 +1 @@
+$AUTHOR$ <$EMAIL$>
diff --git a/app_templates/kdeutility/COPYING b/app_templates/kdeutility/COPYING
new file mode 100644
index 0000000..c13faf0
--- /dev/null
+++ b/app_templates/kdeutility/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/app_templates/kdeutility/ChangeLog b/app_templates/kdeutility/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeutility/ChangeLog
diff --git a/app_templates/kdeutility/INSTALL b/app_templates/kdeutility/INSTALL
new file mode 100644
index 0000000..b94cd85
--- /dev/null
+++ b/app_templates/kdeutility/INSTALL
@@ -0,0 +1,43 @@
+Basic Installation
+==================
+These are generic installation instructions.
+
+This software uses the Python language's distutils system for installation.
+A detailed guide for users and system administrators to using distutils to
+install software can be found here:
+
+ http://docs.python.org/inst/inst.html
+
+The simplest way to install this software is to run the following command as
+the root user:
+
+ python setup.py install
+
+The setup.py script will automatically detect the directories to use for
+documentation, binaries and other software files.
+
+
+Uninstallation
+==============
+During installation setup.py creates list of files and directories that
+were installed in a file called install_log.txt.
+
+ python setup.py uninstall
+
+
+Installing into an alternate root
+=================================
+For packaging purposes it is often very useful to be able to install all files
+relative not to the usual root directory (/) but into an alternative
+directory.
+
+ python setup.py install --root=/tmp/alternativeroot/
+
+
+Operation Controls
+==================
+--verbose
+ Print more information about what setup.py is doing.
+
+--help
+ Print a summary of the options to setup.py, and exit.
diff --git a/app_templates/kdeutility/MANIFEST.in b/app_templates/kdeutility/MANIFEST.in
new file mode 100644
index 0000000..c2dde3f
--- /dev/null
+++ b/app_templates/kdeutility/MANIFEST.in
@@ -0,0 +1,6 @@
+recursive-include doc *.docbook *.png
+recursive-include po *.po *.pot
+include AUTHORS ChangeLog COPYING INSTALL MANIFEST.in NEWS README TODO
+global-include *.desktop *.py *.ui *.png *.lsm
+global-exclude *~ .svn
+global-exclude *~ .cvs
diff --git a/app_templates/kdeutility/NEWS b/app_templates/kdeutility/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeutility/NEWS
diff --git a/app_templates/kdeutility/README b/app_templates/kdeutility/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeutility/README
diff --git a/app_templates/kdeutility/TODO b/app_templates/kdeutility/TODO
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kdeutility/TODO
diff --git a/app_templates/kdeutility/doc/en/index.docbook b/app_templates/kdeutility/doc/en/index.docbook
new file mode 100644
index 0000000..325987f
--- /dev/null
+++ b/app_templates/kdeutility/doc/en/index.docbook
@@ -0,0 +1,555 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY appname "<application>MyApplicaition 0.1</application>">
+ <!ENTITY kappname "&appname;"><!-- Do *not* replace kappname-->
+ <!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc -->
+ <!ENTITY % addindex "IGNORE">
+ <!ENTITY % English "INCLUDE"><!-- change language only here -->
+
+
+ <!-- Do not define any other entities; instead, use the entities
+ from kde-genent.entities and $LANG/user.entities. -->
+]>
+<!-- kdoctemplate v0.8 October 1 1999
+ Minor update to "Credits and Licenses" section on August 24, 2000
+ Removed "Revision history" section on 22 January 2001
+ Changed to Installation/Help menu entities 18 October 2001
+ Other minor cleanup and changes 18 October 2001 -->
+
+
+<!--
+This template was designed by: David Rugge davidrugge@mindspring.com
+with lots of help from: Eric Bischoff ebisch@cybercable.tm.fr
+and Frederik Fouvry fouvry@sfs.nphil.uni-tuebingen.de
+of the KDE DocBook team.
+
+You may freely use this template for writing any sort of KDE documentation.
+If you have any changes or improvements, please let us know.
+
+Remember:
+- in XML, the case of the <tags> and attributes is relevant ;
+- also, quote all attributes.
+
+Please don't forget to remove all these comments in your final documentation,
+thanks ;-).
+-->
+
+<!-- ................................................................ -->
+
+<!-- The language must NOT be changed here. -->
+
+<book lang="&language;">
+
+<!-- This header contains all of the meta-information for the document such
+as Authors, publish date, the abstract, and Keywords -->
+
+<bookinfo>
+<title>The &appname; Handbook</title>
+
+<authorgroup>
+<author>
+<firstname></firstname>
+<othername></othername>
+<surname>%{AUTHOR}</surname>
+<affiliation>
+<address><email>%{EMAIL}</email></address>
+</affiliation>
+</author>
+</authorgroup>
+
+<!-- TRANS:ROLES_OF_TRANSLATORS -->
+
+<copyright>
+<year>1999</year>
+<year>%{YEAR}</year>
+<holder>%{AUTHOR}</holder>
+</copyright>
+<!-- Translators: put here the copyright notice of the translation -->
+<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
+ and in the FDL itself on how to use it. -->
+<legalnotice>&FDLNotice;</legalnotice>
+
+<!-- Date and version information of the documentation
+Don't forget to include this last date and this last revision number, we
+need them for translation coordination !
+Please respect the format of the date (YYYY-MM-DD) and of the version
+(V.MM.LL), it could be used by automation scripts.
+Do NOT change these in the translation. -->
+
+<date>2001-10-18</date>
+<releaseinfo>%{VERSION}</releaseinfo>
+
+<!-- Abstract about this handbook -->
+
+<abstract>
+<para>
+&appname; is an application specially designed to do nothing you would
+ever want.
+</para>
+</abstract>
+
+<!-- This is a set of Keywords for indexing by search engines.
+Please at least include KDE, the KDE package it is in, the name
+ of your application, and a few relevant keywords. -->
+
+<keywordset>
+<keyword>KDE</keyword>
+<keyword>%{APPNAME}</keyword>
+<keyword>nothing</keyword>
+<keyword>nothing else</keyword>
+</keywordset>
+
+</bookinfo>
+
+<!-- The contents of the documentation begin here. Label
+each chapter so with the id attribute. This is necessary for two reasons: it
+allows you to easily reference the chapter from other chapters of your
+document, and if there is no ID, the name of the generated HTML files will vary
+from time to time making it hard to manage for maintainers and for the CVS
+system. Any chapter labelled (OPTIONAL) may be left out at the author's
+discretion. Other chapters should not be left out in order to maintain a
+consistent documentation style across all KDE apps. -->
+
+<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>
+&appname; is a program that lets you do absolutely nothing. Please report
+any problems or feature requests to the &kde; mailing lists.
+</para>
+</chapter>
+
+<chapter id="using-appname">
+<title>Using &appname;</title>
+
+<!-- This chapter should tell the user how to use your app. You should use as
+many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
+your application. -->
+
+<para>
+
+<!-- Note that all graphics should be in .png format. Use no gifs because of
+patent issues. -->
+
+<screenshot>
+<screeninfo>Here's a screenshot of &appname;</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshot.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="screenshot.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Screenshot</phrase>
+ </textobject>
+ </mediaobject>
+</screenshot>
+</para>
+
+
+<sect1 id="appname-features">
+<title>More &appname; features</title>
+
+<para>It slices! It dices! and it comes with a free toaster!</para>
+<para>
+The Squiggle Tool <guiicon><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="squiggle.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="squiggle.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Squiggle</phrase>
+ </textobject>
+</inlinemediaobject></guiicon> is used to draw squiggly lines all over
+the &appname; main window. It's not a bug, it's a feature!
+</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="appname-mainwindow">
+<title>The main &appname; window</title>
+
+<sect2>
+<title>The File Menu</title>
+<para>
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>New</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Creates a new document</action></para></listitem>
+</varlistentry>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>Save</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Saves the document</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> &appname;</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 -->
+<!-- &appname;, 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="developers">
+<title>Developer's Guide to &appname;</title>
+
+<!-- (OPTIONAL) A Programming/Scripting reference chapter should be
+used for apps that use plugins or that provide their own scripting hooks
+and/or development libraries. -->
+
+<para>
+Programming &appname; plugins is a joy to behold. Just read through the next
+66 pages of API's to learn how!
+</para>
+
+<!-- Use refentries to describe APIs. Refentries are fairly complicated and you
+should consult the docbook reference for further details. The example below was
+taken from that reference and shortened a bit for readability. -->
+
+<refentry id="re-1007-unmanagechildren-1">
+<refmeta>
+<refentrytitle>XtUnmanageChildren</refentrytitle>
+<refmiscinfo>Xt - Geometry Management</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XtUnmanageChildren
+</refname>
+<refpurpose>remove a list of children from a parent widget's managed
+list.
+<indexterm id="ix-1007-unmanagechildren-1"><primary>widgets</primary><secondary>removing</secondary></indexterm>
+<indexterm id="ix-1007-unmanagechildren-2"><primary>XtUnmanageChildren</primary></indexterm>
+</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv>
+<refsynopsisdivinfo>
+<date>4 March 1996</date>
+</refsynopsisdivinfo>
+<synopsis>
+void XtUnmanageChildren(<replaceable class="parameter">children</replaceable>, <replaceable class="parameter">num_children</replaceable>)
+ WidgetList <replaceable class="parameter">children</replaceable>;
+ Cardinal <replaceable class="parameter">num_children</replaceable>;
+</synopsis>
+
+<refsect2 id="r2-1007-unmanagechildren-1">
+<title>Inputs</title>
+<variablelist>
+<varlistentry>
+<term><replaceable class="parameter">children</replaceable>
+</term>
+<listitem>
+<para>Specifies an array of child widgets. Each child must be of
+class RectObj or any subclass thereof.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><replaceable class="parameter">num_children</replaceable>
+</term>
+<listitem>
+<para>Specifies the number of elements in <replaceable class="parameter">children</replaceable>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refsect2></refsynopsisdiv>
+
+<refsect1 id="r1-1007-unmanagechildren-1">
+<title>Description
+</title>
+<para><function>XtUnmanageChildren()</function> unmaps the specified widgets
+and removes them from their parent's geometry management.
+The widgets will disappear from the screen, and (depending
+on its parent) may no longer have screen space allocated for
+them.
+</para>
+<para>Each of the widgets in the <replaceable class="parameter">children</replaceable> array must have
+the same parent.
+</para>
+<para>See the &ldquo;Algorithm&rdquo; section below for full details of the
+widget unmanagement procedure.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-2">
+<title>Usage</title>
+<para>Unmanaging widgets is the usual method for temporarily
+making them invisible. They can be re-managed with
+<function>XtManageChildren()</function>.
+</para>
+<para>You can unmap a widget, but leave it under geometry
+management by calling <function>XtUnmapWidget()</function>. You can
+destroy a widget's window without destroying the widget by
+calling <function>XtUnrealizeWidget()</function>. You can destroy a
+widget completely with <function>XtDestroyWidget()</function>.
+</para>
+<para>If you are only going to unmanage a single widget, it is
+more convenient to call <function>XtUnmanageChild()</function>. It is
+often more convenient to call <function>XtUnmanageChild()</function>
+several times than it is to declare and initialize an array
+of widgets to pass to <function>XtUnmanageChildren()</function>. Calling
+<function>XtUnmanageChildren()</function> is more efficient, however,
+because it only calls the parent's <function>change_managed()</function>
+method once.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-3">
+<title>Algorithm
+</title>
+<para><function>XtUnmanageChildren()</function> performs the following:
+</para>
+<variablelist>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Ignores the child if it already is unmanaged or is being
+destroyed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Otherwise, if the child is realized, it makes it nonvisible
+by unmapping it.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-4">
+<title>Structures</title>
+<para>The <type>WidgetList</type> type is simply an array of widgets:
+</para>
+<screen id="sc-1007-unmanagechildren-1">typedef Widget *WidgetList;
+</screen>
+</refsect1>
+</refentry>
+
+</chapter>
+
+<chapter id="faq">
+<title>Questions and Answers</title>
+
+<!-- (OPTIONAL but recommended) This chapter should include all of the silly
+(and not-so-silly) newbie questions that fill up your mailbox. This chapter
+should be reserved for BRIEF questions and answers! If one question uses more
+than a page or so then it should probably be part of the
+"Using this Application" chapter instead. You should use links to
+cross-reference questions to the parts of your documentation that answer them.
+This is also a great place to provide pointers to other FAQ's if your users
+must do some complicated configuration on other programs in order for your
+application work. -->
+
+&reporting.bugs;
+&updating.documentation;
+
+<qandaset id="faqlist">
+<qandaentry>
+<question>
+<para>My Mouse doesn't work. How do I quit &appname;?</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 can't I 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>
+&appname;
+</para>
+<para>
+Program copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+<para>
+Contributors:
+<itemizedlist>
+<listitem><para>Konqui the KDE Dragon <email>konqui@kde.org</email></para>
+</listitem>
+<listitem><para>Tux the Linux Penguin <email>tux@linux.org</email></para>
+</listitem>
+</itemizedlist>
+</para>
+
+<para>
+Documentation copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+
+<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
+
+&underFDL; <!-- FDL: do not remove -->
+
+<!-- Determine which license your application is licensed under,
+ and delete all the remaining licenses below:
+
+ (NOTE: All documentation are licensed under the FDL,
+ regardless of what license the application uses) -->
+
+&underGPL; <!-- GPL License -->
+&underBSDLicense; <!-- BSD License -->
+&underArtisticLicense; <!-- BSD Artistic License -->
+&underX11License; <!-- X11 License -->
+
+</chapter>
+
+<appendix id="installation">
+<title>Installation</title>
+
+<sect1 id="getting-appname">
+<title>How to obtain &appname;</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="requirements">
+<title>Requirements</title>
+
+<!--
+List any special requirements for your application here. This should include:
+.Libraries or other software that is not included in kdesupport,
+kdelibs, or kdebase.
+.Hardware requirements like amount of RAM, disk space, graphics card
+capabilities, screen resolution, special expansion cards, etc.
+.Operating systems the app will run on. If your app is designed only for a
+specific OS, (you wrote a graphical LILO configurator for example) put this
+information here.
+-->
+
+<para>
+In order to successfully use &appname;, you need &kde; 1.1. Foobar.lib is
+required in order to support the advanced &appname; features. &appname; uses
+about 5 megs of memory to run, but this may vary depending on your
+platform and configuration.
+</para>
+
+<para>
+All required libraries as well as &appname; itself can be found
+on <ulink url="ftp://ftp.appname.org">The &appname; home page</ulink>.
+</para>
+
+<!-- For a list of updates, you may refer to the application web site
+or the ChangeLog file, or ... -->
+<para>
+You can find a list of changes at <ulink
+url="http://apps.kde.org/appname">http://apps.kde.org/appname</ulink>.
+</para>
+</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>
+
+<sect1 id="configuration">
+<title>Configuration</title>
+
+<para>Don't forget to tell your system to start the <filename>dtd</filename>
+dicer-toaster daemon first, or &appname; won't work !</para>
+
+</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:tabstop=2:shiftwidth=2:expandtab
+-->
+
diff --git a/app_templates/kdeutility/po/README b/app_templates/kdeutility/po/README
new file mode 100644
index 0000000..0e18f16
--- /dev/null
+++ b/app_templates/kdeutility/po/README
@@ -0,0 +1 @@
+.pot and .pot translation files should be placed here.
diff --git a/app_templates/kdeutility/setup.py b/app_templates/kdeutility/setup.py
new file mode 100755
index 0000000..ff51c10
--- /dev/null
+++ b/app_templates/kdeutility/setup.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+###########################################################################
+# setup - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : YOUR@EMAIL.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import kdedistutils
+
+kdedistutils.setup(name="kdeutility",
+ version="0.1.0",
+ author="AUTHOR",
+ author_email="YOUR@EMAIL.com",
+ url="http://www.TESTAPP.com/",
+ min_kde_version = "3.0.0",
+ min_qt_version = "3.0.0",
+ license = "GPL",
+ application_data = ['src/kdeutility.py','src/KDEUtilityDialogUI.ui'],
+ executable_links = [('kdeutility','kdeutility.py')],
+ docbooks = [ ('doc/en','en') ],
+ i18n = ('po',['src']) )
diff --git a/app_templates/kdeutility/src/KDEUtilityDialogUI.ui b/app_templates/kdeutility/src/KDEUtilityDialogUI.ui
new file mode 100644
index 0000000..af12ef1
--- /dev/null
+++ b/app_templates/kdeutility/src/KDEUtilityDialogUI.ui
@@ -0,0 +1,33 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>KDEUtilityDialogUI</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>KDEUtilityDialogUI</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>KDE Utility</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>hellobutton</cstring>
+ </property>
+ <property name="text">
+ <string>Hello, Good bye</string>
+ </property>
+ </widget>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/app_templates/kdeutility/src/hi16-app-kdeutility.png b/app_templates/kdeutility/src/hi16-app-kdeutility.png
new file mode 100644
index 0000000..40fe05e
--- /dev/null
+++ b/app_templates/kdeutility/src/hi16-app-kdeutility.png
@@ -0,0 +1,8 @@
+‰PNG
+
+
+IHDR
+¸àÿ5Ñ M¼ZŒñfθ92@³
+–é2w”l†A;Àv“c)‡\)¬…/l Fö\ÿžÏ“ß÷ù~ŸžSöŒüXºÅ¦©=t jÊ76ºþ{rumuüê­_Š€% ¾ñ}Êfb{ñZéöRdYÁ7éC2ÊTWÕ“¦Ó²ã³O>ÍfX²GØȵæÆ,F‹&/#x<Ž&Pµ·%]E«ÉÜ–C®f U¥ÕS¿»ïä
+"Öl+²*±²²Jã»Ç°˜M¨ªJde…­Ù9Hz]—qTÖPòBÉIÀ×
+ÙÝ}±¦ÂQ±˜•—‰ ¤bRˆ¢³ªÒÛ÷€ ï]ánv–ïbf,Àûƒøçü:ÀLÑdÖ4€íPuCÀ ÊÔ7ÔòAK ÷\ýô^¿ÏŸ=.~¾ö¡åÐ|ÙŽ2³wÄË|x¾ðw’ÎN†Vd/RKë‡ç6¼Æý+÷øæôɤ°¡ÄôÔĦú7fmcú5€ hr¬96“MŠD#xÆ=IaûÞ‚OHxcú7=# “U¦DæoVÏi
diff --git a/app_templates/kdeutility/src/hi32-app-kdeutility.png b/app_templates/kdeutility/src/hi32-app-kdeutility.png
new file mode 100644
index 0000000..8a6093e
--- /dev/null
+++ b/app_templates/kdeutility/src/hi32-app-kdeutility.png
@@ -0,0 +1,26 @@
+‰PNG
+
+
+IHDR
+:IDATxœ¥—{Œ\Õ}Ç?wîyÜ;;ûðâ}`¯õ®×k̲~&Žq¥R- H£„Gpk
+PPJ£&(
+´J¥¨EQþ©Ú4Iq QDHC~D6ØÂBص—×®ÙµÙÇÎÌ™;Ï;Ó?f½1µ i{¤£«+]ï÷œóý}¿¿kö_åòB”«e,Ë¢3²„Ö–6”TضÍ3'Ÿ``ÙÀIe«m=½½¹§ü´ý‰¯}›j ´¢^«w™O<wìYë¯þkV_Ý˺˜xå,“¯MðÏ?ý.½½‹x!þ—c¤ÄŒôlÛ8¼‘ÕÞvßßoZ—¶ó÷ßÿ¿;ퟙ<“ØrÝVöí¾ÍŒOŽ›»>ÿ™\Oü¾Àõz‘U#fhÅa7Œë†YÒÙI5¨rì—‡ÍÉÇùøµŸ@¹[
+>±u;µj¿ùÛoš¯íQk╳ÿ?ç¢çÌÚ•kq×
+£…-­ít/ïE(‰tB ¤£06 Ñse_¸û€ù·ýžõ¥?ºÿ²u­ÿ©7Þ»ì£ÑQ3¼r)%‘H+B
+ŒÖŽ6´ë²CHW£ØRШ7ؾk33³ÌM¾Ïá_<dzGf¬XºbqíÕÀ@ï€YӷƬ\oÖ­Z‡ã8„B!</MP X½i-õzƒJ©ŒÐ§ÅA(AHØHGáD\æfcTJeÊùkV ³aõ lñÛYkÔ/¼rÐ õ
+á:.®ãbŒ¡X,ò©[w²sï „ åyh­)
+¼tè†Á–¢©a#” •H㶸äÓ>gÆ~ÃSo
+“/äY58È—¿õç$ÓiÆÆßÄÏøTJjA
+€5›†¹0ù>
+n¼å“ÜtçMt?±€çgj|’#O=‹]»žùd۶ȕr(¥Á¯ß±¿z'N½Œ—ÌÏä)ûE
+™<A±BP®0ùê[,íëfåÕýTƒR ¤Va#¥ ªø¦ÀÃ_yˆ‡ÿâ3zõ&Ë›K‘ÍgAP¡T…Bcp—°nŠoó&þô+÷ðËN’IfðS9ò©~*KÎË’ñÒŒMŽQ(˜MͲÿ‹÷²ãSŸFHA(d¡”Dj…m‡B`Œaï­·òÝïü£¹fhÔõzî¥Ý
+c Ó³
+PJ¢±8^*K.£àù³
+žOP š>²ìå(Â--H­°, ©$•R…j9 Ÿõ‰'¢$²‰¢–šz£Ž1†C/¼ÀÎ;8üâ >ô|pó-ûÁ¥°ÑZ“ÉfñRY¼x?™%7Ÿ!—Îà%ÓÄçc+EĪѡœmÛmbáî¤#Iœ3xÍ A©BÑÏ3vnœF£Ñ4š¬£óqvîØÀSÿãíÏßu§B •BIT
+G)²^sç~*G&šb~.N46Ç©3§Hù©³ÀHèÀý_lÏ»%êµ:Ò‘¸m-dbi\×Å
+YTÊR~
+À3Æ`ŒáÊ®
+¹±x”S§(WË–eYÕÅ,8òäa{âQnÛ÷¹fí*±0%á¶þðö›I—Ó]
+¨Uöܲ!ìEg»(6-›¡ã:.JJ”T´EZ ªÇ^:E$â²rÝÀbâj¡q¥K*—"¬ÂÍ–L\
+i#¤h†‡h-ÂÆ–M[½èérá½µ¥Gkå eóØíTN¾ršb¾H6•Å‰¸ô/ë ? h°e3Šµ«éìZ‚‚B¾ˆTÍl—²*J6½])…‚ÙX ?—ÇC{Gë¯ZG½QçĽL¹T!›Ê’MdÈDS´/YÀµC×^š]M[?~£õîô›æÎ/ÜE,ž T(á¸BØ\¬oÛ¡ìÕ²,¦¦Ïãg}ò™<¥| Óh0ñú[,_µŒ H'<ò©Ù¸G*–À5W¹fIë’¤§õ½¤ZX·yÿåßÍõ×m¥œ/áÍ%ÙuûMTk5¤X¡aÇEkÅÔô éd¦ép©…´O¥Øô·µ…eÃ+(Ê$gb¤ãó\8žã¯Ç/ù
+›·†l!0µZW'^]ì,ËâÿBâwؼzõFƒî%Ýöž9-¥Þ+Ú® ÑhΧ±,«ÙðòÞbøûŽÿìl€\l4f7
diff --git a/app_templates/kdeutility/src/kdeutility.desktop b/app_templates/kdeutility/src/kdeutility.desktop
new file mode 100644
index 0000000..2787759
--- /dev/null
+++ b/app_templates/kdeutility/src/kdeutility.desktop
@@ -0,0 +1,35 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=$APPNAME$
+Exec=$APPNAMELC$ %i %m -caption "%c"
+Icon=$APPNAMELC$
+Type=Application
+DocPath=$APPNAMELC$/$APPNAMELC$.html
+Comment=A KDE KPart Application
+Comment[ca]=Una aplicació KPart per a KDE
+Comment[cy]=Cymhwysiad KPart KDE
+Comment[da]=Et KDE KPart program
+Comment[de]=Eine KDE-Komponenten-Anwendung
+Comment[el]=Μια εφαÏμογή KPart του KDE
+Comment[es]=Una aplicación KPart de KDE
+Comment[et]=KDE KPart rakendus
+Comment[fr]=Une application KPart pour KDE.
+Comment[hi]=à¤à¤• केडीई के-पारà¥à¤Ÿ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—
+Comment[hu]=KPart-alapú KDE-alkalmazás
+Comment[is]=KDE KPart forrit
+Comment[it]=Applicazione KPart di KDE
+Comment[ja]=KDE KPart アプリケーション
+Comment[nb]=Et KDE KPart-program
+Comment[nl]=Een KDE KPart-toepassing
+Comment[pl]=Aplikacja KDE
+Comment[pt]=Uma aplicação KPart do KDE
+Comment[pt_BR]=Um Aplicativo KPart do KDE
+Comment[ru]=Приложение KPart Ð´Ð»Ñ KDE
+Comment[sl]=Program KPart za KDE
+Comment[sr]=KDE KPart програм
+Comment[sr@Latn]=KDE KPart program
+Comment[sv]=Ett KDE Kpart-program
+Comment[ta]=கெடி கெபாரà¯à®Ÿà¯ பயனà¯à®ªà®¾à®Ÿà¯
+Comment[tg]=Ба кор андохтани KPart барои KDE
+Comment[zh_CN]=一个 KDE KPart 应用程åº
+Terminal=0
diff --git a/app_templates/kdeutility/src/kdeutility.lsm b/app_templates/kdeutility/src/kdeutility.lsm
new file mode 100644
index 0000000..43d0d5f
--- /dev/null
+++ b/app_templates/kdeutility/src/kdeutility.lsm
@@ -0,0 +1,16 @@
+Begin3
+Title: $APPNAME$ -- Some description
+Version: $VERSION$
+Entered-date:
+Description:
+Keywords: KDE Qt
+Author: $AUTHOR$ <$EMAIL$>
+Maintained-by: $AUTHOR$ <$EMAIL$>
+Home-page:
+Alternate-site:
+Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
+ xxxxxx $APPNAMELC$-$VERSION$.tar.gz
+ xxx $APPNAMELC$-$VERSION$.lsm
+Platform: Linux. Needs KDE
+Copying-policy: $LICENSE$
+End
diff --git a/app_templates/kdeutility/src/kdeutility.py b/app_templates/kdeutility/src/kdeutility.py
new file mode 100755
index 0000000..e2849fe
--- /dev/null
+++ b/app_templates/kdeutility/src/kdeutility.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+###########################################################################
+# kdeutility - description #
+# ------------------------------ #
+# begin : Mon May 2 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import sys
+from qt import *
+from kdecore import *
+from kdeui import *
+import kdedesigner
+from KDEUtilityDialogUI import *
+
+description = "A KDE Utility"
+version = "0.1";
+
+class KDEUtilityDialog(KDEUtilityDialogUI):
+ def __init__(self):
+ KDEUtilityDialogUI.__init__(self,None,"TestApp")
+ # Add other methods, slots and signals here.
+
+
+options = [] # No command line options.
+
+def main():
+ global kapp,version,description,options
+
+ aboutdata = KAboutData("kdeutility", "KdeUtility", version, description, \
+ KAboutData.License_GPL, "(C) 2005 AUTHOR", None, None, "your@email.com")
+ aboutdata.addAuthor("AUTHOR", None, "your@email.com")
+ KCmdLineArgs.init(sys.argv,aboutdata)
+ #KCmdLineArgs.addCmdLineOptions(options)
+ kapp = KApplication()
+
+ dialog = KDEUtilityDialog()
+ kapp.setMainWidget(dialog)
+ dialog.show()
+
+ return kapp.exec_loop()
+main()
diff --git a/app_templates/kioslave/AUTHORS b/app_templates/kioslave/AUTHORS
new file mode 100644
index 0000000..0463c0d
--- /dev/null
+++ b/app_templates/kioslave/AUTHORS
@@ -0,0 +1 @@
+$AUTHOR$ <$EMAIL$>
diff --git a/app_templates/kioslave/COPYING b/app_templates/kioslave/COPYING
new file mode 100644
index 0000000..c13faf0
--- /dev/null
+++ b/app_templates/kioslave/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/app_templates/kioslave/ChangeLog b/app_templates/kioslave/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kioslave/ChangeLog
diff --git a/app_templates/kioslave/INSTALL b/app_templates/kioslave/INSTALL
new file mode 100644
index 0000000..b94cd85
--- /dev/null
+++ b/app_templates/kioslave/INSTALL
@@ -0,0 +1,43 @@
+Basic Installation
+==================
+These are generic installation instructions.
+
+This software uses the Python language's distutils system for installation.
+A detailed guide for users and system administrators to using distutils to
+install software can be found here:
+
+ http://docs.python.org/inst/inst.html
+
+The simplest way to install this software is to run the following command as
+the root user:
+
+ python setup.py install
+
+The setup.py script will automatically detect the directories to use for
+documentation, binaries and other software files.
+
+
+Uninstallation
+==============
+During installation setup.py creates list of files and directories that
+were installed in a file called install_log.txt.
+
+ python setup.py uninstall
+
+
+Installing into an alternate root
+=================================
+For packaging purposes it is often very useful to be able to install all files
+relative not to the usual root directory (/) but into an alternative
+directory.
+
+ python setup.py install --root=/tmp/alternativeroot/
+
+
+Operation Controls
+==================
+--verbose
+ Print more information about what setup.py is doing.
+
+--help
+ Print a summary of the options to setup.py, and exit.
diff --git a/app_templates/kioslave/MANIFEST.in b/app_templates/kioslave/MANIFEST.in
new file mode 100644
index 0000000..c2dde3f
--- /dev/null
+++ b/app_templates/kioslave/MANIFEST.in
@@ -0,0 +1,6 @@
+recursive-include doc *.docbook *.png
+recursive-include po *.po *.pot
+include AUTHORS ChangeLog COPYING INSTALL MANIFEST.in NEWS README TODO
+global-include *.desktop *.py *.ui *.png *.lsm
+global-exclude *~ .svn
+global-exclude *~ .cvs
diff --git a/app_templates/kioslave/NEWS b/app_templates/kioslave/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kioslave/NEWS
diff --git a/app_templates/kioslave/README b/app_templates/kioslave/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kioslave/README
diff --git a/app_templates/kioslave/TODO b/app_templates/kioslave/TODO
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app_templates/kioslave/TODO
diff --git a/app_templates/kioslave/doc/en/index.docbook b/app_templates/kioslave/doc/en/index.docbook
new file mode 100644
index 0000000..325987f
--- /dev/null
+++ b/app_templates/kioslave/doc/en/index.docbook
@@ -0,0 +1,555 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY appname "<application>MyApplicaition 0.1</application>">
+ <!ENTITY kappname "&appname;"><!-- Do *not* replace kappname-->
+ <!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc -->
+ <!ENTITY % addindex "IGNORE">
+ <!ENTITY % English "INCLUDE"><!-- change language only here -->
+
+
+ <!-- Do not define any other entities; instead, use the entities
+ from kde-genent.entities and $LANG/user.entities. -->
+]>
+<!-- kdoctemplate v0.8 October 1 1999
+ Minor update to "Credits and Licenses" section on August 24, 2000
+ Removed "Revision history" section on 22 January 2001
+ Changed to Installation/Help menu entities 18 October 2001
+ Other minor cleanup and changes 18 October 2001 -->
+
+
+<!--
+This template was designed by: David Rugge davidrugge@mindspring.com
+with lots of help from: Eric Bischoff ebisch@cybercable.tm.fr
+and Frederik Fouvry fouvry@sfs.nphil.uni-tuebingen.de
+of the KDE DocBook team.
+
+You may freely use this template for writing any sort of KDE documentation.
+If you have any changes or improvements, please let us know.
+
+Remember:
+- in XML, the case of the <tags> and attributes is relevant ;
+- also, quote all attributes.
+
+Please don't forget to remove all these comments in your final documentation,
+thanks ;-).
+-->
+
+<!-- ................................................................ -->
+
+<!-- The language must NOT be changed here. -->
+
+<book lang="&language;">
+
+<!-- This header contains all of the meta-information for the document such
+as Authors, publish date, the abstract, and Keywords -->
+
+<bookinfo>
+<title>The &appname; Handbook</title>
+
+<authorgroup>
+<author>
+<firstname></firstname>
+<othername></othername>
+<surname>%{AUTHOR}</surname>
+<affiliation>
+<address><email>%{EMAIL}</email></address>
+</affiliation>
+</author>
+</authorgroup>
+
+<!-- TRANS:ROLES_OF_TRANSLATORS -->
+
+<copyright>
+<year>1999</year>
+<year>%{YEAR}</year>
+<holder>%{AUTHOR}</holder>
+</copyright>
+<!-- Translators: put here the copyright notice of the translation -->
+<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
+ and in the FDL itself on how to use it. -->
+<legalnotice>&FDLNotice;</legalnotice>
+
+<!-- Date and version information of the documentation
+Don't forget to include this last date and this last revision number, we
+need them for translation coordination !
+Please respect the format of the date (YYYY-MM-DD) and of the version
+(V.MM.LL), it could be used by automation scripts.
+Do NOT change these in the translation. -->
+
+<date>2001-10-18</date>
+<releaseinfo>%{VERSION}</releaseinfo>
+
+<!-- Abstract about this handbook -->
+
+<abstract>
+<para>
+&appname; is an application specially designed to do nothing you would
+ever want.
+</para>
+</abstract>
+
+<!-- This is a set of Keywords for indexing by search engines.
+Please at least include KDE, the KDE package it is in, the name
+ of your application, and a few relevant keywords. -->
+
+<keywordset>
+<keyword>KDE</keyword>
+<keyword>%{APPNAME}</keyword>
+<keyword>nothing</keyword>
+<keyword>nothing else</keyword>
+</keywordset>
+
+</bookinfo>
+
+<!-- The contents of the documentation begin here. Label
+each chapter so with the id attribute. This is necessary for two reasons: it
+allows you to easily reference the chapter from other chapters of your
+document, and if there is no ID, the name of the generated HTML files will vary
+from time to time making it hard to manage for maintainers and for the CVS
+system. Any chapter labelled (OPTIONAL) may be left out at the author's
+discretion. Other chapters should not be left out in order to maintain a
+consistent documentation style across all KDE apps. -->
+
+<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>
+&appname; is a program that lets you do absolutely nothing. Please report
+any problems or feature requests to the &kde; mailing lists.
+</para>
+</chapter>
+
+<chapter id="using-appname">
+<title>Using &appname;</title>
+
+<!-- This chapter should tell the user how to use your app. You should use as
+many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
+your application. -->
+
+<para>
+
+<!-- Note that all graphics should be in .png format. Use no gifs because of
+patent issues. -->
+
+<screenshot>
+<screeninfo>Here's a screenshot of &appname;</screeninfo>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="screenshot.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="screenshot.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Screenshot</phrase>
+ </textobject>
+ </mediaobject>
+</screenshot>
+</para>
+
+
+<sect1 id="appname-features">
+<title>More &appname; features</title>
+
+<para>It slices! It dices! and it comes with a free toaster!</para>
+<para>
+The Squiggle Tool <guiicon><inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="squiggle.png" format="PNG"/>
+ </imageobject>
+ <imageobject>
+ <imagedata fileref="squiggle.eps" format="EPS"/>
+ </imageobject>
+ <textobject>
+ <phrase>Squiggle</phrase>
+ </textobject>
+</inlinemediaobject></guiicon> is used to draw squiggly lines all over
+the &appname; main window. It's not a bug, it's a feature!
+</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="appname-mainwindow">
+<title>The main &appname; window</title>
+
+<sect2>
+<title>The File Menu</title>
+<para>
+<variablelist>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>New</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Creates a new document</action></para></listitem>
+</varlistentry>
+<varlistentry>
+<term><menuchoice>
+<shortcut>
+<keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo>
+</shortcut>
+<guimenu>File</guimenu>
+<guimenuitem>Save</guimenuitem>
+</menuchoice></term>
+<listitem><para><action>Saves the document</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> &appname;</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 -->
+<!-- &appname;, 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="developers">
+<title>Developer's Guide to &appname;</title>
+
+<!-- (OPTIONAL) A Programming/Scripting reference chapter should be
+used for apps that use plugins or that provide their own scripting hooks
+and/or development libraries. -->
+
+<para>
+Programming &appname; plugins is a joy to behold. Just read through the next
+66 pages of API's to learn how!
+</para>
+
+<!-- Use refentries to describe APIs. Refentries are fairly complicated and you
+should consult the docbook reference for further details. The example below was
+taken from that reference and shortened a bit for readability. -->
+
+<refentry id="re-1007-unmanagechildren-1">
+<refmeta>
+<refentrytitle>XtUnmanageChildren</refentrytitle>
+<refmiscinfo>Xt - Geometry Management</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XtUnmanageChildren
+</refname>
+<refpurpose>remove a list of children from a parent widget's managed
+list.
+<indexterm id="ix-1007-unmanagechildren-1"><primary>widgets</primary><secondary>removing</secondary></indexterm>
+<indexterm id="ix-1007-unmanagechildren-2"><primary>XtUnmanageChildren</primary></indexterm>
+</refpurpose>
+
+</refnamediv>
+<refsynopsisdiv>
+<refsynopsisdivinfo>
+<date>4 March 1996</date>
+</refsynopsisdivinfo>
+<synopsis>
+void XtUnmanageChildren(<replaceable class="parameter">children</replaceable>, <replaceable class="parameter">num_children</replaceable>)
+ WidgetList <replaceable class="parameter">children</replaceable>;
+ Cardinal <replaceable class="parameter">num_children</replaceable>;
+</synopsis>
+
+<refsect2 id="r2-1007-unmanagechildren-1">
+<title>Inputs</title>
+<variablelist>
+<varlistentry>
+<term><replaceable class="parameter">children</replaceable>
+</term>
+<listitem>
+<para>Specifies an array of child widgets. Each child must be of
+class RectObj or any subclass thereof.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term><replaceable class="parameter">num_children</replaceable>
+</term>
+<listitem>
+<para>Specifies the number of elements in <replaceable class="parameter">children</replaceable>.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refsect2></refsynopsisdiv>
+
+<refsect1 id="r1-1007-unmanagechildren-1">
+<title>Description
+</title>
+<para><function>XtUnmanageChildren()</function> unmaps the specified widgets
+and removes them from their parent's geometry management.
+The widgets will disappear from the screen, and (depending
+on its parent) may no longer have screen space allocated for
+them.
+</para>
+<para>Each of the widgets in the <replaceable class="parameter">children</replaceable> array must have
+the same parent.
+</para>
+<para>See the &ldquo;Algorithm&rdquo; section below for full details of the
+widget unmanagement procedure.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-2">
+<title>Usage</title>
+<para>Unmanaging widgets is the usual method for temporarily
+making them invisible. They can be re-managed with
+<function>XtManageChildren()</function>.
+</para>
+<para>You can unmap a widget, but leave it under geometry
+management by calling <function>XtUnmapWidget()</function>. You can
+destroy a widget's window without destroying the widget by
+calling <function>XtUnrealizeWidget()</function>. You can destroy a
+widget completely with <function>XtDestroyWidget()</function>.
+</para>
+<para>If you are only going to unmanage a single widget, it is
+more convenient to call <function>XtUnmanageChild()</function>. It is
+often more convenient to call <function>XtUnmanageChild()</function>
+several times than it is to declare and initialize an array
+of widgets to pass to <function>XtUnmanageChildren()</function>. Calling
+<function>XtUnmanageChildren()</function> is more efficient, however,
+because it only calls the parent's <function>change_managed()</function>
+method once.
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-3">
+<title>Algorithm
+</title>
+<para><function>XtUnmanageChildren()</function> performs the following:
+</para>
+<variablelist>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Ignores the child if it already is unmanaged or is being
+destroyed.
+</para>
+</listitem>
+</varlistentry>
+<varlistentry>
+<term>-
+</term>
+<listitem>
+<para>Otherwise, if the child is realized, it makes it nonvisible
+by unmapping it.
+</para>
+</listitem>
+</varlistentry>
+</variablelist>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="r1-1007-unmanagechildren-4">
+<title>Structures</title>
+<para>The <type>WidgetList</type> type is simply an array of widgets:
+</para>
+<screen id="sc-1007-unmanagechildren-1">typedef Widget *WidgetList;
+</screen>
+</refsect1>
+</refentry>
+
+</chapter>
+
+<chapter id="faq">
+<title>Questions and Answers</title>
+
+<!-- (OPTIONAL but recommended) This chapter should include all of the silly
+(and not-so-silly) newbie questions that fill up your mailbox. This chapter
+should be reserved for BRIEF questions and answers! If one question uses more
+than a page or so then it should probably be part of the
+"Using this Application" chapter instead. You should use links to
+cross-reference questions to the parts of your documentation that answer them.
+This is also a great place to provide pointers to other FAQ's if your users
+must do some complicated configuration on other programs in order for your
+application work. -->
+
+&reporting.bugs;
+&updating.documentation;
+
+<qandaset id="faqlist">
+<qandaentry>
+<question>
+<para>My Mouse doesn't work. How do I quit &appname;?</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 can't I 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>
+&appname;
+</para>
+<para>
+Program copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+<para>
+Contributors:
+<itemizedlist>
+<listitem><para>Konqui the KDE Dragon <email>konqui@kde.org</email></para>
+</listitem>
+<listitem><para>Tux the Linux Penguin <email>tux@linux.org</email></para>
+</listitem>
+</itemizedlist>
+</para>
+
+<para>
+Documentation copyright %{YEAR} %{AUTHOR} <email>%{EMAIL}</email>
+</para>
+
+<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
+
+&underFDL; <!-- FDL: do not remove -->
+
+<!-- Determine which license your application is licensed under,
+ and delete all the remaining licenses below:
+
+ (NOTE: All documentation are licensed under the FDL,
+ regardless of what license the application uses) -->
+
+&underGPL; <!-- GPL License -->
+&underBSDLicense; <!-- BSD License -->
+&underArtisticLicense; <!-- BSD Artistic License -->
+&underX11License; <!-- X11 License -->
+
+</chapter>
+
+<appendix id="installation">
+<title>Installation</title>
+
+<sect1 id="getting-appname">
+<title>How to obtain &appname;</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="requirements">
+<title>Requirements</title>
+
+<!--
+List any special requirements for your application here. This should include:
+.Libraries or other software that is not included in kdesupport,
+kdelibs, or kdebase.
+.Hardware requirements like amount of RAM, disk space, graphics card
+capabilities, screen resolution, special expansion cards, etc.
+.Operating systems the app will run on. If your app is designed only for a
+specific OS, (you wrote a graphical LILO configurator for example) put this
+information here.
+-->
+
+<para>
+In order to successfully use &appname;, you need &kde; 1.1. Foobar.lib is
+required in order to support the advanced &appname; features. &appname; uses
+about 5 megs of memory to run, but this may vary depending on your
+platform and configuration.
+</para>
+
+<para>
+All required libraries as well as &appname; itself can be found
+on <ulink url="ftp://ftp.appname.org">The &appname; home page</ulink>.
+</para>
+
+<!-- For a list of updates, you may refer to the application web site
+or the ChangeLog file, or ... -->
+<para>
+You can find a list of changes at <ulink
+url="http://apps.kde.org/appname">http://apps.kde.org/appname</ulink>.
+</para>
+</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>
+
+<sect1 id="configuration">
+<title>Configuration</title>
+
+<para>Don't forget to tell your system to start the <filename>dtd</filename>
+dicer-toaster daemon first, or &appname; won't work !</para>
+
+</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:tabstop=2:shiftwidth=2:expandtab
+-->
+
diff --git a/app_templates/kioslave/setup.py b/app_templates/kioslave/setup.py
new file mode 100755
index 0000000..f9b9e30
--- /dev/null
+++ b/app_templates/kioslave/setup.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+###########################################################################
+# setup - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : YOUR@EMAIL.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import kdedistutils
+
+kdedistutils.setup(name="kioslave",
+ version="0.1.0",
+ author="AUTHOR",
+ author_email="YOUR@EMAIL.com",
+ url="http://www.TESTAPP.com/",
+ min_kde_version = "3.0.0",
+ min_qt_version = "3.0.0",
+ license = "GPL",
+ application_data = ['src/kioslave.py'],
+ docbooks = [ ('doc/en','en') ],
+ kioslaves = [ ('src/kioslave.protocol','kioslave.py')] )
diff --git a/app_templates/kioslave/src/kioslave.lsm b/app_templates/kioslave/src/kioslave.lsm
new file mode 100644
index 0000000..43d0d5f
--- /dev/null
+++ b/app_templates/kioslave/src/kioslave.lsm
@@ -0,0 +1,16 @@
+Begin3
+Title: $APPNAME$ -- Some description
+Version: $VERSION$
+Entered-date:
+Description:
+Keywords: KDE Qt
+Author: $AUTHOR$ <$EMAIL$>
+Maintained-by: $AUTHOR$ <$EMAIL$>
+Home-page:
+Alternate-site:
+Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
+ xxxxxx $APPNAMELC$-$VERSION$.tar.gz
+ xxx $APPNAMELC$-$VERSION$.lsm
+Platform: Linux. Needs KDE
+Copying-policy: $LICENSE$
+End
diff --git a/app_templates/kioslave/src/kioslave.protocol b/app_templates/kioslave/src/kioslave.protocol
new file mode 100644
index 0000000..01dc5bb
--- /dev/null
+++ b/app_templates/kioslave/src/kioslave.protocol
@@ -0,0 +1,13 @@
+[Protocol]
+exec=kioslave
+protocol=kioslave
+input=none
+output=filesystem
+listing=Name,Type,Size,Date
+reading=true
+writing=true
+makedir=true
+deleting=true
+linking=false
+moving=true
+maxInstances=1
diff --git a/app_templates/kioslave/src/kioslave.py b/app_templates/kioslave/src/kioslave.py
new file mode 100755
index 0000000..63e34f0
--- /dev/null
+++ b/app_templates/kioslave/src/kioslave.py
@@ -0,0 +1,618 @@
+#!/usr/bin/python
+###########################################################################
+# kioslave - description #
+# ------------------------------ #
+# begin : Mon May 2 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : your@email.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+# Import the required Qt and KDE modules.
+from qt import *
+from kio import *
+from kdecore import *
+import os, time
+
+# For debugging purposes, import the sys and traceback modules.
+import sys, traceback
+
+DEBUG = 1
+
+# Define a class which will be used to create IOSlave instances.
+############################################################################
+class SlaveClass(KIO.SlaveBase):
+ """SlaveClass(KIO.SlaveBase)
+
+ See kdelibs/kio/kio/slavebase.h for virtual functions to override.
+ """
+
+ ########################################################################
+ def __init__(self, pool, app):
+ # We must call the initialisation method of the base class.
+ KIO.SlaveBase.__init__(self, "kioslave", pool, app)
+
+ # Attach the DCOP client object associated with this IOSlave to the
+ # DCOP server.
+ self.dcopClient().attach()
+
+ self.debug("dcopClient: %i" % self.dcopClient().isRegistered())
+
+ self.contents = RAMDir(None,u"/")
+
+ self.host = ""
+ self.document = None
+ self.file = None
+
+ self.debug("Exiting __init__ now");
+
+ ########################################################################
+ def __del__(self):
+ pass
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def setHost(self, host, port, user, passwd):
+ self.debug(
+ "setHost: %s %s %s %s" % (
+ repr(unicode(host)), repr(unicode(port)),
+ repr(unicode(user)), repr(unicode(passwd))
+ )
+ )
+
+ # This IOSlave does not allow a host to be specified as part of
+ # a URL.
+ if unicode(host) != u"":
+ self.closeConnection()
+ self.error(KIO.ERR_MALFORMED_URL, host)
+ return
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def openConnection(self):
+ # Don't call self.finished() in this method.
+ self.debug("openConnection")
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def closeConnection(self):
+ # Don't call self.finished() in this method.
+ self.debug("closeConnection")
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def get(self, url):
+ path = str(url.path())
+ self.debug("get(): %s" % path)
+ self.openConnection()
+
+ item = self.contents.resolve(path)
+ if item is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, path)
+ return
+
+ if item.isDir():
+ self.error(KIO.ERR_IS_DIRECTORY, path)
+
+ self.totalSize(len(item.getData()))
+ self.data(QByteArray(item.getData()))
+
+ # The end of the data string.
+ self.data(QByteArray())
+
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def put(self, url, permissions, overwrite, resume):
+ self.debug("put")
+ self.openConnection()
+
+ path = str(url.path())
+ parts = path.split('/')
+ filename = parts[-1]
+ parent_dir = self.contents.resolveParent(path)
+ if parent_dir is None:
+ parent_path = '/'.join(parts[:-1])
+ self.error(KIO.ERR_DOES_NOT_EXIST, parent_path)
+ return
+
+ if parent_dir.contains(filename):
+ if not overwrite:
+ self.error(KIO.ERR_COULD_NOT_WRITE, parent_path)
+ return
+ else:
+ parent_dir.unlink(filename)
+
+ # Read data from the application.
+ bytearray = QByteArray()
+ bytes = 0
+ data = ""
+
+ while True:
+ self.dataReq()
+ result = self.readData(bytearray)
+
+ if result <= 0:
+ # An error or the end of data was encountered.
+ break
+
+ # The number of bytes read is given in the result.
+ bytes = bytes + result
+ data = data + str(bytearray)
+
+ parent_dir.insert(RAMFile(parent_dir,filename,data))
+
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def stat(self, url):
+ self.debug("stat: %s" % url.url(0,0))
+ self.openConnection()
+
+ self.debug("path:%s"% url.path())
+
+ # Return info the for the root.
+ item = self.contents.resolve(str(url.path()))
+ if item is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, str(url.path()))
+ return
+
+ self.statEntry(item.getStatEntry())
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def mimetype(self, url):
+ self.debug("mimetype: %s" % unicode(url))
+ self.openConnection()
+
+ path = str(url.path())
+ item = self.contents.resolve(path)
+ if item is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, path)
+ return
+
+ self.mimeType(item.getMimetype())
+
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def listDir(self, url):
+ # The "url" argument is a kdecore.KURL object.
+ self.debug("listDir: %s" % str(url.prettyURL(0)))
+ self.openConnection()
+
+ path = str(url.path())
+ dir = self.contents.resolve(path)
+ if dir is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, path)
+ return
+
+ if not dir.isDir():
+ self.error(KIO.ERR_IS_FILE, path)
+ return
+
+ for entry in dir.listDir():
+ self.listEntry(entry, 0)
+
+ self.listEntry([], 1) # Signal that the list is finished.
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def mkdir(self, url, permissions):
+ self.debug("mkdir")
+ self.openConnection()
+
+ parent_path = str(url.path())
+ parent_dir = self.contents.resolveParent(parent_path)
+ if parent_dir is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, parent_path)
+ return
+
+ new_dir_obj = parent_dir.mkdir(parent_path.split('/')[-1])
+ if new_dir_obj is None:
+ self.error(KIO.ERR_COULD_NOT_MKDIR, parent_path)
+ return
+
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def rename(self, src, dest, overwrite):
+ self.debug("rename: %s %s" % (src.path(), dest.path()))
+ self.openConnection()
+
+ src_path = str(src.path())
+ src_obj = self.contents.resolve(src_path)
+ if src_obj is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, src_path)
+ return
+
+ # See if the destination path already exists.
+ dest_path = str(dest.path())
+ dest_obj = self.contents.resolve(dest_path)
+ if dest_obj is not None:
+ if dest_obj is src_obj:
+ self.finished() # Done already.
+ return
+
+ if not overwrite:
+ # Can't overwrite. not bad.
+ self.error(KIO.ERR_CANNOT_RENAME, dest_path)
+ return
+ else:
+ # Over write, just remove the object.
+ dest_obj.getParent().unlink(dest_obj.getName())
+
+ dest_dir = self.contents.resolveParent(dest_path)
+ if dest_dir is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, dest_path)
+ return
+
+ src_obj.getParent().unlink(src_obj)
+ src_obj.setName(dest_path.split('/')[-1])
+ dest_dir.insert(src_obj)
+
+ self.finished()
+
+ # Other possible file operations are represented by the following
+ # methods which are not implemented.
+
+ #def symlink(self, target, dest, overwrite):
+ # debug("symlink")
+ # ...
+ # self.finished()
+
+ #def chmod(self, url, permissions):
+ # debug("chmod")
+ # ...
+ # self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def copy(self, src, dest, permissions, overwrite):
+ self.debug("copy")
+ self.openConnection()
+
+ src_path = str(src.path())
+ src_obj = self.contents.resolve(src_path)
+ if src_obj is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, src_path)
+ return
+
+ # See if the destination path already exists.
+ dest_path = str(dest.path())
+ dest_obj = self.contents.resolve(dest_path)
+ if dest_obj is not None:
+ if dest_obj is src_obj:
+ self.finished() # Done already.
+ return
+
+ if not overwrite:
+ # Can't overwrite. not bad.
+ self.error(KIO.ERR_COULD_NOT_WRITE, dest_path)
+ return
+ else:
+ # Over write, just remove the object.
+ dest_obj.getParent().unlink(dest_obj.getName())
+
+ dest_dir = self.contents.resolveParent(dest_path)
+ if dest_dir is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, dest_path)
+ return
+
+ new_obj = src_obj.copy()
+ new_obj.setName(dest_path.split('/')[-1])
+ dest_dir.insert(new_obj)
+
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def del_(self, url, isfile):
+ self.debug("del_")
+ self.openConnection()
+
+ path = str(url.path())
+ item = self.contents.resolve(path)
+ if item is None:
+ self.error(KIO.ERR_DOES_NOT_EXIST, path)
+ return
+
+ item.getParent().unlink(item.getName())
+
+ self.finished()
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def disconnectSlave(self):
+ self.debug("disconnectSlave")
+ return
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def dispatchLoop(self):
+ self.debug("dispatchLoop")
+ KIO.SlaveBase.dispatchLoop(self)
+
+ ########################################################################
+ # KIO.SlaveBase method
+ def error(self,errid,text):
+ self.debug("error: %i, %s" % (errid,text) )
+ KIO.SlaveBase.error(self,errid,text)
+
+ ############################################################################
+ def debug(self,msg):
+ if DEBUG == 0: return
+ print "kioslave:"+str(msg)+"\n"
+ sys.stdout.flush()
+
+############################################################################
+class RAMDir(object):
+ ############################################################################
+ def __init__(self,parent,name):
+ self.contents = {}
+ self.parent = parent
+ self.name = str(name)
+
+ ############################################################################
+ def getParent(self):
+ return self.parent
+
+ ############################################################################
+ def setParent(self,parent):
+ self.parent = parent
+
+ ############################################################################
+ def getName(self):
+ return self.name
+
+ ############################################################################
+ def setName(self,name):
+ self.name = str(name)
+
+ ############################################################################
+ def resolve(self,path):
+ while path.endswith('/'):
+ path = path[:-1]
+ while path.startswith('/'):
+ path = path[1:]
+
+ if path=='':
+ return self
+
+ parts = path.split('/')
+ self.debug(path)
+ for item in self.contents.keys():
+ self.debug("keys:"+item)
+
+ if parts[0] in self.contents:
+ return self.contents[parts[0]].resolve('/'.join(parts[1:]))
+ self.debug("CHECKPOINT 1")
+ return None
+
+ ############################################################################
+ def resolveParent(self,path):
+ while path.endswith('/'):
+ path = path[:-1]
+ while path.startswith('/'):
+ path = path[1:]
+
+ if path=="":
+ return None
+
+ parts = path.split('/')
+ return self.resolve('/'.join(parts[:-1]))
+
+ ############################################################################
+ def mkdir(self,name):
+ if name in self.contents:
+ return None
+ new_dir = RAMDir(self,name)
+ self.contents[name] = new_dir
+ return new_dir
+
+ ############################################################################
+ def getStatEntry(self):
+ # Return info the for the root.
+ length = 0
+
+ entry = []
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_NAME
+ atom.m_str = self.name
+ #debug("name: %s" % name)
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_SIZE
+ atom.m_long = length
+ #debug("length: %i" % length)
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_MODIFICATION_TIME
+ # Number of seconds since the epoch.
+ atom.m_long = int(time.time())
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_ACCESS
+ # The usual octal permission information (rw-r--r-- in this case).
+ atom.m_long = 0644
+ entry.append(atom)
+
+ # If the stat method is implemented then entries _must_ include
+ # the UDE_FILE_TYPE atom or the whole system may not work at all.
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_FILE_TYPE
+ #atom.m_long = os.path.stat.S_IFREG
+ atom.m_long = os.path.stat.S_IFDIR
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_MIME_TYPE
+ atom.m_str = self.getMimetype()
+ entry.append(atom)
+
+ return entry
+
+ ############################################################################
+ def listDir(self):
+ list = []
+ for item in self.contents.values():
+ list.append(item.getStatEntry())
+ return list
+
+ ############################################################################
+ def isDir(self):
+ return True
+
+ ############################################################################
+ def insert(self,item):
+ self.contents[item.getName()] = item
+
+ ############################################################################
+ def contains(self,name):
+ return name in self.contents
+
+ ############################################################################
+ def unlink(self,name):
+ if str(name) in self.contents:
+ del self.contents[str(name)]
+
+ ############################################################################
+ def debug(self,msg):
+ if DEBUG == 0: return
+
+ print "kioslave:"+str(msg)+"\n"
+ sys.stdout.flush()
+
+ ############################################################################
+ def getMimetype(self):
+ return "inode/directory"
+
+ ############################################################################
+ def copy(self):
+ new_dir = RAMDir(None,self.name)
+
+ for item in self.contents.values():
+ new_item = item.copy()
+ new_item.setParent(new_dir)
+ new_dir.insert(new_item)
+
+ return new_dir
+
+############################################################################
+class RAMFile(object):
+ ############################################################################
+ def __init__(self,parent,name,data=None):
+ self.parent = parent
+ self.name = str(name)
+ self.data = data
+
+ ############################################################################
+ def getParent(self):
+ return self.parent
+
+ ############################################################################
+ def setParent(self,parent):
+ self.parent = parent
+
+ ############################################################################
+ def getName(self):
+ return self.name
+
+ ############################################################################
+ def setName(self,name):
+ self.name = str(name)
+
+ ############################################################################
+ def resolve(self,path):
+ if path!="":
+ return None
+ return self
+
+ ############################################################################
+ def getData(self):
+ return self.data
+
+ ############################################################################
+ def resolveParent(self,path):
+ return None
+
+ ############################################################################
+ def getStatEntry(self):
+ # Return info the for the root.
+ length = 0
+
+ entry = []
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_NAME
+ atom.m_str = self.name
+ #debug("name: %s" % name)
+ entry.append(atom)
+
+ length = 0
+ if self.data is not None:
+ length = len(self.data)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_SIZE
+ atom.m_long = length
+ #debug("length: %i" % length)
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_MODIFICATION_TIME
+ # Number of seconds since the epoch.
+ atom.m_long = int(time.time())
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_ACCESS
+ # The usual octal permission information (rw-r--r-- in this case).
+ atom.m_long = 0644
+ entry.append(atom)
+
+ # If the stat method is implemented then entries _must_ include
+ # the UDE_FILE_TYPE atom or the whole system may not work at all.
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_FILE_TYPE
+ atom.m_long = os.path.stat.S_IFREG
+ entry.append(atom)
+
+ atom = KIO.UDSAtom()
+ atom.m_uds = KIO.UDS_MIME_TYPE
+ atom.m_str = self.getMimetype()
+ entry.append(atom)
+
+ return entry
+
+ ############################################################################
+ def isDir(self):
+ return False
+
+ ############################################################################
+ def getMimetype(self):
+ return "text/html"
+
+ ############################################################################
+ def copy(self):
+ return RAMFile(None,self.name,self.data)
+
+############################################################################
+def SlaveFactory(pool, app):
+ slave = SlaveClass(pool, app)
+ slave.dispatchLoop()