--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5XML/ShortcutsWriter.py Tue Jan 12 17:55:24 2010 +0000 @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2004 - 2010 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the writer class for writing an XML shortcuts file. +""" + +import time + +from E4Gui.E4Application import e4App + +from .XMLWriterBase import XMLWriterBase +from .Config import shortcutsFileFormatVersion + +import Preferences + +class ShortcutsWriter(XMLWriterBase): + """ + Class implementing the writer class for writing an XML shortcuts file. + """ + def __init__(self, file): + """ + Constructor + + @param file open file (like) object for writing + """ + XMLWriterBase.__init__(self, file) + + self.email = Preferences.getUser("Email") + + def writeXML(self): + """ + Public method to write the XML to the file. + """ + XMLWriterBase.writeXML(self) + + self._write('<!DOCTYPE Shortcuts SYSTEM "Shortcuts-%s.dtd">' % \ + shortcutsFileFormatVersion) + + # add some generation comments + self._write("<!-- Eric5 keyboard shortcuts -->") + self._write("<!-- Saved: %s -->" % time.strftime('%Y-%m-%d, %H:%M:%S')) + self._write("<!-- Author: %s -->" % self.escape("%s" % self.email)) + + # add the main tag + self._write('<Shortcuts version="%s">' % shortcutsFileFormatVersion) + + for act in e4App().getObject("Project").getActions(): + self._write(' <Shortcut category="Project">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' \ + % self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("UserInterface").getActions('ui'): + self._write(' <Shortcut category="General">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("UserInterface").getActions('wizards'): + self._write(' <Shortcut category="Wizards">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("DebugUI").getActions(): + self._write(' <Shortcut category="Debug">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('edit'): + self._write(' <Shortcut category="Edit">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('file'): + self._write(' <Shortcut category="File">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('search'): + self._write(' <Shortcut category="Search">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('view'): + self._write(' <Shortcut category="View">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('macro'): + self._write(' <Shortcut category="Macro">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('bookmark'): + self._write(' <Shortcut category="Bookmarks">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("ViewManager").getActions('spelling'): + self._write(' <Shortcut category="Spelling">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + actions = e4App().getObject("ViewManager").getActions('window') + for act in actions: + self._write(' <Shortcut category="Window">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for category, ref in e4App().getPluginObjects(): + if hasattr(ref, "getActions"): + actions = ref.getActions() + for act in actions: + if act.objectName(): + # shortcuts are only exported, if their objectName is set + self._write(' <Shortcut category="%s">' % category) + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' % \ + self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + for act in e4App().getObject("DummyHelpViewer").getActions(): + self._write(' <Shortcut category="HelpViewer">') + self._write(' <Name>%s</Name>' % act.objectName()) + self._write(' <Accel>%s</Accel>' % \ + self.escape("%s" % act.shortcut().toString())) + self._write(' <AltAccel>%s</AltAccel>' \ + % self.escape("%s" % act.alternateShortcut().toString())) + self._write(' </Shortcut>') + + # add the main end tag + self._write("</Shortcuts>", newline = False)