summaryrefslogtreecommitdiffstats
path: root/languages/cpp/app_templates/kapp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2014-05-25 15:37:31 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2014-05-25 15:37:31 +0900
commit6392f5a9dfce2bf83617d49bb7f332181ec6004e (patch)
treeab69e390f7962b7e7dda1a3a64f035c61c751cf4 /languages/cpp/app_templates/kapp
parentaba2788b428dc53243407902e9ccbb20b97a69fd (diff)
downloadtdevelop-6392f5a9dfce2bf83617d49bb7f332181ec6004e.tar.gz
tdevelop-6392f5a9dfce2bf83617d49bb7f332181ec6004e.zip
Revert "Finish renaming tdevelop components"
This reverts commit 722ce1efbac31c61b1d4b13f7e075c9f311e3e73.
Diffstat (limited to 'languages/cpp/app_templates/kapp')
-rw-r--r--languages/cpp/app_templates/kapp/CMakeLists.txt27
-rw-r--r--languages/cpp/app_templates/kapp/Makefile.am19
-rw-r--r--languages/cpp/app_templates/kapp/README81
-rw-r--r--languages/cpp/app_templates/kapp/app.cpp247
-rw-r--r--languages/cpp/app_templates/kapp/app.desktop44
-rw-r--r--languages/cpp/app_templates/kapp/app.h90
-rw-r--r--languages/cpp/app_templates/kapp/app.kdevses13
-rw-r--r--languages/cpp/app_templates/kapp/app.tdevelop168
-rw-r--r--languages/cpp/app_templates/kapp/app_client.cpp26
-rw-r--r--languages/cpp/app_templates/kapp/appiface.h17
-rw-r--r--languages/cpp/app_templates/kapp/appui.rc8
-rw-r--r--languages/cpp/app_templates/kapp/appview.cpp107
-rw-r--r--languages/cpp/app_templates/kapp/appview.h78
-rw-r--r--languages/cpp/app_templates/kapp/kapp.kdevtemplate253
-rw-r--r--languages/cpp/app_templates/kapp/kapp.pngbin0 -> 6320 bytes
-rw-r--r--languages/cpp/app_templates/kapp/main.cpp61
-rw-r--r--languages/cpp/app_templates/kapp/pref.cpp42
-rw-r--r--languages/cpp/app_templates/kapp/pref.h40
-rw-r--r--languages/cpp/app_templates/kapp/src-Makefile.am43
-rw-r--r--languages/cpp/app_templates/kapp/subdirs3
20 files changed, 1367 insertions, 0 deletions
diff --git a/languages/cpp/app_templates/kapp/CMakeLists.txt b/languages/cpp/app_templates/kapp/CMakeLists.txt
new file mode 100644
index 00000000..bfe6d93d
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/CMakeLists.txt
@@ -0,0 +1,27 @@
+#################################################
+#
+# (C) 2010-2011 Serghei Amelian
+# serghei (DOT) amelian (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+add_custom_target( kapp.tar.gz ALL
+ COMMAND tar zcf kapp.tar.gz -C ${CMAKE_CURRENT_SOURCE_DIR}
+ app.cpp app.h pref.cpp pref.h appview.cpp appview.h
+ appiface.h app_client.cpp main.cpp appui.rc src-Makefile.am
+ kapp.png app.tdevelop subdirs README
+)
+
+
+install( FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/kapp.tar.gz kapp.png
+ DESTINATION ${DATA_INSTALL_DIR}/kdevappwizard )
+
+
+install( FILES
+ kapp.kdevtemplate
+ DESTINATION ${DATA_INSTALL_DIR}/kdevappwizard/templates )
diff --git a/languages/cpp/app_templates/kapp/Makefile.am b/languages/cpp/app_templates/kapp/Makefile.am
new file mode 100644
index 00000000..145551d3
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/Makefile.am
@@ -0,0 +1,19 @@
+dataFiles = app.cpp app.h pref.cpp pref.h appview.cpp appview.h \
+ appiface.h app_client.cpp main.cpp appui.rc src-Makefile.am \
+ kapp.png app.tdevelop subdirs README
+
+templateName = kapp
+
+### no need to change below:
+template_DATA = $(templateName).kdevtemplate
+templatedir = ${appwizarddatadir}/templates
+
+appwizarddatadir = ${kde_datadir}/kdevappwizard
+$(templateName).tar.gz: ${dataFiles}
+ $(TAR) -cf $(templateName).tar -C $(srcdir) ${dataFiles}
+ $(GZIP_COMMAND) -f9 $(templateName).tar
+
+archivedir = ${appwizarddatadir}
+archive_DATA = $(templateName).tar.gz ${templateName}.png
+
+CLEANFILES = *.tar.gz \ No newline at end of file
diff --git a/languages/cpp/app_templates/kapp/README b/languages/cpp/app_templates/kapp/README
new file mode 100644
index 00000000..7720e6b4
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/README
@@ -0,0 +1,81 @@
+-----------------------------------------------
+Kde application framework template quickstart
+Author: Thomas Nagy
+Date: 2004-03-22
+-----------------------------------------------
+
+This README file explains you basic things for starting with
+this application template.
+
+
+** Building and installing **
+
+* Build the configure script by "make -f Makefile.cvs"
+
+* To clean, use "make clean", and to clean everything
+(remove the makefiles, etc), use "make distclean"
+
+* To distribute your program, try "make dist".
+This will make a compact tarball archive of your release with the
+necessary scripts inside.
+
+* Modifying the auto-tools scripts
+for automake scripts there is an excellent tutorial there :
+http://developer.kde.org/documentation/other/makefile_am_howto.html
+
+* Simplify your life : install the project in your home directory for
+testing purposes.
+./configure --prefix=/home/user/dummyfolder/
+In the end when you finished the development you can
+rm -rf /home/user/dummyfolder/
+without fear.
+
+
+** Technologies **
+
+* Build the menus of your application easily
+kde applications now use an xml file (*ui.rc file) to build the menus.
+This allow a great customization of the application. However, when
+programming the menu is shown only after a "make install"
+
+For more details, consult :
+http://devel-home.kde.org/~larrosa/tutorial/p9.html
+http://developer.kde.org/documentation/tutorials/xmlui/preface.html
+
+* Use TDEConfig XT to create your configuration dialogs and make
+them more maintainable.
+
+For more details, consult :
+http://developer.kde.org/documentation/tutorials/tdeconfigxt/tdeconfigxt.html
+
+* With KParts, you can embed other kde components in your program, or make your program
+embeddable in other apps. For example, the kmplayer kpart can be called to play videos
+in your app.
+
+For more details, consult :
+http://www-106.ibm.com/developerworks/library/l-tdeparts/
+http://developer.kde.org/documentation/tutorials/dot/writing-plugins.html
+http://developer.kde.org/documentation/tutorials/developing-a-plugin-structure/index.html
+
+* With dcop, you can control your app from other applications
+Make sure to include K_DCOP and a kdcop: section in your .h file
+http://developer.kde.org/documentation/tutorials/dot/dcopiface/dcop-interface.html
+
+
+** Documentation **
+
+* For the translations :
+1. Download a patched gettext which can be found at:
+ http://public.kde.planetmirror.com/pub/kde/devel/gettext-kde/
+2. Install that gettext in ~/bin/
+3. cd ~/yourproject, export PATH=~/bin:$PATH, export
+TDEDIR=/where_your_TDE3_is
+4. make -f admin/Makefile.common package-messages
+5. make package-messages
+6. Translate the po files (not the pot!!) with kbabel or xemacs
+
+* Do not forget to write the documentation for your kde app
+edit the documentation template index.docbook in doc/
+
+
+
diff --git a/languages/cpp/app_templates/kapp/app.cpp b/languages/cpp/app_templates/kapp/app.cpp
new file mode 100644
index 00000000..774efe8e
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/app.cpp
@@ -0,0 +1,247 @@
+%{CPP_TEMPLATE}
+
+#include "%{APPNAMELC}.h"
+#include "pref.h"
+
+#include <tqdragobject.h>
+#include <kprinter.h>
+#include <tqpainter.h>
+#include <tqpaintdevicemetrics.h>
+
+#include <tdeglobal.h>
+#include <tdelocale.h>
+#include <kiconloader.h>
+#include <tdeversion.h>
+#include <kstatusbar.h>
+#include <tdeaccel.h>
+#include <tdeio/netaccess.h>
+#include <tdefiledialog.h>
+#include <tdeconfig.h>
+#include <kurl.h>
+#include <kurldrag.h>
+#include <kurlrequesterdlg.h>
+
+#include <tdestdaccel.h>
+#include <tdeaction.h>
+#include <kstdaction.h>
+
+%{APPNAME}::%{APPNAME}()
+ : TDEMainWindow( 0, "%{APPNAME}" ),
+ m_view(new %{APPNAME}View(this)),
+ m_printer(0)
+{
+ // accept dnd
+ setAcceptDrops(true);
+
+ // tell the TDEMainWindow that this is indeed the main widget
+ setCentralWidget(m_view);
+
+ // then, setup our actions
+ setupActions();
+
+ // and a status bar
+ 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.
+ setupGUI();
+
+ // allow the view to change the statusbar and caption
+ connect(m_view, TQT_SIGNAL(signalChangeStatusbar(const TQString&)),
+ this, TQT_SLOT(changeStatusbar(const TQString&)));
+ connect(m_view, TQT_SIGNAL(signalChangeCaption(const TQString&)),
+ this, TQT_SLOT(changeCaption(const TQString&)));
+
+}
+
+%{APPNAME}::~%{APPNAME}()
+{
+}
+
+void %{APPNAME}::load(const KURL& url)
+{
+ TQString target;
+ // 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 0
+ // download the contents
+ if (TDEIO::NetAccess::download(url, target))
+ {
+ // set our caption
+ setCaption(url);
+
+ // load in the file (target is always local)
+ loadFile(target);
+
+ // and remove the temp file
+ TDEIO::NetAccess::removeTempFile(target);
+ }
+ #endif
+
+ setCaption(url.prettyURL());
+ m_view->openURL(url);
+}
+
+void %{APPNAME}::setupActions()
+{
+ KStdAction::openNew(this, TQT_SLOT(fileNew()), actionCollection());
+ KStdAction::open(this, TQT_SLOT(fileOpen()), actionCollection());
+ KStdAction::save(this, TQT_SLOT(fileSave()), actionCollection());
+ KStdAction::saveAs(this, TQT_SLOT(fileSaveAs()), actionCollection());
+ KStdAction::print(this, TQT_SLOT(filePrint()), actionCollection());
+ KStdAction::quit(kapp, TQT_SLOT(quit()), actionCollection());
+
+ KStdAction::preferences(this, TQT_SLOT(optionsPreferences()), actionCollection());
+
+ // this doesn't do anything useful. it's just here to illustrate
+ // how to insert a custom menu and menu item
+ TDEAction *custom = new TDEAction(i18n("Cus&tom Menuitem"), 0,
+ this, TQT_SLOT(optionsPreferences()),
+ actionCollection(), "custom_action");
+}
+
+void %{APPNAME}::saveProperties(TDEConfig *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 (!m_view->currentURL().isEmpty()) {
+#if KDE_IS_VERSION(3,1,3)
+ config->writePathEntry("lastURL", m_view->currentURL());
+#else
+ config->writeEntry("lastURL", m_view->currentURL());
+#endif
+ }
+}
+
+void %{APPNAME}::readProperties(TDEConfig *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'
+
+ TQString url = config->readPathEntry("lastURL");
+
+ if (!url.isEmpty())
+ m_view->openURL(KURL(url));
+}
+
+void %{APPNAME}::dragEnterEvent(TQDragEnterEvent *event)
+{
+ // accept uri drops only
+ event->accept(KURLDrag::canDecode(event));
+}
+
+void %{APPNAME}::dropEvent(TQDropEvent *event)
+{
+ // this is a very simplistic implementation of a drop event. we
+ // will only accept a dropped URL. the TQt dnd code can do *much*
+ // much more, so please read the docs there
+ KURL::List urls;
+
+ // see if we can decode a URI.. if not, just ignore it
+ if (KURLDrag::decode(event, urls) && !urls.isEmpty())
+ {
+ // okay, we have a URI.. process it
+ const KURL &url = urls.first();
+
+ // load in the file
+ load(url);
+ }
+}
+
+void %{APPNAME}::fileNew()
+{
+ // 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
+ (new %{APPNAME})->show();
+}
+
+void %{APPNAME}::fileOpen()
+{
+ // 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(TQString(), this, i18n("Open Location") );
+*/
+ // standard filedialog
+ KURL url = KFileDialog::getOpenURL(TQString(), TQString(), this, i18n("Open Location"));
+ if (!url.isEmpty())
+ m_view->openURL(url);
+}
+
+void %{APPNAME}::fileSave()
+{
+ // 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
+}
+
+void %{APPNAME}::fileSaveAs()
+{
+ // this slot is called whenever the File->Save As menu is selected,
+ KURL file_url = KFileDialog::getSaveURL();
+ if (!file_url.isEmpty() && file_url.isValid())
+ {
+ // save your info, here
+ }
+}
+
+void %{APPNAME}::filePrint()
+{
+ // 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 (!m_printer) m_printer = new KPrinter;
+ if (m_printer->setup(this))
+ {
+ // setup the printer. with TQt, you always "print" to a
+ // TQPainter.. whether the output medium is a pixmap, a screen,
+ // or paper
+ TQPainter p;
+ p.begin(m_printer);
+
+ // we let our view do the actual printing
+ TQPaintDeviceMetrics metrics(m_printer);
+ m_view->print(&p, metrics.height(), metrics.width());
+
+ // and send the result to the printer
+ p.end();
+ }
+}
+
+void %{APPNAME}::optionsPreferences()
+{
+ // popup some sort of preference dialog, here
+ %{APPNAME}Preferences dlg;
+ if (dlg.exec())
+ {
+ // redo your settings
+ }
+}
+
+void %{APPNAME}::changeStatusbar(const TQString& text)
+{
+ // display the text on the statusbar
+ statusBar()->message(text);
+}
+
+void %{APPNAME}::changeCaption(const TQString& text)
+{
+ // display the text on the caption
+ setCaption(text);
+}
+#include "%{APPNAMELC}.moc"
diff --git a/languages/cpp/app_templates/kapp/app.desktop b/languages/cpp/app_templates/kapp/app.desktop
new file mode 100644
index 00000000..5c7ab928
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/app.desktop
@@ -0,0 +1,44 @@
+[Desktop Entry]
+Name=%{APPNAME}
+Exec=%{APPNAMELC} %i -caption "%c"
+Icon=%{APPNAMELC}
+Type=Application
+DocPath=%{APPNAMELC}/%{APPNAMELC}.html
+Comment=A TDE KPart Application
+Comment[br]=Ur meziant Kpart evit TDE
+Comment[ca]=Una aplicació KPart per al TDE
+Comment[cy]=Cymhwysiad KPart TDE
+Comment[da]=Et TDE KPart-program
+Comment[de]=Eine auf der Komponententechnik KPart basierende TDE-Anwendung
+Comment[el]=Μια εφαρμογή KPart του TDE
+Comment[es]=Una aplicación KPart de TDE
+Comment[et]=TDE KPart rakendus
+Comment[eu]=TDE KPart aplikazio bat
+Comment[fa]=یک کاربرد TDE KPart
+Comment[fr]=Une application KPart pour TDE
+Comment[ga]=Feidhmchlár KPart TDE
+Comment[gl]=Unha aplicación KPart de TDE
+Comment[hi]=एक केडीई के-पार्ट अनुप्रयोग
+Comment[hu]=KPart-alapú TDE-alkalmazás
+Comment[is]=TDE KPart forrit
+Comment[it]=Applicazione KPart di TDE
+Comment[ja]=TDE KPart アプリケーション
+Comment[lt]=TDE KPart programa
+Comment[nds]=En KPart-Deelprogramm för TDE
+Comment[ne]=एउटा केडीई KPart अनुप्रयोग
+Comment[nl]=Een TDE KPart-toepassing
+Comment[pl]=Osadzalny element KPart TDE
+Comment[pt]=Uma Aplicação KPart do TDE
+Comment[pt_BR]=Um Aplicativo KPart do TDE
+Comment[ru]=Приложение KPart для TDE
+Comment[sk]=TDE KPart aplikácia
+Comment[sl]=Program KPart za TDE
+Comment[sr]=TDE KPart програм
+Comment[sr@Latn]=TDE KPart program
+Comment[sv]=Ett TDE Kpart-program
+Comment[ta]=கெடி கெபார்ட் பயன்பாடு
+Comment[tg]=Ба кор андохтани KPart барои TDE
+Comment[tr]=Bir TDE KPart Uygulaması
+Comment[zh_CN]=一个 TDE KPart 应用程序
+Comment[zh_TW]=TDE KPart 應用程式
+Terminal=false
diff --git a/languages/cpp/app_templates/kapp/app.h b/languages/cpp/app_templates/kapp/app.h
new file mode 100644
index 00000000..5f39dd11
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/app.h
@@ -0,0 +1,90 @@
+%{H_TEMPLATE}
+
+#ifndef _%{APPNAMEUC}_H_
+#define _%{APPNAMEUC}_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <tdeapplication.h>
+#include <tdemainwindow.h>
+
+#include "%{APPNAMELC}view.h"
+
+class KPrinter;
+class KURL;
+
+/**
+ * This class serves as the main window for %{APPNAME}. It handles the
+ * menus, toolbars, and status bars.
+ *
+ * @short Main window class
+ * @author %{AUTHOR} <%{EMAIL}>
+ * @version %{VERSION}
+ */
+class %{APPNAME} : public TDEMainWindow
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Default Constructor
+ */
+ %{APPNAME}();
+
+ /**
+ * Default Destructor
+ */
+ virtual ~%{APPNAME}();
+
+ /**
+ * Use this method to load whatever file/URL you have
+ */
+ void load(const KURL& url);
+
+protected:
+ /**
+ * Overridden virtuals for TQt drag 'n drop (XDND)
+ */
+ virtual void dragEnterEvent(TQDragEnterEvent *event);
+ virtual void dropEvent(TQDropEvent *event);
+
+protected:
+ /**
+ * This function is called when it is time for the app to save its
+ * properties for session management purposes.
+ */
+ void saveProperties(TDEConfig *);
+
+ /**
+ * This function is called when this app is restored. The TDEConfig
+ * object points to the session management config file that was saved
+ * with @ref saveProperties
+ */
+ void readProperties(TDEConfig *);
+
+
+private slots:
+ void fileNew();
+ void fileOpen();
+ void fileSave();
+ void fileSaveAs();
+ void filePrint();
+ void optionsPreferences();
+
+ void changeStatusbar(const TQString& text);
+ void changeCaption(const TQString& text);
+
+private:
+ void setupAccel();
+ void setupActions();
+
+private:
+ %{APPNAME}View *m_view;
+
+ KPrinter *m_printer;
+};
+
+#endif // _%{APPNAMEUC}_H_
+
diff --git a/languages/cpp/app_templates/kapp/app.kdevses b/languages/cpp/app_templates/kapp/app.kdevses
new file mode 100644
index 00000000..dcd1c8c1
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/app.kdevses
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE KDevPrjSession>
+<KDevPrjSession>
+ <DocsAndViews NumberOfDocuments="0" />
+ <pluginList>
+ <kdevbookmarks>
+ <bookmarks/>
+ </kdevbookmarks>
+ <kdevdebugger>
+ <breakpointList/>
+ </kdevdebugger>
+ </pluginList>
+</KDevPrjSession>
diff --git a/languages/cpp/app_templates/kapp/app.tdevelop b/languages/cpp/app_templates/kapp/app.tdevelop
new file mode 100644
index 00000000..6a53f237
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/app.tdevelop
@@ -0,0 +1,168 @@
+<?xml version = '1.0'?>
+<tdevelop>
+ <general>
+ <author>%{AUTHOR}</author>
+ <email>%{EMAIL}</email>
+ <version>%{VERSION}</version>
+ <projectmanagement>KDevTDEAutoProject</projectmanagement>
+ <primarylanguage>C++</primarylanguage>
+ <keywords>
+ <keyword>C++</keyword>
+ <keyword>Code</keyword>
+ <keyword>Qt</keyword>
+ <keyword>TDE</keyword>
+ </keywords>
+ <projectdirectory>.</projectdirectory>
+ <absoluteprojectpath>false</absoluteprojectpath>
+ <description/>
+ <ignoreparts/>
+ </general>
+ <kdevcppsupport>
+ <qt>
+ <version>3</version>
+ <used>true</used>
+ <includestyle>3</includestyle>
+ <designerintegration>EmbeddedKDevDesigner</designerintegration>
+ </qt>
+ </kdevcppsupport>
+ <kdevautoproject>
+ <general>
+ <activetarget>src/%{APPNAMELC}</activetarget>
+ <useconfiguration>debug</useconfiguration>
+ </general>
+ <run>
+ <mainprogram>src/%{APPNAMELC}</mainprogram>
+ <terminal>false</terminal>
+ </run>
+ <make>
+ <envvars>
+ <envvar value="1" name="WANT_AUTOCONF_2_5" />
+ <envvar value="1" name="WANT_AUTOMAKE_1_6" />
+ </envvars>
+ <abortonerror>false</abortonerror>
+ <numberofjobs>1</numberofjobs>
+ <dontact>false</dontact>
+ <makebin/>
+ </make>
+ <configurations>
+ <optimized>
+ <builddir>optimized</builddir>
+ <ccompiler>kdevgccoptions</ccompiler>
+ <cxxcompiler>kdevgppoptions</cxxcompiler>
+ <f77compiler>kdevg77options</f77compiler>
+ <cxxflags>-O2 -g0</cxxflags>
+ </optimized>
+ <debug>
+ <configargs>--enable-debug=full</configargs>
+ <builddir>debug</builddir>
+ <ccompiler>kdevgccoptions</ccompiler>
+ <cxxcompiler>kdevgppoptions</cxxcompiler>
+ <f77compiler>kdevg77options</f77compiler>
+ <cxxflags>-O0 -g3</cxxflags>
+ </debug>
+ </configurations>
+ </kdevautoproject>
+ <kdevfileview>
+ <groups>
+ <group pattern="*.cpp;*.cxx;*.h" name="Sources" />
+ <group pattern="*.ui" name="User Interface" />
+ <group pattern="*.png" name="Icons" />
+ <group pattern="*.po;*.ts" name="Translations" />
+ <group pattern="*" name="Others" />
+ </groups>
+ <tree>
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+ </tree>
+ </kdevfileview>
+ <kdevdoctreeview>
+ <ignoretocs>
+ <toc>ada</toc>
+ <toc>ada_bugs_gcc</toc>
+ <toc>bash</toc>
+ <toc>bash_bugs</toc>
+ <toc>clanlib</toc>
+ <toc>w3c-dom-level2-html</toc>
+ <toc>fortran_bugs_gcc</toc>
+ <toc>gnome1</toc>
+ <toc>gnustep</toc>
+ <toc>gtk</toc>
+ <toc>gtk_bugs</toc>
+ <toc>haskell</toc>
+ <toc>haskell_bugs_ghc</toc>
+ <toc>java_bugs_gcc</toc>
+ <toc>java_bugs_sun</toc>
+ <toc>pascal_bugs_fp</toc>
+ <toc>php</toc>
+ <toc>php_bugs</toc>
+ <toc>perl</toc>
+ <toc>perl_bugs</toc>
+ <toc>python</toc>
+ <toc>python_bugs</toc>
+ <toc>ruby</toc>
+ <toc>ruby_bugs</toc>
+ <toc>sdl</toc>
+ <toc>w3c-svg</toc>
+ <toc>sw</toc>
+ <toc>w3c-uaag10</toc>
+ <toc>wxwidgets_bugs</toc>
+ </ignoretocs>
+ <ignoreqt_xml>
+ <toc>qmake User Guide</toc>
+ </ignoreqt_xml>
+ </kdevdoctreeview>
+ <kdevdebugger>
+ <general>
+ <dbgshell>libtool</dbgshell>
+ <programargs/>
+ <gdbpath/>
+ <breakonloadinglibs>true</breakonloadinglibs>
+ <separatetty>false</separatetty>
+ <floatingtoolbar>false</floatingtoolbar>
+ <runappinappdirectory>true</runappinappdirectory>
+ </general>
+ <display>
+ <staticmembers>false</staticmembers>
+ <demanglenames>true</demanglenames>
+ </display>
+ </kdevdebugger>
+ <kdevfilecreate>
+ <filetypes/>
+ <useglobaltypes>
+ <type ext="ui" />
+ <type ext="cpp" />
+ <type ext="h" />
+ </useglobaltypes>
+ </kdevfilecreate>
+ <kdevcvs>
+ <cvsoptions>-f</cvsoptions>
+ <commitoptions/>
+ <updateoptions>-dP</updateoptions>
+ <addoptions/>
+ <removeoptions>-f</removeoptions>
+ <diffoptions>-u3 -p</diffoptions>
+ <logoptions/>
+ <rshoptions/>
+ </kdevcvs>
+ <cppsupportpart>
+ <codecompletion/>
+ <filetemplates>
+ <choosefiles>false</choosefiles>
+ <interfaceURL/>
+ <implementationURL/>
+ <interfacesuffix>.h</interfacesuffix>
+ <implementationsuffix>.cpp</implementationsuffix>
+ <lowercasefilenames>true</lowercasefilenames>
+ </filetemplates>
+ </cppsupportpart>
+ <kdevclassview>
+ <folderhierarchy>true</folderhierarchy>
+ <depthoffolders>2</depthoffolders>
+ </kdevclassview>
+ <kdevdocumentation>
+ <projectdoc>
+ <docsystem>Doxygen Documentation Collection</docsystem>
+ <docurl>%{APPNAMELC}.tag</docurl>
+ </projectdoc>
+ </kdevdocumentation>
+</tdevelop>
diff --git a/languages/cpp/app_templates/kapp/app_client.cpp b/languages/cpp/app_templates/kapp/app_client.cpp
new file mode 100644
index 00000000..ce92c875
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/app_client.cpp
@@ -0,0 +1,26 @@
+%{CPP_TEMPLATE}
+
+#include <tdeapplication.h>
+#include <dcopclient.h>
+#include <tqdatastream.h>
+#include <tqstring.h>
+
+int main(int argc, char **argv)
+{
+ TDEApplication app(argc, argv, "%{APPNAMELC}_client", false);
+
+ // get our DCOP client and attach so that we may use it
+ DCOPClient *client = app.dcopClient();
+ client->attach();
+
+ // do a 'send' for now
+ TQByteArray data;
+ TQDataStream ds(data, IO_WriteOnly);
+ if (argc > 1)
+ ds << TQString(argv[1]);
+ else
+ ds << TQString("http://www.kde.org");
+ client->send("%{APPNAMELC}", "%{APPNAME}Iface", "openURL(TQString)", data);
+
+ return app.exec();
+}
diff --git a/languages/cpp/app_templates/kapp/appiface.h b/languages/cpp/app_templates/kapp/appiface.h
new file mode 100644
index 00000000..9fa7cd1b
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/appiface.h
@@ -0,0 +1,17 @@
+%{H_TEMPLATE}
+
+#ifndef _%{APPNAMEUC}IFACE_H_
+#define _%{APPNAMEUC}IFACE_H_
+
+#include <dcopobject.h>
+
+class %{APPNAME}Iface : virtual public DCOPObject
+{
+ K_DCOP
+public:
+
+k_dcop:
+ virtual void openURL(TQString url) = 0;
+};
+
+#endif // _%{APPNAMEUC}IFACE_H_
diff --git a/languages/cpp/app_templates/kapp/appui.rc b/languages/cpp/app_templates/kapp/appui.rc
new file mode 100644
index 00000000..ceb4f14e
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/appui.rc
@@ -0,0 +1,8 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui name="%{APPNAMELC}" version="1">
+<MenuBar>
+ <Menu name="custom"><text>C&amp;ustom</text>
+ <Action name="custom_action" />
+ </Menu>
+</MenuBar>
+</kpartgui>
diff --git a/languages/cpp/app_templates/kapp/appview.cpp b/languages/cpp/app_templates/kapp/appview.cpp
new file mode 100644
index 00000000..16c05a3f
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/appview.cpp
@@ -0,0 +1,107 @@
+%{CPP_TEMPLATE}
+
+#include "%{APPNAMELC}view.h"
+
+#include <tqpainter.h>
+#include <tqlayout.h>
+
+#include <kurl.h>
+
+#include <ktrader.h>
+#include <klibloader.h>
+#include <tdemessagebox.h>
+#include <krun.h>
+#include <tdelocale.h>
+
+%{APPNAME}View::%{APPNAME}View(TQWidget *parent)
+ : TQWidget(parent),
+ DCOPObject("%{APPNAME}Iface")
+{
+ // setup our layout manager to automatically add our widgets
+ TQHBoxLayout *top_layout = new TQHBoxLayout(this);
+ top_layout->setAutoAdd(true);
+
+ // we want to look for all components that satisfy our needs. the
+ // trader will actually search through *all* registered TDE
+ // 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.
+ TDETrader::OfferList offers = TDETrader::self()->query("text/html", "'KParts/ReadOnlyPart' in ServiceTypes");
+
+ KLibFactory *factory = 0;
+ // 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
+ TDETrader::OfferList::Iterator it(offers.begin());
+ for( ; it != offers.end(); ++it)
+ {
+ KService::Ptr ptr = (*it);
+
+ // 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
+ factory = KLibLoader::self()->factory( ptr->library() );
+ if (factory)
+ {
+ m_html = static_cast<KParts::ReadOnlyPart *>(factory->create(this, ptr->name(), "KParts::ReadOnlyPart"));
+ break;
+ }
+ }
+
+ // if our factory is invalid, then we never found our component
+ // and we might as well just exit now
+ if (!factory)
+ {
+ KMessageBox::error(this, i18n("Could not find a suitable HTML component"));
+ return;
+ }
+
+ connect(m_html, TQT_SIGNAL(setWindowCaption(const TQString&)),
+ this, TQT_SLOT(slotSetTitle(const TQString&)));
+ connect(m_html, TQT_SIGNAL(setStatusBarText(const TQString&)),
+ this, TQT_SLOT(slotOnURL(const TQString&)));
+
+}
+
+%{APPNAME}View::~%{APPNAME}View()
+{
+}
+
+void %{APPNAME}View::print(TQPainter *p, int height, int width)
+{
+ // do the actual printing, here
+ // p->drawText(etc..)
+}
+
+TQString %{APPNAME}View::currentURL()
+{
+ return m_html->url().url();
+}
+
+void %{APPNAME}View::openURL(TQString url)
+{
+ openURL(KURL(url));
+}
+
+void %{APPNAME}View::openURL(const KURL& url)
+{
+ m_html->openURL(url);
+}
+
+void %{APPNAME}View::slotOnURL(const TQString& url)
+{
+ emit signalChangeStatusbar(url);
+}
+
+void %{APPNAME}View::slotSetTitle(const TQString& title)
+{
+ emit signalChangeCaption(title);
+}
+#include "%{APPNAMELC}view.moc"
diff --git a/languages/cpp/app_templates/kapp/appview.h b/languages/cpp/app_templates/kapp/appview.h
new file mode 100644
index 00000000..79513a9d
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/appview.h
@@ -0,0 +1,78 @@
+%{H_TEMPLATE}
+
+#ifndef _%{APPNAMEUC}VIEW_H_
+#define _%{APPNAMEUC}VIEW_H_
+
+#include <tqwidget.h>
+#include <tdeparts/part.h>
+#include <%{APPNAMELC}iface.h>
+
+class TQPainter;
+class KURL;
+
+/**
+ * This is the main view class for %{APPNAME}. Most of the non-menu,
+ * non-toolbar, and non-statusbar (e.g., non frame) GUI code should go
+ * here.
+ *
+ * This %{APPNAMELC} uses an HTML component as an example.
+ *
+ * @short Main view
+ * @author %{AUTHOR} <%{EMAIL}>
+ * @version %{VERSION}
+ */
+class %{APPNAME}View : public TQWidget, public %{APPNAME}Iface
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Default constructor
+ */
+ %{APPNAME}View(TQWidget *parent);
+
+ /**
+ * Destructor
+ */
+ virtual ~%{APPNAME}View();
+
+ /**
+ * Random 'get' function
+ */
+ TQString currentURL();
+
+ /**
+ * Random 'set' function accessed by DCOP
+ */
+ virtual void openURL(TQString url);
+
+ /**
+ * Random 'set' function
+ */
+ virtual void openURL(const KURL& url);
+
+ /**
+ * Print this view to any medium -- paper or not
+ */
+ void print(TQPainter *, int height, int width);
+
+signals:
+ /**
+ * Use this signal to change the content of the statusbar
+ */
+ void signalChangeStatusbar(const TQString& text);
+
+ /**
+ * Use this signal to change the content of the caption
+ */
+ void signalChangeCaption(const TQString& text);
+
+private slots:
+ void slotOnURL(const TQString& url);
+ void slotSetTitle(const TQString& title);
+
+private:
+ KParts::ReadOnlyPart *m_html;
+};
+
+#endif // _%{APPNAMEUC}VIEW_H_
diff --git a/languages/cpp/app_templates/kapp/kapp.kdevtemplate b/languages/cpp/app_templates/kapp/kapp.kdevtemplate
new file mode 100644
index 00000000..86675a50
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/kapp.kdevtemplate
@@ -0,0 +1,253 @@
+# TDE Config File
+[General]
+Name=Application framework
+Name[ca]=Infraestructura d'aplicacions
+Name[da]=Programskelet
+Name[de]=Anwendungsgrundgerüst
+Name[el]=Πλαίσιο εφαρμογής
+Name[es]=Infraestructura de aplicación
+Name[et]=Rakenduse raamistik
+Name[eu]=Aplikazioen lan-markoa
+Name[fa]=چارچوب کاربرد
+Name[fr]=Infrastructure d'application
+Name[ga]=Creatlach feidhmchláir
+Name[gl]=Entorno de traballo para aplicación
+Name[hu]=Alkalmazás-keretrendszer
+Name[it]=Infrastruttura applicativa
+Name[ja]=アプリケーションフレームワーク
+Name[nds]=Programmrahmenwark
+Name[ne]=अनुप्रयोग फ्रेमवर्क
+Name[nl]=Applicationframework
+Name[pl]=Szablon programu
+Name[pt]=Plataforma de aplicações
+Name[pt_BR]=Plataforma de aplicações
+Name[ru]=Приложение TDE
+Name[sk]=Aplikačný framework
+Name[sl]=Ogrodje programa
+Name[sr]=Радни оквир програма
+Name[sr@Latn]=Radni okvir programa
+Name[sv]=Programramverk
+Name[tr]=Uygulama Çatısı
+Name[zh_CN]=应用程序框架
+Name[zh_TW]=應用程式框架
+Icon=kapp.png
+Category=C++/TDE
+Comment=Generates a simple TDE application with one toplevel window, menus and toolbars. A DCOP interface is also provided, so that your application can provide a scripting interface
+Comment[ca]=Genera una simple aplicació per al TDE amb una finestra principal, menús i barres d'eines. També es proveeix la interfície DCOP, de manera que la vostra aplicació podrà proveir d'una interfície per a scripts
+Comment[da]=Genererer et simpelt TDE program med et vindue på topniveau, menuer og værktøjslinjer. Der sørges også for en DCOP-grænseflade, så dit program kan sørge for en script-grænseflade
+Comment[de]=Erstellt eine einfache TDE-Anwendung mit einem Toplevel-Fenster, Menüs und Werkzeugleisten. Dazu kommt eine DCOP-Schnittstelle, so dass Ihre Anwendung eine Schnittstelle für Skripte anbieten kann.
+Comment[el]=Δημιουργεί μια απλή εφαρμογή TDE με ένα ανώτερο παράθυρο, μενού και γραμμές εργαλείων. Μια διασύνδεση DCOP προσφέρεται επίσης, έτσι ώστε η εφαρμογή σας να προσφέρει ένα περιβάλλον γραφής σεναρίων
+Comment[es]=Genera una sencilla aplicación de TDE con una ventana de nivel superior, menús y barras de herramientas. También se proporciona una interfaz DCOP para que su aplicación pueda proporcionar una interfaz para guiones de órdenes.
+Comment[et]=Lihtsa TDE rakenduse loomine ühe tipptaseme akna, menüüde ja tööriistaribadega. Lisatakse ka DCOP-liides, mis võimaldab pakkuda rakenduses ka skriptikeelte tuge.
+Comment[eu]=TDE aplikazio sinple bat sortzen du menu eta tresna-barradun goi-mailako lehio batekin. DCOP interfaze bat ere eskeintzen zaio aplikazioari, zure aplikazioak script interfaze bat izan dezan
+Comment[fa]=یک کاربرد سادۀ TDE با یک پنجرۀ سطح بالا، گزینگان و میله ابزارها تولید می‌کند. همچنین یک واسط DCOP فراهم است. بنابراین، کاربرد شما یک واسط دست‌نوشته‌ای را می‌تواند فراهم کند
+Comment[fr]=Génère une application TDE simple comprenant une fenêtre de premier niveau, des menus et des barres d'outils. Une interface DCOP est également prévue, afin que votre application puisse offrir une interface de scriptage
+Comment[ga]=Cruthaíonn sé seo feidhmchlár simplí TDE le príomhfhuinneog amháin, roghchláir agus barraí uirlisí. Soláthraítear comhéadan DCOP freisin, d'fhonn is féidir comhéadan scriptithe a chur ar fáil
+Comment[gl]=Xera unha aplicación TDE sinxela cunha xanela principal, menús e barras de ferramentas. Tamén se proporciona unha interface DCOP de modo que a súa aplicación poida proveer unha interface de scripting.
+Comment[hu]=Létrehoz egy egyszerű TDE-alkalmazást egy főablakkal, menükkel és eszköztárakkal. DCOP-felület is létre lesz hozva, ezért az alkalmazás szkriptelési felületet is biztosíthat.
+Comment[it]=Genera una semplice applicazione TDE con una finestra toplevel, menu e barre degli strumenti. È anche fornita un'interfaccia DCOP così l'applicazione avrà un'interfaccia per lo scripting
+Comment[ja]=簡単な TDE アプリケーションを作成します。アプリケーションには、トップレベルのウィンドウ、メニュー、ツールバーがあります。スクリプト化をサポートするために DCOP のインターフェースも用意してあります。
+Comment[nds]=Stellt en eenfach TDE-Programm mit een böverst Finster, Menüs un Warktüüchbalkens op. Ok warrt noch en DCOP-Koppelsteed praatstellt, so dat Dien Programm en Skriptkoppelsteed anbeden kann
+Comment[ne]=एउटा उच्चतह सञ्झ्याल, मेनु र उपकरणपट्टीसँग साधारण केडीई अनुप्रयोग उत्पन्न गर्दछ । DCOP पनि प्रदान गरिन्छ, जसले गर्दा तपाईँको अनुप्रयोगले स्क्रिप्टिङ इन्टरफेस प्रदान गर्न सक्दछ
+Comment[nl]=Genereert een eenvoudige TDE-toepassing met één toplevel window, menu's en toolbars. Er wordt ook een DCOP-interface aangeleverd, zodat uw toepassing een scripting interface kan aanleveren.
+Comment[pl]=Generuje prosty program dla TDE z oknem, menu i paskami narzędzi. Dostępny jest także interfejs DCOP, więc Twoje programy mogą zawierać interfejs do skryptów
+Comment[pt]=Gera uma aplicação simples do TDE com uma janela de topo, menus e barras de ferramentas. Também é oferecida uma interface de DCOP, para que a sua aplicação possa fornecer uma interface de programação
+Comment[pt_BR]=Gera uma aplicação simples do TDE com uma janela de topo, menus e barras de ferramentas. Também é oferecida uma interface de DCOP, para que a sua aplicação possa fornecer uma interface de programação
+Comment[ru]=Создание простого приложения TDE с окном, меню и панелями инструментов. Кроме того, в нём содержится интерфейс DCOP для автоматизации работы с помощью пользовательских скриптов
+Comment[sk]=Vygenruje jednoduchú TDE aplikáciu s jedným oknom, menu apanelom nástrojov. Taktiež bude poskytnuté DCOP rozhranie, takže aj aplikáciamôže poskytnúť skriptovacie rozhranie
+Comment[sr]=Прави једноставан TDE програм, са једним прозором највишег нивоа, менијима и тракама са алатом. Дат је и DCOP интерфејс, тако да ваш програм може да омогући скриптовање
+Comment[sr@Latn]=Pravi jednostavan TDE program, sa jednim prozorom najvišeg nivoa, menijima i trakama sa alatom. Dat je i DCOP interfejs, tako da vaš program može da omogući skriptovanje
+Comment[sv]=Skapar ett enkelt TDE-program med ett toppnivåfönster, menyer och verktygsrader. Ett DCOP-gränssnitt tillhandahålls också, så att programmet kan tillhandahålla ett skriptgränssnitt.
+Comment[tr]=Bir üst seviye penceresi, menüleri ve araç çubukları olan basit bir TDE uygulaması yaratır. Bir DCOP arayüzü sağlanır, böylece uygulama bir betik arayüzü sağlayabilir.
+Comment[zh_CN]=生成一个带一个顶层窗口、菜单和工具栏的简单 TDE 应用程序。另外还提供了 DCOP 接口,这样您的应用也可同时提供脚本接口。
+Comment[zh_TW]=產生一個簡單的 TDE 應用程式,內含頂層視窗、選單與工具列。另外提供一個 DCOP 介面,讓您的應用程式可以提供文稿介面。
+FileTemplates=h,CStyle,cpp,CStyle
+ShowFilesAfterGeneration=%{dest}/src/%{APPNAMELC}view.cpp,%{dest}/src/README
+Archive=kapp.tar.gz
+
+[ADMIN]
+Type=include
+File=%{tdevelop}/template-common/admin.kdevtemplate
+
+[GNU]
+Type=include
+File=%{tdevelop}/template-common/gnu.kdevtemplate
+
+[MKDIR_DOCBOOK1]
+Type=mkdir
+Dir=%{dest}/doc
+
+[MKDIR_DOCBOOK2]
+Type=mkdir
+Dir=%{dest}/doc/en
+
+[FILE1]
+Type=install
+Source=%{tdevelop}/template-common/kde-doc-Makefile.am
+Dest=%{dest}/doc/Makefile.am
+
+[FILE2]
+Type=install
+Source=%{tdevelop}/template-common/kde-doc-en-Makefile.am
+Dest=%{dest}/doc/en/Makefile.am
+
+[FILE3]
+Type=install
+EscapeXML=true
+Source=%{tdevelop}/template-common/tde-index.docbook
+Dest=%{dest}/doc/en/index.docbook
+
+[FILE4]
+Type=install
+EscapeXML=true
+Source=%{src}/app.tdevelop
+Dest=%{dest}/%{APPNAMELC}.tdevelop
+
+[FILE5]
+Type=install
+Source=%{tdevelop}/template-common/kde-Makefile.am
+Dest=%{dest}/Makefile.am
+
+[FILE6]
+Type=install
+Source=%{tdevelop}/template-common/kde-Makefile.cvs
+Dest=%{dest}/Makefile.cvs
+
+[FILE7]
+Type=install
+Source=%{tdevelop}/template-common/tde-configure.in.in
+Dest=%{dest}/configure.in.in
+
+[MkDir3]
+Type=mkdir
+Dir=%{dest}/src
+
+[FILE8]
+Type=install
+Source=%{tdevelop}/template-common/tde-app.desktop
+Dest=%{dest}/src/%{APPNAMELC}.desktop
+
+[FILE9]
+Type=install
+Source=%{tdevelop}/template-common/kde-app.lsm
+Dest=%{dest}/src/%{APPNAMELC}.lsm
+
+[FILE10]
+Type=install
+Source=%{tdevelop}/template-common/hi16-app-app.png
+Dest=%{dest}/src/hi16-app-%{APPNAMELC}.png
+Process=false
+
+[FILE11]
+Type=install
+Source=%{tdevelop}/template-common/hi32-app-app.png
+Dest=%{dest}/src/hi32-app-%{APPNAMELC}.png
+Process=false
+
+[MkDir4]
+Type=mkdir
+Dir=%{dest}/po
+
+[FILE12]
+Type=install
+Source=%{tdevelop}/template-common/kde-po-Makefile.am
+Dest=%{dest}/po/Makefile.am
+
+[FILE13]
+Type=install
+Source=%{src}/subdirs
+Dest=%{dest}/subdirs
+
+[FILE14]
+Type=install
+Source=%{src}/src-Makefile.am
+Dest=%{dest}/src/Makefile.am
+
+[FILE15]
+Type=install
+Source=%{src}/app.cpp
+Dest=%{dest}/src/%{APPNAMELC}.cpp
+
+[FILE16]
+Type=install
+Source=%{src}/app.h
+Dest=%{dest}/src/%{APPNAMELC}.h
+
+[FILE17]
+Type=install
+Source=%{src}/appview.cpp
+Dest=%{dest}/src/%{APPNAMELC}view.cpp
+
+[FILE18]
+Type=install
+Source=%{src}/appview.h
+Dest=%{dest}/src/%{APPNAMELC}view.h
+
+[FILE19]
+Type=install
+Source=%{src}/appiface.h
+Dest=%{dest}/src/%{APPNAMELC}iface.h
+
+[FILE20]
+Type=install
+Source=%{src}/app_client.cpp
+Dest=%{dest}/src/%{APPNAMELC}_client.cpp
+
+[FILE21]
+Type=install
+Source=%{src}/pref.cpp
+Dest=%{dest}/src/pref.cpp
+
+[FILE22]
+Type=install
+Source=%{src}/pref.h
+Dest=%{dest}/src/pref.h
+
+[FILE23]
+Type=install
+Source=%{src}/main.cpp
+Dest=%{dest}/src/main.cpp
+
+[FILE24]
+Type=install
+EscapeXML=true
+Source=%{src}/appui.rc
+Dest=%{dest}/src/%{APPNAMELC}ui.rc
+
+[FILE25]
+Type=install
+Source=%{src}/README
+Dest=%{dest}/src/README
+
+[MSG]
+Type=message
+Comment=A TDE Application was created at %{dest}
+Comment[ca]=Una aplicació per al TDE ha estat creada a %{dest}
+Comment[da]=Et TDE program blev oprettet i %{dest}
+Comment[de]=Eine TDE-Anwendung wurde in %{dest} erstellt.
+Comment[el]=Μια εφαρμογή TDE δημιουργήθηκε στο %{dest}
+Comment[es]=Una aplicación de TDE ha sido creada en %{dest}
+Comment[et]=TDE rakendus loodi asukohta %{dest}
+Comment[eu]=A TDE aplikazio bat sortu da hemen: %{dest}
+Comment[fa]=یک کاربرد TDE در %{dest} فراهم شد
+Comment[fr]=Une application TDE a été créée dans %{dest}
+Comment[ga]=Cruthaíodh Feidhmchlár TDE ag %{dest}
+Comment[gl]=Creouse unha aplicación TDE en %{dest}
+Comment[hu]=Létrejött egy TDE-s alkalmazás itt: %{dest}
+Comment[it]=È stata creata un'applicazione TDE in %{dest}
+Comment[ja]=TDE アプリケーションを %{dest} に作成しました
+Comment[nds]=In %{dest} wöör en TDE-Programm opstellt
+Comment[ne]=TDE अनुप्रयोग %{dest} मा सिर्जना गरियो
+Comment[nl]=Een TDE-toepassing is aangemaakt in %{dest}
+Comment[pl]=Program dla TDE został utworzony w %{dest}
+Comment[pt]=Foi criada uma aplicação do TDE em %{dest}
+Comment[pt_BR]=Foi criada uma aplicação do TDE em %{dest}
+Comment[ru]=Приложение TDE создано в %{dest}
+Comment[sk]=TDE aplikácia bola vytvorená v %{dest}
+Comment[sl]=Program za TDE je bil ustvarjen v %{dest}
+Comment[sr]=TDE програм је направљен у %{dest}
+Comment[sr@Latn]=TDE program je napravljen u %{dest}
+Comment[sv]=Ett TDE-program skapades i %{dest}
+Comment[tr]=Bir TDE Uygulaması %{dest} içinde yaratıldı.
+Comment[zh_CN]=在 %{dest} 中创建了一个 TDE 应用程序
+Comment[zh_TW]=一個 TDE 應用程式已建立於 %{dest}
diff --git a/languages/cpp/app_templates/kapp/kapp.png b/languages/cpp/app_templates/kapp/kapp.png
new file mode 100644
index 00000000..a421a664
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/kapp.png
Binary files differ
diff --git a/languages/cpp/app_templates/kapp/main.cpp b/languages/cpp/app_templates/kapp/main.cpp
new file mode 100644
index 00000000..8c2cc07f
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/main.cpp
@@ -0,0 +1,61 @@
+%{CPP_TEMPLATE}
+
+#include "%{APPNAMELC}.h"
+#include <tdeapplication.h>
+#include <dcopclient.h>
+#include <tdeaboutdata.h>
+#include <tdecmdlineargs.h>
+#include <tdelocale.h>
+
+static const char description[] =
+ I18N_NOOP("A TDE Application");
+
+static const char version[] = "%{VERSION}";
+
+static TDECmdLineOptions options[] =
+{
+ { "+[URL]", I18N_NOOP( "Document to open" ), 0 },
+ TDECmdLineLastOption
+};
+
+int main(int argc, char **argv)
+{
+ TDEAboutData about("%{APPNAMELC}", I18N_NOOP("%{APPNAME}"), version, description,
+ TDEAboutData::License_%{LICENSE}, "(C) %{YEAR} %{AUTHOR}", 0, 0, "%{EMAIL}");
+ about.addAuthor( "%{AUTHOR}", 0, "%{EMAIL}" );
+ TDECmdLineArgs::init(argc, argv, &about);
+ TDECmdLineArgs::addCmdLineOptions(options);
+ TDEApplication app;
+
+ // register ourselves as a dcop client
+ app.dcopClient()->registerAs(app.name(), false);
+
+ // see if we are starting with session management
+ if (app.isRestored())
+ {
+ RESTORE(%{APPNAME});
+ }
+ else
+ {
+ // no session.. just start up normally
+ TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
+ if (args->count() == 0)
+ {
+ %{APPNAME} *widget = new %{APPNAME};
+ widget->show();
+ }
+ else
+ {
+ int i = 0;
+ for (; i < args->count(); i++)
+ {
+ %{APPNAME} *widget = new %{APPNAME};
+ widget->show();
+ widget->load(args->url(i));
+ }
+ }
+ args->clear();
+ }
+
+ return app.exec();
+}
diff --git a/languages/cpp/app_templates/kapp/pref.cpp b/languages/cpp/app_templates/kapp/pref.cpp
new file mode 100644
index 00000000..669f591c
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/pref.cpp
@@ -0,0 +1,42 @@
+%{CPP_TEMPLATE}
+
+#include "pref.h"
+
+#include <tdelocale.h>
+
+#include <tqlayout.h>
+#include <tqlabel.h>
+
+%{APPNAME}Preferences::%{APPNAME}Preferences()
+ : KDialogBase(TreeList, i18n("%{APPNAME} Preferences"),
+ Help|Default|Ok|Apply|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)
+ TQFrame *frame;
+ frame = addPage(i18n("First Page"), i18n("Page One Options"));
+ m_pageOne = new %{APPNAME}PrefPageOne(frame);
+
+ frame = addPage(i18n("Second Page"), i18n("Page Two Options"));
+ m_pageTwo = new %{APPNAME}PrefPageTwo(frame);
+}
+
+%{APPNAME}PrefPageOne::%{APPNAME}PrefPageOne(TQWidget *parent)
+ : TQFrame(parent)
+{
+ TQHBoxLayout *layout = new TQHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ new TQLabel(i18n("Add something here"), this);
+}
+
+%{APPNAME}PrefPageTwo::%{APPNAME}PrefPageTwo(TQWidget *parent)
+ : TQFrame(parent)
+{
+ TQHBoxLayout *layout = new TQHBoxLayout(this);
+ layout->setAutoAdd(true);
+
+ new TQLabel(i18n("Add something here"), this);
+}
+#include "pref.moc"
diff --git a/languages/cpp/app_templates/kapp/pref.h b/languages/cpp/app_templates/kapp/pref.h
new file mode 100644
index 00000000..b2aae436
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/pref.h
@@ -0,0 +1,40 @@
+%{H_TEMPLATE}
+
+#ifndef _%{APPNAMEUC}PREF_H_
+#define _%{APPNAMEUC}PREF_H_
+
+#include <kdialogbase.h>
+#include <tqframe.h>
+
+class %{APPNAME}PrefPageOne;
+class %{APPNAME}PrefPageTwo;
+
+class %{APPNAME}Preferences : public KDialogBase
+{
+ Q_OBJECT
+
+public:
+ %{APPNAME}Preferences();
+
+private:
+ %{APPNAME}PrefPageOne *m_pageOne;
+ %{APPNAME}PrefPageTwo *m_pageTwo;
+};
+
+class %{APPNAME}PrefPageOne : public TQFrame
+{
+ Q_OBJECT
+
+public:
+ %{APPNAME}PrefPageOne(TQWidget *parent = 0);
+};
+
+class %{APPNAME}PrefPageTwo : public TQFrame
+{
+ Q_OBJECT
+
+public:
+ %{APPNAME}PrefPageTwo(TQWidget *parent = 0);
+};
+
+#endif // _%{APPNAMEUC}PREF_H_
diff --git a/languages/cpp/app_templates/kapp/src-Makefile.am b/languages/cpp/app_templates/kapp/src-Makefile.am
new file mode 100644
index 00000000..8125665b
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/src-Makefile.am
@@ -0,0 +1,43 @@
+## Makefile.am for %{APPNAMELC}
+
+# this is the program that gets installed. it's name is used for all
+# of the other Makefile.am variables
+bin_PROGRAMS = %{APPNAMELC} %{APPNAMELC}_client
+
+# set the include path for X, qt and TDE
+INCLUDES = $(all_includes)
+
+# the library search path.
+%{APPNAMELC}_LDFLAGS = $(KDE_RPATH) $(all_libraries) $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) $(LIB_TDEPARTS) $(LIB_TDEIO)
+
+# the libraries to link against.
+%{APPNAMELC}_LDADD = $(LIB_TDEFILE) $(LIB_TDEPRINT)
+
+# which sources should be compiled for %{APPNAMELC}
+%{APPNAMELC}_SOURCES = main.cpp %{APPNAMELC}.cpp %{APPNAMELC}view.cpp \
+ pref.cpp %{APPNAMELC}iface.skel
+
+# these are the headers for your project
+noinst_HEADERS = %{APPNAMELC}.h %{APPNAMELC}view.h pref.h
+
+# client stuff
+%{APPNAMELC}_client_LDFLAGS = $(KDE_RPATH) $(all_libraries) $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) $(LIB_TDEPARTS) $(LIB_TDEIO)
+%{APPNAMELC}_client_LDADD = $(LIB_TDECORE)
+%{APPNAMELC}_client_SOURCES = %{APPNAMELC}_client.cpp
+
+# let automoc handle all of the meta source files ((moc))
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(EXTRACTRC) `find . -name \*.ui -o -name \*.rc` > rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/%{APPNAMELC}.pot
+
+KDE_ICON = AUTO
+
+# this is where the kdelnk file will go
+kdelnkdir = $(kde_appsdir)/Utilities
+kdelnk_DATA = %{APPNAMELC}.desktop
+
+# this is where the XML-GUI resource file goes
+rcdir = $(kde_datadir)/%{APPNAMELC}
+rc_DATA = %{APPNAMELC}ui.rc
diff --git a/languages/cpp/app_templates/kapp/subdirs b/languages/cpp/app_templates/kapp/subdirs
new file mode 100644
index 00000000..0e678106
--- /dev/null
+++ b/languages/cpp/app_templates/kapp/subdirs
@@ -0,0 +1,3 @@
+doc
+po
+src