diff options
Diffstat (limited to 'python/pykde/examples/xmlmenudemo.py')
-rw-r--r-- | python/pykde/examples/xmlmenudemo.py | 291 |
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() |