Helpviewer/HelpWindow.py

changeset 381
64ae9e09d8bc
parent 355
c29c8b8dadf1
child 383
286de4e5179c
--- a/Helpviewer/HelpWindow.py	Sat Jul 03 21:07:06 2010 +0200
+++ b/Helpviewer/HelpWindow.py	Sun Jul 04 17:52:29 2010 +0200
@@ -351,6 +351,10 @@
             settings.setAttribute(QWebSettings.DnsPrefetchEnabled, 
                 Preferences.getHelp("DnsPrefetchEnabled"))
         
+        if hasattr(QWebSettings, "defaultTextEncoding"):
+            settings.setDefaultTextEncoding(
+                Preferences.getHelp("DefaultTextEncoding"))
+        
     def __initActions(self):
         """
         Private method to define the user interface actions.
@@ -1156,6 +1160,12 @@
         menu.addSeparator()
         menu.addAction(self.pageSourceAct)
         menu.addAction(self.fullScreenAct)
+        if hasattr(QWebSettings, 'defaultTextEncoding'):
+            self.__textEncodingMenu = menu.addMenu(self.trUtf8("Text Encoding"))
+            self.connect(self.__textEncodingMenu, SIGNAL("aboutToShow()"), 
+                         self.__aboutToShowTextEncodingMenu)
+            self.connect(self.__textEncodingMenu, SIGNAL("triggered(QAction*)"), 
+                         self.__setTextEncoding)
         
         menu = mb.addMenu(self.trUtf8('&Go'))
         menu.setTearOffEnabled(True)
@@ -2968,3 +2978,58 @@
         @return reference to the opensearch manager object (OpenSearchManager)
         """
         return self.searchEdit.openSearchManager()
+    
+    def __aboutToShowTextEncodingMenu(self):
+        """
+        Private slot to populate the text encoding menu.
+        """
+        self.__textEncodingMenu.clear()
+        
+        codecs = []
+        for codec in QTextCodec.availableCodecs():
+            codecs.append(str(codec, encoding = "utf-8").lower())
+        codecs.sort()
+        
+        defaultTextEncoding = QWebSettings.globalSettings().defaultTextEncoding().lower()
+        print(defaultTextEncoding)
+        try:
+            currentCodec = codecs.index(defaultTextEncoding)
+        except ValueError:
+            currentCodec = -1
+        
+        defaultEncodingAct = self.__textEncodingMenu.addAction(self.trUtf8("Default"))
+        defaultEncodingAct.setData(-1)
+        defaultEncodingAct.setCheckable(True)
+        if currentCodec == -1:
+            defaultEncodingAct.setChecked(True)
+        self.__textEncodingMenu.addSeparator()
+        
+        for i in range(len(codecs)):
+            codec = codecs[i]
+            act = self.__textEncodingMenu.addAction(codec)
+            act.setData(i)
+            act.setCheckable(True)
+            if currentCodec == i:
+                act.setChecked(True)
+    
+    def __setTextEncoding(self, act):
+        """
+        Private slot to set the selected text encoding as the default for
+        this session.
+        
+        @param act reference to the selected action (QAction)
+        """
+        codecs = []
+        for codec in QTextCodec.availableCodecs():
+            codecs.append(str(codec, encoding = "utf-8").lower())
+        codecs.sort()
+        
+        offset = act.data()
+        print(offset, len(codecs))
+        if offset < 0 or offset >= len(codecs):
+            QWebSettings.globalSettings().setDefaultTextEncoding("")
+            Preferences.setHelp("DefaultTextEncoding", "")
+        else:
+            print(codecs[offset])
+            QWebSettings.globalSettings().setDefaultTextEncoding(codecs[offset])
+            Preferences.setHelp("DefaultTextEncoding", codecs[offset])

eric ide

mercurial