summaryrefslogtreecommitdiffstats
path: root/python/pykde/examples/xmlmenudemo.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pykde/examples/xmlmenudemo.py')
-rw-r--r--python/pykde/examples/xmlmenudemo.py291
1 files changed, 0 insertions, 291 deletions
diff --git a/python/pykde/examples/xmlmenudemo.py b/python/pykde/examples/xmlmenudemo.py
deleted file mode 100644
index ab91dd56..00000000
--- a/python/pykde/examples/xmlmenudemo.py
+++ /dev/null
@@ -1,291 +0,0 @@
-"""
-This template constructs an application with menus, toolbar and statusbar.
-It uses KDE classes and methods that simplify the task of building and
-operating a GUI. It is recommended that this approach be used, rather
-than the primitive approach in menuapp1.py
-"""
-
-"""
-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.
-"""
-
-
-False = 0
-True = not False
-
-
-import sys, os
-
-from qt import QPopupMenu, SIGNAL, QLabel, QIconSet
-
-from kdecore import KApplication, KCmdLineArgs, KAboutData, i18n, KIcon, KIconLoader, KShortcut, KGlobal
-from kdeui import KMainWindow, KMessageBox, KStdAction, KAction, KToggleAction, KFontSizeAction, KFontAction, KRadioAction,\
- KActionSeparator, KActionMenu, KWindowListMenu, KXMLGUIClient, KActionCollection
-
-STATUSBAR_LEFT = 1
-STATUSBAR_MIDDLE = 2
-STATUSBAR_RIGHT = 3
-
-class MainWin (KMainWindow):
- def __init__ (self, *args):
- apply (KMainWindow.__init__, (self,) + args)
-
- self.initActions ()
- self.setGeometry (0, 0, 350, 200)
-
- # The second arg of createGUI needs to be 0 (or False)
- # to enable XMLGUI features like ActionList (in 'dynamicActions')
- # If the default is used (True), the dynamic actions will not
- # appear in the menus
- self.createGUI (os.path.join (mainpath, "xmlmenudemoui.rc"), 0)
-
- self.dynamicActions()
-
- # Can't do this until the toolBar has been created in createGUI
- stretchlbl = QLabel ("", self.toolBar ())
- self.toolBar ().setStretchableWidget (stretchlbl)
-
- self.initStatusBar ()
-
- self.saveAction.setEnabled (False)
- self.saveAsAction.setEnabled (False)
-
- def initActions (self):
- # This is used in all of the KAction/KStdAction constructors --
- # Seems more efficient to only do the call once
- acts = self.actionCollection ()
-
- # This is used often enough, we just define it here
- scNull = KShortcut.null ()
-
- # "File" menu items
- self.newAction = KStdAction.openNew (self.slotNew, acts)
- self.openAction = KStdAction.open (self.slotOpen, acts)
- self.saveAction = KStdAction.save (self.slotSave, acts)
- self.saveAsAction = KStdAction.saveAs (self.slotSaveAs, acts)
- self.printAction = KStdAction.print_ (self.slotPrint, acts)
- self.quitAction = KStdAction.quit (self.slotQuit, acts)
-
- # "Edit" menu items
- self.undoAction = KStdAction.undo (self.slotUndo, acts)
- self.redoAction = KStdAction.redo (self.slotRedo, acts)
- self.cutAction = KStdAction.cut (self.slotCut, acts)
- self.copyAction = KStdAction.copy (self.slotCopy, acts)
- self.pasteAction = KStdAction.paste (self.slotPaste, acts)
- self.findAction = KStdAction.find (self.slotFind, acts)
- self.findNextAction = KStdAction.findNext (self.slotFindNext, acts)
- self.replaceAction = KStdAction.replace (self.slotReplace, acts)
-
- # NOTE!!!! You must specify a parent and name for the action object in its constructor
- # Normally in a constructor like
- #
- # someObject (QWidget *parent = 0, const char *name = 0)
- #
- # the parent may or may not be assigned, but widgets usually ignore the
- # name argument. For an action of *any* type (other than KStdAction),
- # the 'name' argument is what is used to load the action into the menus
- # and toolBar (in the line below, "specialActionName"). The XMLGUI mechanism
- # has no way to find out about the action objects except through their
- # object names - the variable the object is assigned to ('self.specialAction')
- # has no meaning in XNLGUI terms except through the objects 'name' member value
-
- self.specialAction = KAction (i18n ("Special"), scNull, self.slotSpecial, acts, "specialActionName")
-
- # Demo menu items
-
- # KToggleAction has an isChecked member and emits the "toggle" signal
- self.toggle1Action = KToggleAction ("Toggle 1", scNull, acts, "toggle1Action")
- self.toggle2Action = KToggleAction ("Toggle 2", scNull, self.slotToggle2, acts, "toggle2Action")
-
- # A separator - create once/use everywhere
- self.separateAction = KActionSeparator (acts, "separateAction")
-
- # Font stuff in menus or toolbar
- self.fontAction = KFontAction ("Font", scNull, acts, "fontAction")
- self.fontSizeAction = KFontSizeAction ("Font Size", scNull, acts, "fontSizeAction")
-
- self.fontAction.setComboWidth (150)
- self.fontSizeAction.setComboWidth (75)
-
- # Need to assign an icon to actionMenu below
- icons = KIconLoader ()
- iconSet = QIconSet (icons.loadIcon ("viewmag", KIcon.Toolbar))
-
- # Nested menus using KActions (also nested on toolbar)
- self.actionMenu = KActionMenu ("Action Menu", acts, "actionMenu")
- self.actionMenu.setIconSet (iconSet)
-
- # By using KStdAction here, the XMLGUI mechanism will automatically
- # create a 'View' menu and insert "Zoom In" and "Zoom Out" objects
- # in it. This happens because before parsing our *ui.rc file,
- # the standard KDE file config/ui/ui_standards.rc is parsed, and
- # then our *ui.rc file is merged with the result - this gives KDE
- # menus and toolBars a standard "look" and item placement (including
- # separators). Creating the KStdActions alone is sufficient - you
- # could delete their references from the *ui.rc file and the menu
- # items would still be created via ui_standards.rc
- self.actionMenu.insert (KStdAction.zoomIn (self.slotZoomIn, acts))
- self.actionMenu.insert (KStdAction.zoomOut (self.slotZoomOut, acts))
-
- self.radio1Action = KRadioAction ("Radio 1", scNull, self.slotRadio, acts, "radio1")
- self.radio1Action.setExclusiveGroup ("Radio")
- self.radio1Action.setChecked (1)
- self.radio2Action = KRadioAction ("Radio 2", scNull, self.slotRadio, acts, "radio2")
- self.radio2Action.setExclusiveGroup ("Radio")
- self.radio3Action = KRadioAction ("Radio 3", scNull, self.slotRadio, acts, "radio3")
- self.radio3Action.setExclusiveGroup ("Radio")
-
-
- def initStatusBar (self):
- self.statusBar ().insertItem ("", STATUSBAR_LEFT, 1000, True)
- self.statusBar ().insertItem ("", STATUSBAR_MIDDLE, 1000, True)
- self.statusBar ().insertItem ("", STATUSBAR_RIGHT, 1000, True)
-
- def dynamicActions (self):
- # This creates something like a 'recent files list' in the 'File' menu
- # (There is a KRecentFilesAction that probably should be used instead,
- # but this demos the use of action lists)
- # The code here corresponds to the <ActionList name="recent"/> entry
- # in the rc file
-
- # Just fake some filenames for now
- fakeFiles = ["kaction.sip", "kxmlguiclient.sip"]
-
- # Clear the old entries, so we don't end up accumulating entries in the menu
- self.unplugActionList("recent");
- self.dynamicActionsList = []
-
- # Create a KAction for each entry and store the KActions in a list
- # Use 'None' for the KActionCollection argument in the KAction constructor
- # in this case only
- for i in range (len (fakeFiles)):
- act = KAction (i18n (" ".join (["&" + str (i), fakeFiles [i]])), KShortcut.null (),\
- self.slotFake, None, fakeFiles [i][:-4] + "open")
- self.dynamicActionsList.append(act)
-
- # Update the menu with the most recent KActions
- self.plugActionList("recent", self.dynamicActionsList)
-
-
-#-------------------- slots -----------------------------------------------
-
- def slotFake (self):
- # sender () should be called before anything else
- # (including "notImpl") so the correct sender
- # value is returned
- sender = self.sender ().name ()
- self.notImpl ("Recent files (%s)" % sender)
-
- # 'id' is for toolbar button signals - ignored for menu signals
- def slotNew (self, id = -1):
- self.notImpl ("New")
-
- def slotOpen(self, id = -1):
- self.notImpl ("Open")
-
- def slotSave (self, id = -1):
- self.notImpl ("Save")
-
- def slotSaveAs (self):
- self.notImpl ("Save As")
-
- def slotPrint (self):
- self.notImpl ("Print")
-
- def slotQuit (self):
- self.notImpl ("Quit")
-
- def slotUndo (self):
- self.notImpl ("Undo")
-
- def slotRedo (self):
- self.notImpl ("Redo")
-
- def slotCut (self, id = -1):
- self.notImpl ("Cut")
-
- def slotCopy (self, id = -1):
- self.notImpl ("Copy")
-
- def slotPaste (self, id = -1):
- self.notImpl ("Paste")
-
- def slotFind (self):
- self.notImpl ("Find")
-
- def slotFindNext (self):
- self.notImpl ("Find Next")
-
- def slotReplace (self):
- self.notImpl ("Replace")
-
- def slotSpecial (self):
- self.notImpl ("Special")
-
- def slotToggle2 (self):
- self.notImpl ("Toggle")
-
- def slotZoomIn (self):
- self.notImpl ("Zoom In")
-
- def slotZoomOut (self):
- self.notImpl ("Zoom Out")
-
- def slotRadio (self):
- sender = self.sender ().name ()
- self.notImpl ("Radio %s" % sender [-1])
-
- def notImpl (self, item = "Feature"):
- self.statusBar ().changeItem ("%s not implemented" % item, STATUSBAR_LEFT)
- KMessageBox.error (self, "%s not implemented" % item, "Not Implemented")
- self.statusBar ().changeItem ("", STATUSBAR_LEFT)
-
-
-#-------------------- main ------------------------------------------------
-
-description = "A basic application template"
-version = "1.0"
-
-# The appName (xmlmenudemo - first argument) is required
-# if the program is to automatically locate it *ui.rc file
-aboutData = KAboutData ("xmlmenudemo", "xmlmenudemo",\
- version, description, KAboutData.License_GPL,\
- "(C) 2003 whoever the author is")
-
-aboutData.addAuthor ("author1", "whatever they did", "email@somedomain")
-aboutData.addAuthor ("author2", "they did something else", "another@email.address")
-
-mainpath = os.path.dirname (os.path.abspath (sys.argv[0]))
-KCmdLineArgs.init (sys.argv, aboutData)
-
-KCmdLineArgs.addCmdLineOptions ([("+files", "File to open")])
-
-app = KApplication ()
-mainWindow = MainWin (None, "main window")
-mainWindow.show()
-app.exec_loop()