summaryrefslogtreecommitdiffstats
path: root/app_templates/kdeapp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:16:46 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:16:46 +0000
commita7af74e75730559f7f9661e449eb269e356d9907 (patch)
tree72026b40b3a513aa21d630fb09ae10edab7f9e18 /app_templates/kdeapp
downloadpytdeextensions-a7af74e75730559f7f9661e449eb269e356d9907.tar.gz
pytdeextensions-a7af74e75730559f7f9661e449eb269e356d9907.zip
Added KDE3 version of pykdeextensions
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/pykdeextensions@1097589 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'app_templates/kdeapp')
-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
20 files changed, 1519 insertions, 0 deletions
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 [email protected]
+with lots of help from: Eric Bischoff [email protected]
+and Frederik Fouvry [email protected]
+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>[email protected]</email></para>
+</listitem>
+<listitem><para>Tux the Linux Penguin <email>[email protected]</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 : [email protected] #
+# #
+###########################################################################
+# #
+# 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="[email protected]",
+ 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��_��% ��}�f�b{�Z��RdY�7�C2�TWՓ�Ӳ��O>�f�X�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��BI�T
+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�ʼn��/���? 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��Z�W'^]�,���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 : [email protected] #
+# #
+###########################################################################
+# #
+# 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, "[email protected]")
+ aboutdata.addAuthor("AUTHOR", None, "[email protected]")
+ 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 : [email protected] #
+# #
+###########################################################################
+# #
+# 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 : [email protected] #
+# #
+###########################################################################
+# #
+# 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 : [email protected] #
+# #
+###########################################################################
+# #
+# 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)
+