E5XML/ShortcutsWriter.py

changeset 50
a36eecf45b2e
parent 18
3b1f5d872fd7
child 53
c3eb7cc1ff8b
--- /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)

eric ide

mercurial