diff -r 0a569bf8ca45 -r cb108454eda7 eric6/WebBrowser/WebBrowserWindow.py --- a/eric6/WebBrowser/WebBrowserWindow.py Sun Nov 29 14:06:23 2020 +0100 +++ b/eric6/WebBrowser/WebBrowserWindow.py Sun Nov 29 14:10:18 2020 +0100 @@ -12,8 +12,8 @@ import sys from PyQt5.QtCore import ( - pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QTextCodec, - QProcess, QEvent, QFileInfo + pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QProcess, + QEvent, QFileInfo ) from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics from PyQt5.QtWidgets import ( @@ -4147,7 +4147,8 @@ """ return self.__navigationBar.searchEdit().openSearchManager() - def __createTextEncodingAction(self, codec, defaultCodec, parentMenu): + def __createTextEncodingAction(self, codec, defaultCodec, parentMenu, + name=None): """ Private method to create an action for the text encoding menu. @@ -4157,8 +4158,13 @@ @type str @param parentMenu reference to the parent menu @type QMenu - """ - act = QAction(codec, parentMenu) + @param name name for the action + @type str + """ + if name: + act = QAction(name, parentMenu) + else: + act = QAction(codec, parentMenu) act.setData(codec) act.setCheckable(True) if defaultCodec == codec: @@ -4192,55 +4198,45 @@ """ self.__textEncodingMenu.clear() - codecs = [] - for mib in QTextCodec.availableMibs(): - codec = str(QTextCodec.codecForMib(mib).name(), - encoding="utf-8").lower() - if codec not in codecs: - codecs.append(codec) - codecs.sort() - defaultTextEncoding = self.webSettings().defaultTextEncoding().lower() - if defaultTextEncoding in codecs: + if defaultTextEncoding in Utilities.supportedCodecs: currentCodec = defaultTextEncoding else: - currentCodec = "system" + currentCodec = "" isoCodecs = [] winCodecs = [] - isciiCodecs = [] uniCodecs = [] - ibmCodecs = [] + cpCodecs = [] + macCodecs = [] otherCodecs = [] - for codec in codecs: - if codec.startswith(("iso", "latin")): + for codec in sorted(Utilities.supportedCodecs): + if codec.startswith(("iso-", "latin")): isoCodecs.append(codec) - elif codec.startswith(("windows")): + elif codec.startswith(("windows-")): winCodecs.append(codec) - elif codec.startswith("iscii"): - isciiCodecs.append(codec) - elif codec.startswith("utf"): + elif codec.startswith("utf-"): uniCodecs.append(codec) - elif codec.startswith(("ibm")): - ibmCodecs.append(codec) - elif codec == "system": - self.__createTextEncodingAction(codec, currentCodec, - self.__textEncodingMenu) + elif codec.startswith("cp"): + cpCodecs.append(codec) + elif codec.startswith("mac-"): + macCodecs.append(codec) else: otherCodecs.append(codec) - if not self.__textEncodingMenu.isEmpty(): - self.__textEncodingMenu.addSeparator() + self.__createTextEncodingAction( + "", currentCodec, self.__textEncodingMenu, name=self.tr("System")) + self.__textEncodingMenu.addSeparator() self.__createTextEncodingSubmenu(self.tr("ISO"), isoCodecs, self.__textEncodingMenu) self.__createTextEncodingSubmenu(self.tr("Unicode"), uniCodecs, self.__textEncodingMenu) self.__createTextEncodingSubmenu(self.tr("Windows"), winCodecs, self.__textEncodingMenu) - self.__createTextEncodingSubmenu(self.tr("ISCII"), isciiCodecs, + self.__createTextEncodingSubmenu(self.tr("IBM"), cpCodecs, self.__textEncodingMenu) - self.__createTextEncodingSubmenu(self.tr("IBM"), ibmCodecs, + self.__createTextEncodingSubmenu(self.tr("Apple"), macCodecs, self.__textEncodingMenu) self.__createTextEncodingSubmenu(self.tr("Other"), otherCodecs, self.__textEncodingMenu)