summaryrefslogtreecommitdiffstats
path: root/languages/python/app_templates/pyqt
diff options
context:
space:
mode:
Diffstat (limited to 'languages/python/app_templates/pyqt')
-rw-r--r--languages/python/app_templates/pyqt/.kdev_ignore0
-rw-r--r--languages/python/app_templates/pyqt/Makefile.am20
-rw-r--r--languages/python/app_templates/pyqt/app-Makefile.am14
-rw-r--r--languages/python/app_templates/pyqt/app-autogen.sh10
-rw-r--r--languages/python/app_templates/pyqt/app-configure.ac32
-rw-r--r--languages/python/app_templates/pyqt/app.kdevelop81
-rw-r--r--languages/python/app_templates/pyqt/app.py271
-rw-r--r--languages/python/app_templates/pyqt/documentdetails.ui80
-rw-r--r--languages/python/app_templates/pyqt/fileopen.pyxpm19
-rw-r--r--languages/python/app_templates/pyqt/fileprint.pyxpm21
-rw-r--r--languages/python/app_templates/pyqt/filesave.pyxpm19
-rw-r--r--languages/python/app_templates/pyqt/install-sh0
-rw-r--r--languages/python/app_templates/pyqt/missing0
-rw-r--r--languages/python/app_templates/pyqt/mkinstalldirs0
-rw-r--r--languages/python/app_templates/pyqt/pyqt10
-rw-r--r--languages/python/app_templates/pyqt/pyqt-am-preproc.py85
-rw-r--r--languages/python/app_templates/pyqt/pyqt.kdevtemplate168
-rw-r--r--languages/python/app_templates/pyqt/pyqt.pngbin0 -> 8800 bytes
-rw-r--r--languages/python/app_templates/pyqt/templates-ui-dialog20
-rw-r--r--languages/python/app_templates/pyqt/templates-ui-mainwin436
20 files changed, 1286 insertions, 0 deletions
diff --git a/languages/python/app_templates/pyqt/.kdev_ignore b/languages/python/app_templates/pyqt/.kdev_ignore
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/languages/python/app_templates/pyqt/.kdev_ignore
diff --git a/languages/python/app_templates/pyqt/Makefile.am b/languages/python/app_templates/pyqt/Makefile.am
new file mode 100644
index 00000000..ea9502cc
--- /dev/null
+++ b/languages/python/app_templates/pyqt/Makefile.am
@@ -0,0 +1,20 @@
+dataFiles = app.py app.kdevelop fileopen.pyxpm fileprint.pyxpm \
+ filesave.pyxpm app-Makefile.am app-autogen.sh app-configure.ac \
+ documentdetails.ui missing install-sh mkinstalldirs \
+ pyqt-am-preproc.py templates-ui-dialog templates-ui-mainwin \
+ pyqt.png
+templateName = pyqt
+
+### 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/python/app_templates/pyqt/app-Makefile.am b/languages/python/app_templates/pyqt/app-Makefile.am
new file mode 100644
index 00000000..78df3505
--- /dev/null
+++ b/languages/python/app_templates/pyqt/app-Makefile.am
@@ -0,0 +1,14 @@
+
+EXEEXT=
+
+pyui_files= documentdetails.py
+
+%.py : %.ui
+ pyuic $< >$@
+
+
+bin_PROGRAMS = %{APPNAMELC}
+%{APPNAMELC}_SOURCES = %{APPNAMELC}.py documentdetails.ui
+
+%{APPNAMELC}$(EXEEXT): $(pyui_files)
+ echo "Done"
diff --git a/languages/python/app_templates/pyqt/app-autogen.sh b/languages/python/app_templates/pyqt/app-autogen.sh
new file mode 100644
index 00000000..b380ddfd
--- /dev/null
+++ b/languages/python/app_templates/pyqt/app-autogen.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+echo "Running aclocal"
+aclocal
+echo "Running autoconf"
+autoconf
+echo "Processing Makefile.am"
+python pyqt-am-preproc.py
+echo "Running automake"
+automake
+echo "Done."
diff --git a/languages/python/app_templates/pyqt/app-configure.ac b/languages/python/app_templates/pyqt/app-configure.ac
new file mode 100644
index 00000000..62903c0f
--- /dev/null
+++ b/languages/python/app_templates/pyqt/app-configure.ac
@@ -0,0 +1,32 @@
+
+AC_INIT
+AM_INIT_AUTOMAKE(testprog,[0.1])
+
+AC_PROG_MAKE_SET
+
+# python interpreter check
+AC_PATH_PROG([PYTHON],[python])
+if test -z "${PYTHON}" ; then
+ AC_MSG_ERROR([you need Python to use this program])
+fi
+
+# PyQT check
+AC_MSG_CHECKING([whether PyQT can be used by Python])
+pyqt_present=no
+cat >pyqttest.py <<END
+import qt
+END
+${PYTHON} pyqttest.py >/dev/null 2>&1 && pyqt_present=yes
+AC_MSG_RESULT([$pyqt_present])
+
+# pyuic check
+AC_PATH_PROG([PYUIC],[pyuic])
+if test -z "${PYUIC}" ; then
+ AC_MSG_ERROR([cannot find pyuic (part of the PyQT package)])
+fi
+AC_SUBST([PYUIC])
+AC_SUBST([PYTHON])
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/languages/python/app_templates/pyqt/app.kdevelop b/languages/python/app_templates/pyqt/app.kdevelop
new file mode 100644
index 00000000..a8fb1726
--- /dev/null
+++ b/languages/python/app_templates/pyqt/app.kdevelop
@@ -0,0 +1,81 @@
+<?xml version = '1.0'?>
+<kdevelop>
+ <general>
+ <author>%{AUTHOR}</author>
+ <email>%{EMAIL}</email>
+ <version>%{VERSION}</version>
+ <projectmanagement>KDevAutoProject</projectmanagement>
+ <primarylanguage>Python</primarylanguage>
+ <keywords>
+ <keyword>Python</keyword>
+ <keyword>qt</keyword>
+ </keywords>
+ <ignoreparts/>
+ </general>
+ <kdevautoproject>
+ <general>
+ <activedir/>
+ </general>
+ <run>
+ <mainprogram>./%{APPNAMELC}.py</mainprogram>
+ </run>
+ </kdevautoproject>
+ <kdevdoctreeview>
+ <ignoretocs>
+ <toc>ada</toc>
+ <toc>ada_bugs_gcc</toc>
+ <toc>bash</toc>
+ <toc>bash_bugs</toc>
+ <toc>c++_bugs_gcc</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>libc</toc>
+ <toc>libstdc++</toc>
+ <toc>opengl</toc>
+ <toc>pascal_bugs_fp</toc>
+ <toc>php</toc>
+ <toc>php_bugs</toc>
+ <toc>perl</toc>
+ <toc>perl_bugs</toc>
+ <toc>ruby</toc>
+ <toc>ruby_bugs</toc>
+ <toc>sdl</toc>
+ <toc>stl</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>
+ <ignoredoxygen>
+ <toc>KDE Libraries (Doxygen)</toc>
+ </ignoredoxygen>
+ </kdevdoctreeview>
+ <kdevfileview>
+ <tree>
+ <hidenonprojectfiles>false</hidenonprojectfiles>
+ <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+ </tree>
+ <groups>
+ <group pattern="*.py" name="Python files" />
+ <group pattern="*.ui" name="QT Designer files" />
+ </groups>
+ </kdevfileview>
+ <kdevfilecreate>
+ <useglobaltypes>
+ <type ext="py"/>
+ <type ext="ui"/>
+ </useglobaltypes>
+ </kdevfilecreate>
+</kdevelop>
diff --git a/languages/python/app_templates/pyqt/app.py b/languages/python/app_templates/pyqt/app.py
new file mode 100644
index 00000000..ede8dc54
--- /dev/null
+++ b/languages/python/app_templates/pyqt/app.py
@@ -0,0 +1,271 @@
+#!/usr/bin/env python
+
+#############################################################################
+# %{APPNAME} - PyQT application template for KDevelop
+#
+# Translated from C++ qmakeapp.cpp
+# (qmakeapp.cpp - Copyright (C) 1992-2002 Trolltech AS. All rights reserved.)
+#
+# This file is part of an example program for Qt. This example
+# program may be used, distributed and modified without limitation.
+#
+#############################################################################
+
+import sys
+import os.path
+from qt import *
+
+import documentdetails
+
+false = 0
+true = 1
+
+def load_QPixMap(fileName):
+ f = open(os.path.join(sys.path[0],fileName),"r")
+ result = QPixmap(f.readlines())
+ f.close()
+ return result
+
+class %{APPNAME}(QMainWindow):
+ """An application called %{APPNAME}."""
+
+ def __init__(self):
+ QMainWindow.__init__(self, None, "%{APPNAME}")
+ self.initIcons()
+ self.setup()
+ self.initPrinter()
+ self.initToolBar()
+ self.initMenu()
+ self.initMainWidget()
+ self.setCaption(self.appTitle)
+
+ def setup(self):
+
+ self.appTitle = "%{APPNAME} - PyQT Application Example"
+
+ self.menu = [
+ ('&File',
+ [('&New', self.slotNewFile),
+ ('&Open...', self.slotOpenFile, self.openIcon),
+ ('&Save', self.slotSaveFile, self.saveIcon),
+ ('Save &as...', self.slotSaveAs),
+ ('&Print...', self.slotPrint, self.printIcon),
+ ('&Edit details...', self.slotEditDetails),
+ (None,)]),
+ ('&Help',
+ [('&About', self.slotAbout),
+ ('About &QT', self.slotAboutQT),
+ (None, ),
+ ('What\'s this', self.slotWhatsThis)])
+ ]
+
+ self.toolbar = [
+ ("filetools", "file operations", "File Operations",
+ [("fileopen",
+ (self.openIcon, "open file", "Open File", self.slotOpenFile),
+ "<p>Click this button to open a <em>new file</em>. <br>" + \
+ "You can also select the <b>Open</b> command " + \
+ "from the <b>File</b> menu.</p>"),
+ ("filesave",
+ (self.saveIcon, "save file", "Save File", self.slotSaveFile),
+ "<p>Click this button to save the file you " + \
+ "are editing. You will be prompted for a file name.\n" + \
+ "You can also select the <b>Save</b> command " + \
+ "from the <b>File</b> menu.</p>"),
+ ("fileprint",
+ (self.printIcon, "print file", "Print File", self.slotPrint),
+ "Click this button to print the file you " + \
+ "are editing.\n You can also select the Print " + \
+ "command from the File menu."
+ )])]
+
+ self.fileName = ""
+
+
+ def initMainWidget(self):
+ self.editor = QTextEdit(self, "editor")
+ self.editor.setFocus()
+ self.setCentralWidget(self.editor)
+ self.statusBar().message("Ready", 2000)
+ self.resize(450,600)
+
+ def initPrinter(self):
+ self.printer = QPrinter()
+
+ def initIcons(self):
+ self.openIcon = QIconSet( load_QPixMap("fileopen.pyxpm"))
+ self.saveIcon = QIconSet( load_QPixMap("filesave.pyxpm"))
+ self.printIcon = QIconSet( load_QPixMap("fileprint.pyxpm"))
+
+ def initToolBar(self):
+
+ self.toolbars = {}
+ for (toolBarID, toolBarName, toolBarDescr, toolBarButtons) in self.toolbar:
+ self.toolbars[toolBarID] = QToolBar(self, toolBarName)
+ self.toolbars[toolBarID].setLabel(toolBarDescr)
+ for (buttonID, (buttonIcon, buttonName, buttonText, buttonSlot), whatsThisText) in toolBarButtons:
+ toolButton = QToolButton(buttonIcon, buttonText, "", buttonSlot, self.toolbars[toolBarID], buttonName)
+ QWhatsThis.add( toolButton, whatsThisText )
+ self.whatsThisButton = QWhatsThis.whatsThisButton(self.toolbars[toolBarID])
+
+
+ def initMenu(self):
+
+ for (menuName, subMenu) in self.menu:
+ menu = QPopupMenu(self)
+ self.menuBar().insertItem( menuName, menu )
+ for menuOption in subMenu:
+ if len(menuOption)==1:
+ menu.insertSeparator()
+ elif len(menuOption)==2:
+ menu.insertItem( menuOption[0], menuOption[1] )
+ elif len(menuOption)==3:
+ menu.insertItem( menuOption[2], \
+ menuOption[0], \
+ menuOption[1] )
+
+
+
+ def slotNewFile(self):
+ ed = %{APPNAME}()
+ ed.setCaption(self.appTitle)
+ ed.show()
+
+ def slotOpenFile(self):
+ fileName = str(QFileDialog.getOpenFileName("", "", self))
+ print fileName
+ if not fileName=="":
+ self.load(fileName)
+ else:
+ self.statusBar().message("Loading aborted", 2000)
+
+ def slotSaveFile(self):
+ if self.fileName=="":
+ self.saveAs()
+ return
+ self.save()
+
+
+ def slotSaveAs(self):
+ pass
+
+ def slotPrint(self):
+ margin = 10
+ pageno = 1
+ if self.printer.setup(self):
+ self.statusBar().message("Printing...");
+ p = QPainter()
+ if not p.begin(self.printer): return
+
+ p.setFont( self.editor.font() )
+ yPos = 0
+ fontMetrics = p.fontMetrics()
+ metrics = QPaintDeviceMetrics(self.printer)
+ for i in range(self.editor.lines()):
+ if margin + yPos > metrics.height() - margin:
+ pageNo += 1
+ self.statusBar().message("Printing (page " + pageNo + ")...")
+ self.printer.newPage()
+ yPos = 0
+ p.drawText( margin, margin+yPos, \
+ metrics.width(), \
+ fontMetrics.lineSpacing(), \
+ QPainter.ExpandTabs | QPainter.DontClip, \
+ self.editor.text(i) )
+ yPos += fontMetrics.lineSpacing()
+ p.end()
+ self.statusBar().message("Printing completed", 2000)
+ else:
+ self.statusBar().message("Printing aborted", 2000)
+
+ def slotClose(self):
+ pass
+
+ def slotQuit(self):
+ pass
+
+ def slotEditDetails(self):
+ docDet = documentdetails.documentDetails(self)
+ docDet.show()
+
+ def slotWhatsThis(self):
+ self.whatsThis()
+
+ def slotAbout(self):
+ QMessageBox.about(self, self.appTitle, \
+ "This example demonstrates the simple use of\n" + \
+ "QMainWindow, QMenuBar and QToolBar using QT\n" + \
+ "and Python.")
+
+ def slotAboutQT(self):
+ QMessageBox.aboutQt(self, self.appTitle)
+
+ def load(self,fileName):
+ f = open(fileName,"r")
+ if f:
+ self.editor.setText( f.read() )
+ self.editor.setModified(false)
+ self.setCaption(fileName)
+ self.statusBar().message("Loaded document " + fileName, 2000)
+ self.fileName = fileName
+ else:
+ self.statusBar().message("Could not load " + fileName, 5000)
+ return
+
+ def saveAs(self):
+ fileName = str(QFileDialog.getSaveFileName(None, None, self))
+ if fileName!="":
+ self.fileName = fileName
+ self.save()
+ else:
+ self.statusBar().message("Saving aborted", 2000)
+
+ def save(self):
+ if self.fileName=="":
+ self.saveAs()
+ return
+ text = str(self.editor.text())
+ try:
+ f = open(self.fileName, "w")
+ f.write(text)
+ except:
+ self.statusBar().message("Could not write to " + self.fileName)
+ f.close()
+ return
+ f.close()
+ self.editor.setModified(false)
+ self.setCaption(self.fileName)
+ self.statusBar().message( "File " + self.fileName + " saved", 2000)
+
+ def closeEvent(self, closeEvent):
+ if not self.editor.isModified():
+ closeEvent.accept()
+ return
+
+ yesNoCancel = QMessageBox.information(self, self.appTitle,
+ "Do you want to save the changes\n" + \
+ "to the document?", \
+ "Yes", "No", "Cancel",
+ 0, 1)
+ if yesNoCancel == 0:
+ self.save()
+ closeEvent.accept()
+ elif yesNoCancel == 1:
+ closeEvent.accept()
+ else:
+ closeEvent.ignore()
+
+
+
+
+def main(args):
+ app=QApplication(args)
+ mainWindow = %{APPNAME}()
+ mainWindow.show()
+ app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
+ app.exec_loop()
+
+
+
+if __name__ == "__main__":
+ main(sys.argv)
diff --git a/languages/python/app_templates/pyqt/documentdetails.ui b/languages/python/app_templates/pyqt/documentdetails.ui
new file mode 100644
index 00000000..130d30ef
--- /dev/null
+++ b/languages/python/app_templates/pyqt/documentdetails.ui
@@ -0,0 +1,80 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>documentDetails</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>documentDetails</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>561</width>
+ <height>555</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Document Details</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Enter details about this document below.</string>
+ </property>
+ <property name="textFormat">
+ <enum>PlainText</enum>
+ </property>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>groupBox1</cstring>
+ </property>
+ <property name="title">
+ <string>Author</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="0" column="1">
+ <property name="name">
+ <cstring>lineEdit1</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>groupBox2</cstring>
+ </property>
+ <property name="title">
+ <string>Company</string>
+ </property>
+ </widget>
+ </vbox>
+</widget>
+<includes>
+</includes>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/languages/python/app_templates/pyqt/fileopen.pyxpm b/languages/python/app_templates/pyqt/fileopen.pyxpm
new file mode 100644
index 00000000..e90fcfee
--- /dev/null
+++ b/languages/python/app_templates/pyqt/fileopen.pyxpm
@@ -0,0 +1,19 @@
+ 16 13 5 1
+. c #040404
+# c #808304
+a c None
+b c #f3f704
+c c #f3f7f3
+aaaaaaaaa...aaaa
+aaaaaaaa.aaa.a.a
+aaaaaaaaaaaaa..a
+a...aaaaaaaa...a
+.bcb.......aaaaa
+.cbcbcbcbc.aaaaa
+.bcbcbcbcb.aaaaa
+.cbcb...........
+.bcb.#########.a
+.cb.#########.aa
+.b.#########.aaa
+..#########.aaaa
+...........aaaaa
diff --git a/languages/python/app_templates/pyqt/fileprint.pyxpm b/languages/python/app_templates/pyqt/fileprint.pyxpm
new file mode 100644
index 00000000..26f3ca9d
--- /dev/null
+++ b/languages/python/app_templates/pyqt/fileprint.pyxpm
@@ -0,0 +1,21 @@
+ 16 14 6 1
+. c #000000
+# c #848284
+a c #c6c3c6
+b c #ffff00
+c c #ffffff
+d c None
+ddddd.........dd
+dddd.cccccccc.dd
+dddd.c.....c.ddd
+ddd.cccccccc.ddd
+ddd.c.....c....d
+dd.cccccccc.a.a.
+d..........a.a..
+.aaaaaaaaaa.a.a.
+.............aa.
+.aaaaaa###aa.a.d
+.aaaaaabbbaa...d
+.............a.d
+d.aaaaaaaaa.a.dd
+dd...........ddd
diff --git a/languages/python/app_templates/pyqt/filesave.pyxpm b/languages/python/app_templates/pyqt/filesave.pyxpm
new file mode 100644
index 00000000..3f28c25d
--- /dev/null
+++ b/languages/python/app_templates/pyqt/filesave.pyxpm
@@ -0,0 +1,19 @@
+ 14 14 4 1
+. c #040404
+# c #808304
+a c #bfc2bf
+b c None
+..............
+.#.aaaaaaaa.a.
+.#.aaaaaaaa...
+.#.aaaaaaaa.#.
+.#.aaaaaaaa.#.
+.#.aaaaaaaa.#.
+.#.aaaaaaaa.#.
+.##........##.
+.############.
+.##.........#.
+.##......aa.#.
+.##......aa.#.
+.##......aa.#.
+b.............
diff --git a/languages/python/app_templates/pyqt/install-sh b/languages/python/app_templates/pyqt/install-sh
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/languages/python/app_templates/pyqt/install-sh
diff --git a/languages/python/app_templates/pyqt/missing b/languages/python/app_templates/pyqt/missing
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/languages/python/app_templates/pyqt/missing
diff --git a/languages/python/app_templates/pyqt/mkinstalldirs b/languages/python/app_templates/pyqt/mkinstalldirs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/languages/python/app_templates/pyqt/mkinstalldirs
diff --git a/languages/python/app_templates/pyqt/pyqt b/languages/python/app_templates/pyqt/pyqt
new file mode 100644
index 00000000..24b1b72f
--- /dev/null
+++ b/languages/python/app_templates/pyqt/pyqt
@@ -0,0 +1,10 @@
+# KDE Config file
+[General]
+Name=Python Qt application
+Name[fr]=Une application Qt avec PYTHON
+Icon=pyqt.png
+Category=Python
+Comment=This generates an application framework using Python and Qt
+Comment[fr]=Gnre un squelette d'application Qt dans le language PYTHON.
+FileTemplates=py,ShellStyle
+ShowFilesAfterGeneration=APPNAMELC.py
diff --git a/languages/python/app_templates/pyqt/pyqt-am-preproc.py b/languages/python/app_templates/pyqt/pyqt-am-preproc.py
new file mode 100644
index 00000000..dda5e2c3
--- /dev/null
+++ b/languages/python/app_templates/pyqt/pyqt-am-preproc.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+# Preprocess Makefile.am for PyQT project
+# Julian Rockey 2002
+
+# TODO:
+# Test real_lines properly
+# Process Makefile.am's in sub-directories
+
+from __future__ import generators
+import sys
+import re
+
+# function to convert list of lists with continuation chars
+# (bashslashes) to list of actual lines
+def real_lines(m):
+ while len(m)>0:
+ result = ""
+ if m[0][-1]=='\\':
+ while (len(m)>0 and m[0][-1]=='\\'):
+ result += m[0][:-1]
+ m=m[1:]
+ if len(m)>0:
+ result += m[0]
+ m=m[1:]
+ yield result
+
+# check for arguments
+if len(sys.argv)<2:
+ makefile_am = "Makefile.am"
+else:
+ makefile_am = sys.argv[1]
+
+
+# read in Makefile.am
+f = open(makefile_am,"r")
+mf = f.readlines()
+f.close()
+
+# parse for variables
+re_variable = re.compile("^(#kdevelop:[ \t]*)?([A-Za-z][A-Za-z0-9_]*)[ \t]*:?=[ \t]*(.*)$")
+variables = {}
+
+
+for l in real_lines(mf):
+ m = re_variable.match(l)
+ if m!=None:
+ (nowt, lhs, rhs) = m.groups()
+ variables[lhs]=rhs
+
+# look for app sources
+for (var,data) in variables.items():
+ spl = var.split("_",1)
+ spl.append("")
+ (prefix,primary) = (spl[0], spl[1])
+ if primary=="PROGRAMS":
+ target=data
+ if variables.has_key(target + "_SOURCES"):
+ sources = variables[target+"_SOURCES"].split()
+
+# change .ui into .py
+py_sources = []
+for s in sources:
+ py_sources.append(re.sub("\.ui$",".py",s))
+
+# replace dependencies of main target with list of .py sources
+# FIXME escape target
+re_maintarget = re.compile("(" + target + ".*?:).*")
+out = []
+for l in mf:
+ m = re_maintarget.match(l)
+ if m!=None:
+ (tar,)=m.groups()
+ l=tar + " " + " ".join(py_sources) + "\n"
+ out.append(l)
+
+# backup existing Makefile.am
+f = open(makefile_am + "~", "w")
+f.writelines(mf)
+f.close()
+
+# write file
+f = open(makefile_am, "w")
+f.writelines(out)
+f.close()
diff --git a/languages/python/app_templates/pyqt/pyqt.kdevtemplate b/languages/python/app_templates/pyqt/pyqt.kdevtemplate
new file mode 100644
index 00000000..bffbcd8c
--- /dev/null
+++ b/languages/python/app_templates/pyqt/pyqt.kdevtemplate
@@ -0,0 +1,168 @@
+# KDE Config File
+[General]
+Name=Python Qt application
+Name[ca]=Aplicació per a Qt en Python
+Name[da]=Python Qt program
+Name[de]=Python/Qt-Anwendung
+Name[el]=Εφαρμογή Python Qt
+Name[es]=Aplicación Qt en Python
+Name[et]=Pythoni Qt rakendus
+Name[eu]=Python Qt aplikazioa
+Name[fa]=کاربرد پیتون Qt
+Name[fr]=Application Qt Python
+Name[ga]=Feidhmchlár Qt Python
+Name[gl]=Aplicación Qt en Python
+Name[hu]=Python/Qt-alapú alkalmazás
+Name[it]=Applicazione Qt Python
+Name[ja]=Python Qt アプリケーション
+Name[nds]=Python Qt-Programm
+Name[ne]=पाइथोन क्यू टी अनुप्रयोग
+Name[nl]=Python Qt-toepassing
+Name[pl]=Program Qt w Pythonie
+Name[pt]=Aplicação Qt em Python
+Name[pt_BR]=Aplicação Qt em Python
+Name[ru]=Приложение Qt на Python
+Name[sk]=Python Qt aplikácia
+Name[sr]=Python-Qt програм
+Name[sr@Latn]=Python-Qt program
+Name[sv]=Python Qt-program
+Name[tr]=Python Qt Uygulaması
+Name[zh_CN]=Python Qt 应用程序
+Name[zh_TW]=Python Qt 應用程式
+Icon=pyqt.png
+Category=Python
+Comment=This generates an application framework using Python and Qt
+Comment[ca]=Genera una infraestructura d'aplicació usant Python i Qt
+Comment[da]=Dette genererer et programskelet ved brug af Python og Qt
+Comment[de]=Hiermit wird ein Anwendungsgerüst unter Verwendung von Python und Qt erstellt
+Comment[el]=Αυτό δημιουργεί ένα πλαίσιο εφαρμογής χρησιμοποιώντας τις Python και Qt
+Comment[es]=Genera una infraestructura de aplicación que usa Python y Qt
+Comment[et]=Rakenduse raamistiku loomine Pythoni ja Qt abil
+Comment[eu]=Honek Python eta Qt darabiltzan aplikazioen lan-marko bat sortzen du
+Comment[fa]=یک چارچوب کاربرد با استفاده از پیتون و Qt تولید می‌کند
+Comment[fr]=Génère une infrastructure d'application utilisant Python et Qt
+Comment[ga]=Cruthaíonn sé seo creatlach feidhmchláir le Python agus Qt
+Comment[gl]=Isto xera un contorno de traballo para unha aplicación usando Python e Qt
+Comment[hu]=Létrehoz egy alkalmazás-keretrendszert Python nyelven, a Qt felhasználásával
+Comment[it]=Genera l'infrastruttura applicativa usando Python e Qt
+Comment[ja]=Python と Qt を使ってアプリケーションフレームワークを作成します
+Comment[nds]=Dit stellt mit Python un Qt en Programmrahmenwark op.
+Comment[ne]=यसले पाइथोन र क्यू टी प्रयोग गरेर अनुप्रयोग फ्रेमवर्क उत्पन्न गर्दछ
+Comment[nl]=Dit genereert een toepassingsframework met behulp van Python en Qt
+Comment[pl]=Generuje szablon programu używającego Pythona i Qt
+Comment[pt]=Isto cria a plataforma de uma aplicação que usa o Python e o Qt
+Comment[pt_BR]=Isto cria a plataforma de uma aplicação que usa o Python e o Qt
+Comment[ru]=Создание приложения Qt на Python
+Comment[sk]=Vygeneruje aplikačný framework používajúci Python a Qt
+Comment[sr]=Прави радни оквир програма користећи Python и Qt
+Comment[sr@Latn]=Pravi radni okvir programa koristeći Python i Qt
+Comment[sv]=Detta skapar ett programramverk med användning av Python och Qt
+Comment[tr]=Bu Python ve Qt kullanan bir uygulama çatısı yaratır.
+Comment[zh_CN]=这将生成一个使用 Python 和 Qt 的应用程序框架
+Comment[zh_TW]=產生一個使用 Python 與 Qt 的應用程式框架
+FileTemplates=py,ShellStyle
+ShowFilesAfterGeneration=%{dest}/%{APPNAMELC}.py
+Archive=pyqt.tar.gz
+
+[GNU]
+Type=include
+File=%{kdevelop}/template-common/gnu.kdevtemplate
+
+[FILE1]
+Type=install
+EscapeXML=true
+Source=%{src}/app.kdevelop
+Dest=%{dest}/%{APPNAMELC}.kdevelop
+
+[FILE2]
+Type=install
+Source=%{src}/app.py
+Dest=%{dest}/%{APPNAMELC}.py
+
+[FILE3]
+Type=install
+EscapeXML=true
+Source=%{src}/documentdetails.ui
+Dest=%{dest}/documentdetails.ui
+
+[FILE4]
+Type=install
+Source=%{src}/app-Makefile.am
+Dest=%{dest}/Makefile.am
+
+[FILE5]
+Type=install
+Source=%{src}/app-configure.ac
+Dest=%{dest}/configure.ac
+
+[FILE6]
+Type=install
+Source=%{src}/app-autogen.sh
+Dest=%{dest}/autogen.sh
+
+[FILE7]
+Type=install
+Source=%{src}/mkinstalldirs
+Dest=%{dest}/mkinstalldirs
+
+[FILE8]
+Type=install
+Source=%{src}/missing
+Dest=%{dest}/missing
+
+[FILE9]
+Type=install
+Source=%{src}/install-sh
+Dest=%{dest}/install-sh
+
+[FILE10]
+Type=install
+Source=%{src}/pyqt-am-preproc.py
+Dest=%{dest}/pyqt-am-preproc.py
+
+[FILE11]
+Type=install
+Source=%{src}/fileopen.pyxpm
+Dest=%{dest}/fileopen.pyxpm
+
+[FILE12]
+Type=install
+Source=%{src}/fileprint.pyxpm
+Dest=%{dest}/fileprint.pyxpm
+
+[FILE13]
+Type=install
+Source=%{src}/filesave.pyxpm
+Dest=%{dest}/filesave.pyxpm
+
+[MSG]
+Type=message
+Comment=A Python Qt application was created in %{dest}
+Comment[ca]=Una aplicació per a Qt en Python ha estat creada en %{dest}
+Comment[da]=Et Python Qt program blev oprettet i %{dest}
+Comment[de]=Eine Python/Qt-Anwendung wurde in %{dest} erstellt.
+Comment[el]=Μια εφαρμογή Python Qt δημιουργήθηκε στο %{dest}
+Comment[es]=Una aplicación Qt en Python ha sido creada en %{dest}
+Comment[et]=Pythoni Qt rakendus loodi asukohta %{dest}
+Comment[eu]=Python eta Qt darabiltzan aplikazio bat sortu da hemen: %{dest}
+Comment[fa]=یک کاربرد پیتون Qt در %{dest} ایجاد شد
+Comment[fr]=Une application Qt Python a été créée dans %{dest}
+Comment[ga]=Cruthaíodh feidhmchlár Python Qt i %{dest}
+Comment[gl]=Creouse unha aplicación Qt en Python en %{dest}
+Comment[hu]=Létrejött egy Python/Qt-alkalmazás itt: %{dest}
+Comment[it]=È stata creata un'applicazione Qt Python in %{dest}
+Comment[ja]=Python Qt アプリケーションを %{dest} に作成しました
+Comment[nds]=In %{dest} wöör en Python-Qt-Programm opstellt.
+Comment[ne]=पाइथोन क्यू टी अनुप्रयोग %{dest} मा सिर्जना गरियो
+Comment[nl]=Een Python Qt-toepassing is aangemaakt in %{dest}
+Comment[pl]=Program używający Pythona i Qt został utworzony w %{dest}
+Comment[pt]=Foi criada uma aplicação Qt em Python em %{dest}
+Comment[pt_BR]=Foi criada uma aplicação Qt em Python em %{dest}
+Comment[ru]=Приложение Qt на Python создано в %{dest}
+Comment[sk]=Python Qt aplikácia bola vytvorená v %{dest}
+Comment[sr]= Python-Qt програм је направљен у %{dest}
+Comment[sr@Latn]= Python-Qt program je napravljen u %{dest}
+Comment[sv]=Ett Python Qt-program skapades i %{dest}
+Comment[tr]=Bir Python Qt uygulaması %{dest} içinde yaratıldı.
+Comment[zh_CN]=在 %{dest} 创建了一个 Python Qt 应用程序
+Comment[zh_TW]=一個 Python Qt 應用程式已建立於 %{dest}
diff --git a/languages/python/app_templates/pyqt/pyqt.png b/languages/python/app_templates/pyqt/pyqt.png
new file mode 100644
index 00000000..207b942f
--- /dev/null
+++ b/languages/python/app_templates/pyqt/pyqt.png
Binary files differ
diff --git a/languages/python/app_templates/pyqt/templates-ui-dialog b/languages/python/app_templates/pyqt/templates-ui-dialog
new file mode 100644
index 00000000..fc2aefce
--- /dev/null
+++ b/languages/python/app_templates/pyqt/templates-ui-dialog
@@ -0,0 +1,20 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>Form1</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>Form1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/languages/python/app_templates/pyqt/templates-ui-mainwin b/languages/python/app_templates/pyqt/templates-ui-mainwin
new file mode 100644
index 00000000..854da009
--- /dev/null
+++ b/languages/python/app_templates/pyqt/templates-ui-mainwin
@@ -0,0 +1,436 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>Form1</class>
+<widget class="QMainWindow">
+ <property name="name">
+ <cstring>Form1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+</widget>
+<menubar>
+ <property name="name">
+ <cstring>menubar</cstring>
+ </property>
+ <item text="&amp;File" name="fileMenu">
+ <action name="fileNewAction"/>
+ <action name="fileOpenAction"/>
+ <action name="fileSaveAction"/>
+ <action name="fileSaveAsAction"/>
+ <separator/>
+ <action name="filePrintAction"/>
+ <separator/>
+ <action name="fileExitAction"/>
+ </item>
+ <item text="&amp;Edit" name="editMenu">
+ <action name="editUndoAction"/>
+ <action name="editRedoAction"/>
+ <separator/>
+ <action name="editCutAction"/>
+ <action name="editCopyAction"/>
+ <action name="editPasteAction"/>
+ <separator/>
+ <action name="editFindAction"/>
+ </item>
+ <item text="&amp;Help" name="helpMenu">
+ <action name="helpContentsAction"/>
+ <action name="helpIndexAction"/>
+ <separator/>
+ <action name="helpAboutAction"/>
+ </item>
+</menubar>
+<toolbars>
+</toolbars>
+<actions>
+ <action>
+ <property name="name">
+ <cstring>fileNewAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image0</iconset>
+ </property>
+ <property name="text">
+ <string>New</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;New</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+N</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>fileOpenAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image1</iconset>
+ </property>
+ <property name="text">
+ <string>Open</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Open...</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+O</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>fileSaveAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image2</iconset>
+ </property>
+ <property name="text">
+ <string>Save</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Save</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+S</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>fileSaveAsAction</cstring>
+ </property>
+ <property name="text">
+ <string>Save As</string>
+ </property>
+ <property name="menuText">
+ <string>Save &amp;As...</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>filePrintAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image3</iconset>
+ </property>
+ <property name="text">
+ <string>Print</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Print...</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+P</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>fileExitAction</cstring>
+ </property>
+ <property name="text">
+ <string>Exit</string>
+ </property>
+ <property name="menuText">
+ <string>E&amp;xit</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>editUndoAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image4</iconset>
+ </property>
+ <property name="text">
+ <string>Undo</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Undo</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+Z</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>editRedoAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image5</iconset>
+ </property>
+ <property name="text">
+ <string>Redo</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Redo</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+Y</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>editCutAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image6</iconset>
+ </property>
+ <property name="text">
+ <string>Cut</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Cut</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+X</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>editCopyAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image7</iconset>
+ </property>
+ <property name="text">
+ <string>Copy</string>
+ </property>
+ <property name="menuText">
+ <string>C&amp;opy</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+C</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>editPasteAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image8</iconset>
+ </property>
+ <property name="text">
+ <string>Paste</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Paste</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+V</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>editFindAction</cstring>
+ </property>
+ <property name="iconSet">
+ <iconset>image9</iconset>
+ </property>
+ <property name="text">
+ <string>Find</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Find...</string>
+ </property>
+ <property name="accel">
+ <string>Ctrl+F</string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>helpContentsAction</cstring>
+ </property>
+ <property name="text">
+ <string>Contents</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Contents...</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>helpIndexAction</cstring>
+ </property>
+ <property name="text">
+ <string>Index</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;Index...</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ </action>
+ <action>
+ <property name="name">
+ <cstring>helpAboutAction</cstring>
+ </property>
+ <property name="text">
+ <string>About</string>
+ </property>
+ <property name="menuText">
+ <string>&amp;About</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ </action>
+</actions>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="721">789cedd2b10ac2301405d03d5ff148b62056035241fc04c5511087f425a2432b681d44fc777ba329d6b47fe07d19dee50cc9904cd376b3229d896b6deb13131fed85b4bb95e57db75f3e8434869a93d3548e841c13d3fa5c79ecaad9d52404b540351e83caa833c6a03ad4798e41f5a86c30a816f510126ee94d14d52611fb8e2ad49070a4445ca4447ca4446ca444da07fecac7ffd2956ebe64f81ff4c873215e0583a9b0</data>
+ </image>
+ <image name="image1">
+ <data format="XPM.GZ" length="691">789cad914d0ac2301085f739c5d0d915b11a140ae211149782b898448b2e5a41eb42c4bb9b9fa6a67644045f0299978f37134896c27ab5803413979aeaa3067da033a4bb6b59de36dbf95d245282d953182703910c41c3f254ed6d8da6c69193b5dada7c924b6fc9dac2c85b156c51b83eacfe41d0c89defc4dfa2dd7c37fc44b025a179043c4152a4b055f4365414ad0e8901fd94c1ae5e19441da9211c68e7f44098d3074d86019e70a0210c089958df7ffb31134fa13797a8</data>
+ </image>
+ <image name="image2">
+ <data format="XPM.GZ" length="691">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022530543251d2e253d856405bffcbc54105b19c856360003103711c4b530b13082709340dc644310047193c1dcc424d314883958015846190b80ca24262a2721012087349964a030ba69c9c9303d403e9132087b68279388ecff4414193440948c32aa71d86470bb80863258a21b9a0eb0a7905a6b2e006d59a436</data>
+ </image>
+ <image name="image3">
+ <data format="XPM.GZ" length="2509">789c7d944973db461085effa152cf54d956a932089a55239c896572d96bcc4b253390033186ea2488aa416a7f2dfd3db0cbd44e6d340f8f8def43406209e1c742ecf4f3b074ff6d69b7a33711d37ae6f3a077e3b9f3ffcf5f71fffeced675987fecab293edffb6b77fb1e9b8ced9e2ba65c08c00baf2117e2f5c86d02d99e196b9d7ed963df53f2ab3c47789258fa7c26564688d4bf30f23673de113e6ac1719ae9459e27f4d5c893f17ae126f8d2be3ebc87d9dff4e3904f317ccfd5ef23f28b3c45f26963c7e510ec1fc9570157dd81857967f883c90cd8635f3208b8c0b6596f863e17a500fd597fe8744c35afc1be33aef8bff5ad9b5e637cc7993f7f346fca571637c1fb9d0f99f9543b07ab2df453ff9723d0551a1f3d791cb8170573904f3a5bf725034e66f133be96fa44c1246799e4a573495e461a29cfcbbc8e64f8d9df96564f5519e876a1019668975fda05c593d5c25d67a6f945d6ef3bdb08b3ed491eba1e467c6561fcf229bff4ad9b5c6c7ccf530fa8089bdf8136596703fb1f800c23ee5ff548e3e7a636f3c8ddc68bd8ab91926066596b05c5fe359c285b2cf8de5f7ed7296f050b825d6f74763dc1a0f227bcdbf60f679e29789353f5666093f4facfe857208e63f156e93df8bdc16c223e358ff28b2f939735b240eca2ce1678983f0a57208e6bf150ec96f8d83f127e650b084cf85e5a32fdf9d10b0c6c6e44835c9631dfd9ff235b618925ad1e89779278af5750df7681ea40316d8111eef876a79ad977ae773d8257ec8efead629fdeb3ca4ba9ae6e11fcdbbef6aa72b7934ef695702eddf4e631a13d2f4c73cd599e115f533a639bbc173e6788d0b5cf23a314fe915dee01a37df698bb77887f7f8805ff190e64c342fb59fe2333ca2e373d30b7c89aff035bec1634a9e904ef1417faf78866ff1fc275de03b7c4fa3a1553e50fd8f78a2ef0bfcf43fe973bcc4cff805bb74d6a3de0e31b37c9f561fe090c6583a19612e9d1dd179417db1575237191eeafb172b9cd22a7d409a7bcc8f0c4e68f01900ef44090db8547f4ee9a966456732445083078f779a8756dfdf52f19b1cd59c699254e31c46d0703f30b6fa5239a5d27faabc22b78409de838316bdd51fd1377730a531a12bd363c949aa3d936f1a6821e8fda566aef8fe011d612eba860569495a9196721ebe7d7ed0c30dac491b58d2bd21c116b634bf25ddd2fd9dd9f3f6efef7bff0111915e41</data>
+ </image>
+ <image name="image4">
+ <data format="XPM.GZ" length="661">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022630543251d2e253d856405bffcbc54105b19c8563600020b13103711c4b530b1308270f5b082019251068344848c32b23808206494a1e23015890819653db8b81e44255c0659025d460fa70c6e3d78ec814b21b90d052422fb070540f50ebaf84196a9b5e6020011bc73cc</data>
+ </image>
+ <image name="image5">
+ <data format="XPM.GZ" length="661">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022630543251d2e253d856405bffcbc54103b11c8563600020b13105719c4b530b1308270f5b0027acb28278201a64c221c4084136132ca7011885c225c06c91890542256193d98a198327a386570ea49449581bb4d2f114d0624a08c230c50fd4f5cb80da04cad351700f7fd8672</data>
+ </image>
+ <image name="image6">
+ <data format="XPM.GZ" length="661">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022630543251d2e253d856405bffcbc54105b19c856360003103711c6b53002abc40a90649491482ac92863955146d6822ca387474619c9301419a03842825819245bd064129513b1cb242602512216994430d44bc4904984c8c1a5e032897a3019a8144c26518f800c92715864d0ec81ab4dc4701b924fb0850e8a4cad351700fbd07ccb</data>
+ </image>
+ <image name="image7">
+ <data format="XPM.GZ" length="706">789c9d92cb0ac2301045f7f98aa1d915b1da8214c44f505c0ae26226b1e8a20a5a1722febb9924a5af58c19b40e77238a1842431ecb66b881371afb03a2b5027bc41ac1f65f9dc1f562f11a52998bd80793411d114146cae9723cfd2cc7266c395ea9aa75c15d74c65aad05c35d79c727215b91636f6d860c689f40910b4e92147d840b3be39d8416d877c860eb9af478d23919c4b8a7a0ed68eb628e4a04521c7fd46c07138e47448dbf1f32fc767e8d43735741af287d3ced83b782fc5075b18a5a5</data>
+ </image>
+ <image name="image8">
+ <data format="XPM.GZ" length="736">789c7d92d10a82301486eff714c3dd49649984103d42d165105dcce3465d58507611d1bbb773d674aed93f85fd7efb183ab394ef771b9e66ecdecaf60c1c4ef2c6d3fad134cfc371fd62499e7373957c9e4c5832e5c0b7d78bc2b9307331a36055ae960556c05a16656e69e5aaa5355658c202965825566d62176b57b5a64da3f188c084841e0a29a5e831910ef8885e4854501922e8a6b923586a176a8e40051ec1e63b7d0267387c6738424775091d653f98565a858e26c110447107d1886350d4a1c41c3dea7864e87c37f3ce47fc3aee7cd5207ffe90f78a7d0007c6c175</data>
+ </image>
+ <image name="image9">
+ <data format="XPM.GZ" length="2798">789cb5d5594f1b491007f0773e8545bda1d53ff81a7bb4da07830103b603b92059edc34cf78c0ff0812f3051befb5677554f56c24428d2aa78e0a7aeaeea6be0dd41e9f6aa573a78b7b75c25ab91299961b2281dd8f564b2fdfb9fbfbeefed572a25fe291f46a5cafe1f7bfbd7ab9229f567d3cc81fa0caa945d785f78c72ebc2f9dabb10bef9e73ade2c21913e77ae2c28f2fc48d6a947ab7c4b169d6bc8f9ca3aa0b3fbfaf4e35ff4c5cccdf8813db34de1def34e4c3881b3cc38fb7d5a918f78525ff46dcaca9576a23a627715cd3f53e8a131b7b63edecba69fd8d3af41b1496fa6d7153f78f86b8a86f0bcbfe9ec5493d16cfc5695dfad34c6d651ca9f7cffdbd173743fd441cd64f0f85a5fe489c6a3fd4d5613c0d4eeade43b189747c1b2ce3683abbeebadf5a702ae343716c743d53313f1febc7bfa843bf1371581f9d06ebf8581df257e2b01eba57675a5fea19177e7c109cfa712271aceba58938b13a6ec4a13fba62ee27f53fa9b51fe5c1ba7f7f1f71cd85f7545cdcf73ad8f8ef137762de9fd4ef898b7e51b0d63f52877e65b10de3c785657eacced4fe7b77b763236fab36fa3e1ec5a9d5f341b0e4d3526c42bd4ab0eee7505cf4fb28ce1aea6fc146fa7f76e6d3e115fafa5d7112cebf254eeb328e6a70967b9f8b437fba13db4ceb2fc5453f7f5ffcfac2795f046bbd0fe2a2df486c42bd2bb18dd46375e89f89b99fccf7ef2dadbbf0eea8add6bf16db4cbd1067b9de8fafc7b7a1ef13cf6213e50defadd846b9acff569c3574fe833ad7fa5fc57943cfdb9f9f894cd8cf93982748fdb9386f64dee4df97c978ff52ef4c9d69ff9938cff53cfdf7ec5627f5ae576f8fdfcf0721410ac391c222fb753e720c30c408638e3bdcf31c7a3d9fb3279862c631c70316586285f5ae1e727fd8e091f3e678c216cf68e108c768e3e4957ccb2b39e5fc337470ce71814b74d143ffe59ae4ff01ae7825d7f8c0753fe213d7ff8c2ffcfb0deccefc016ef115df380e51460555d4504784069aafe48f798f87885126a04a4409a564c8be92bfc115655cb94c395a34409d8634a231afe7c58ee5ef35d7bae3dc2eddd384a634a339c7032d90efcce7bba225ad38525aa3461b7ae478da75037a5f2758d196525ec93359aedde23882a563ae95edc8cf90529b4ee894c6bcf2844f66e2ce1239cf9afc7755c5fbc9b8479fdabcc71b3aa38ee4d039d7b9a04b1ecb5ebe677ea1964712ead2f9cf8aac1ecfd10a6f79ffdc7b4d7dee92bcfd7be1bd5ff29ccedbbf2f90dbfbfffefdfef873ef5fce01d04a</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>fileNewAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>fileNew()</slot>
+ </connection>
+ <connection>
+ <sender>fileOpenAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>fileOpen()</slot>
+ </connection>
+ <connection>
+ <sender>fileSaveAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>fileSave()</slot>
+ </connection>
+ <connection>
+ <sender>fileSaveAsAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>fileSaveAs()</slot>
+ </connection>
+ <connection>
+ <sender>filePrintAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>filePrint()</slot>
+ </connection>
+ <connection>
+ <sender>fileExitAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>fileExit()</slot>
+ </connection>
+ <connection>
+ <sender>editUndoAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>editUndo()</slot>
+ </connection>
+ <connection>
+ <sender>editRedoAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>editRedo()</slot>
+ </connection>
+ <connection>
+ <sender>editCutAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>editCut()</slot>
+ </connection>
+ <connection>
+ <sender>editCopyAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>editCopy()</slot>
+ </connection>
+ <connection>
+ <sender>editPasteAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>editPaste()</slot>
+ </connection>
+ <connection>
+ <sender>editFindAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>editFind()</slot>
+ </connection>
+ <connection>
+ <sender>helpIndexAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>helpIndex()</slot>
+ </connection>
+ <connection>
+ <sender>helpContentsAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>helpContents()</slot>
+ </connection>
+ <connection>
+ <sender>helpAboutAction</sender>
+ <signal>activated()</signal>
+ <receiver>Form1</receiver>
+ <slot>helpAbout()</slot>
+ </connection>
+</connections>
+<slots>
+ <slot>fileNew()</slot>
+ <slot>fileOpen()</slot>
+ <slot>fileSave()</slot>
+ <slot>fileSaveAs()</slot>
+ <slot>filePrint()</slot>
+ <slot>fileExit()</slot>
+ <slot>editUndo()</slot>
+ <slot>editRedo()</slot>
+ <slot>editCut()</slot>
+ <slot>editCopy()</slot>
+ <slot>editPaste()</slot>
+ <slot>editFind()</slot>
+ <slot>helpIndex()</slot>
+ <slot>helpContents()</slot>
+ <slot>helpAbout()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>