summaryrefslogtreecommitdiffstats
path: root/python/pykde/templates/annotated/basicapp.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pykde/templates/annotated/basicapp.py')
-rw-r--r--python/pykde/templates/annotated/basicapp.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/python/pykde/templates/annotated/basicapp.py b/python/pykde/templates/annotated/basicapp.py
new file mode 100644
index 00000000..04300b48
--- /dev/null
+++ b/python/pykde/templates/annotated/basicapp.py
@@ -0,0 +1,113 @@
+"""
+This is a minimal PyKDE app template - it constructs an application
+and a main window, but does nothing else.
+"""
+
+"""
+Copyright 2003 Jim Bublitz
+
+Terms and Conditions
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+copyright holder.
+"""
+
+
+import sys
+
+from kdecore import KApplication, KCmdLineArgs, KAboutData
+from kdeui import KMainWindow
+
+"""
+Most PyKDE applications will need a main window - the is the top
+level widget (the parent for all other widgets). KMainWindow has
+more functionality than shown here (see more complex templates).
+It has the ability to create the other major parts of the user
+interface - the main view, menus, toolbars, etc.
+
+Usually you provide a subclass of KMainWindow, construct menus
+and toolbars in the subclass' __init__ method, and provide
+slots for menu/toolbar actions in separate methods.
+"""
+
+class MainWin (KMainWindow):
+ def __init__ (self, *args):
+ apply (KMainWindow.__init__, (self,) + args)
+
+
+#-------------------- main ------------------------------------------------
+
+# set up some basic information about the program in
+# a KAboutData object - this affects the application's
+# title bar caption and makes it easy to set up a
+# Help | About dialog box for your app
+appName = "some app"
+programName = "some program"
+description = "A basic application template"
+license = KAboutData.License_GPL
+version = "1.0"
+copyright = "(C) 2003 whoever the author is"
+
+aboutData = KAboutData (appName, programName, version, description, license, copyright)
+
+# you can add the names of the app's authors here
+aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
+aboutData.addAuthor ("author2", "they did something else", "another@email.address")
+
+# Pass the command line arguments and aboutData to
+# KCmdLineArgs - this is where KDE will look for
+# this information. The KApplication constructor
+# used below *requires* the args are processed
+# *before* KApplication is instantiated. There
+# is an alternate constructor that takes sys.argv
+# as an argument (see minimal.py)
+
+# Note that instead of argc/argv, this constructor
+# only takes a single argument - sys.argv - which
+# is a Python list
+KCmdLineArgs.init (sys.argv, aboutData)
+
+# Set up the command line options (switches) you
+# want your app to be able to process (you could
+# use Python's getopt module instead, but it works
+# a little differently)
+
+# Note that the argument for this method is a list
+# of tuples
+KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
+
+# instantiate KApplication - no other QObject
+# or QWidget based classes can be instantiated
+# until there is a KApplication instance
+app = KApplication ()
+
+# instantiate the subclass of KMainWindow
+mainWindow = MainWin (None, "main window")
+
+# create the display
+mainWindow.show()
+
+# run KApplication's event loop until the
+# program exits
+app.exec_loop()
+