eric6/WebBrowser/WebBrowserWindow.py

changeset 7844
cb108454eda7
parent 7771
787a6b3f8c9f
child 7900
72b88fb20261
child 7924
8a96736d465e
equal deleted inserted replaced
7843:0a569bf8ca45 7844:cb108454eda7
10 import os 10 import os
11 import shutil 11 import shutil
12 import sys 12 import sys
13 13
14 from PyQt5.QtCore import ( 14 from PyQt5.QtCore import (
15 pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QTextCodec, 15 pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QProcess,
16 QProcess, QEvent, QFileInfo 16 QEvent, QFileInfo
17 ) 17 )
18 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics 18 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics
19 from PyQt5.QtWidgets import ( 19 from PyQt5.QtWidgets import (
20 QWidget, QVBoxLayout, QSizePolicy, QDockWidget, QComboBox, QLabel, QMenu, 20 QWidget, QVBoxLayout, QSizePolicy, QDockWidget, QComboBox, QLabel, QMenu,
21 QLineEdit, QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, 21 QLineEdit, QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar,
4145 4145
4146 @return reference to the opensearch manager object (OpenSearchManager) 4146 @return reference to the opensearch manager object (OpenSearchManager)
4147 """ 4147 """
4148 return self.__navigationBar.searchEdit().openSearchManager() 4148 return self.__navigationBar.searchEdit().openSearchManager()
4149 4149
4150 def __createTextEncodingAction(self, codec, defaultCodec, parentMenu): 4150 def __createTextEncodingAction(self, codec, defaultCodec, parentMenu,
4151 name=None):
4151 """ 4152 """
4152 Private method to create an action for the text encoding menu. 4153 Private method to create an action for the text encoding menu.
4153 4154
4154 @param codec name of the codec to create an action for 4155 @param codec name of the codec to create an action for
4155 @type str 4156 @type str
4156 @param defaultCodec name of the default codec 4157 @param defaultCodec name of the default codec
4157 @type str 4158 @type str
4158 @param parentMenu reference to the parent menu 4159 @param parentMenu reference to the parent menu
4159 @type QMenu 4160 @type QMenu
4160 """ 4161 @param name name for the action
4161 act = QAction(codec, parentMenu) 4162 @type str
4163 """
4164 if name:
4165 act = QAction(name, parentMenu)
4166 else:
4167 act = QAction(codec, parentMenu)
4162 act.setData(codec) 4168 act.setData(codec)
4163 act.setCheckable(True) 4169 act.setCheckable(True)
4164 if defaultCodec == codec: 4170 if defaultCodec == codec:
4165 act.setChecked(True) 4171 act.setChecked(True)
4166 4172
4190 """ 4196 """
4191 Private slot to populate the text encoding menu. 4197 Private slot to populate the text encoding menu.
4192 """ 4198 """
4193 self.__textEncodingMenu.clear() 4199 self.__textEncodingMenu.clear()
4194 4200
4195 codecs = []
4196 for mib in QTextCodec.availableMibs():
4197 codec = str(QTextCodec.codecForMib(mib).name(),
4198 encoding="utf-8").lower()
4199 if codec not in codecs:
4200 codecs.append(codec)
4201 codecs.sort()
4202
4203 defaultTextEncoding = self.webSettings().defaultTextEncoding().lower() 4201 defaultTextEncoding = self.webSettings().defaultTextEncoding().lower()
4204 if defaultTextEncoding in codecs: 4202 if defaultTextEncoding in Utilities.supportedCodecs:
4205 currentCodec = defaultTextEncoding 4203 currentCodec = defaultTextEncoding
4206 else: 4204 else:
4207 currentCodec = "system" 4205 currentCodec = ""
4208 4206
4209 isoCodecs = [] 4207 isoCodecs = []
4210 winCodecs = [] 4208 winCodecs = []
4211 isciiCodecs = []
4212 uniCodecs = [] 4209 uniCodecs = []
4213 ibmCodecs = [] 4210 cpCodecs = []
4211 macCodecs = []
4214 otherCodecs = [] 4212 otherCodecs = []
4215 4213
4216 for codec in codecs: 4214 for codec in sorted(Utilities.supportedCodecs):
4217 if codec.startswith(("iso", "latin")): 4215 if codec.startswith(("iso-", "latin")):
4218 isoCodecs.append(codec) 4216 isoCodecs.append(codec)
4219 elif codec.startswith(("windows")): 4217 elif codec.startswith(("windows-")):
4220 winCodecs.append(codec) 4218 winCodecs.append(codec)
4221 elif codec.startswith("iscii"): 4219 elif codec.startswith("utf-"):
4222 isciiCodecs.append(codec)
4223 elif codec.startswith("utf"):
4224 uniCodecs.append(codec) 4220 uniCodecs.append(codec)
4225 elif codec.startswith(("ibm")): 4221 elif codec.startswith("cp"):
4226 ibmCodecs.append(codec) 4222 cpCodecs.append(codec)
4227 elif codec == "system": 4223 elif codec.startswith("mac-"):
4228 self.__createTextEncodingAction(codec, currentCodec, 4224 macCodecs.append(codec)
4229 self.__textEncodingMenu)
4230 else: 4225 else:
4231 otherCodecs.append(codec) 4226 otherCodecs.append(codec)
4232 4227
4233 if not self.__textEncodingMenu.isEmpty(): 4228 self.__createTextEncodingAction(
4234 self.__textEncodingMenu.addSeparator() 4229 "", currentCodec, self.__textEncodingMenu, name=self.tr("System"))
4230 self.__textEncodingMenu.addSeparator()
4235 self.__createTextEncodingSubmenu(self.tr("ISO"), isoCodecs, 4231 self.__createTextEncodingSubmenu(self.tr("ISO"), isoCodecs,
4236 self.__textEncodingMenu) 4232 self.__textEncodingMenu)
4237 self.__createTextEncodingSubmenu(self.tr("Unicode"), uniCodecs, 4233 self.__createTextEncodingSubmenu(self.tr("Unicode"), uniCodecs,
4238 self.__textEncodingMenu) 4234 self.__textEncodingMenu)
4239 self.__createTextEncodingSubmenu(self.tr("Windows"), winCodecs, 4235 self.__createTextEncodingSubmenu(self.tr("Windows"), winCodecs,
4240 self.__textEncodingMenu) 4236 self.__textEncodingMenu)
4241 self.__createTextEncodingSubmenu(self.tr("ISCII"), isciiCodecs, 4237 self.__createTextEncodingSubmenu(self.tr("IBM"), cpCodecs,
4242 self.__textEncodingMenu) 4238 self.__textEncodingMenu)
4243 self.__createTextEncodingSubmenu(self.tr("IBM"), ibmCodecs, 4239 self.__createTextEncodingSubmenu(self.tr("Apple"), macCodecs,
4244 self.__textEncodingMenu) 4240 self.__textEncodingMenu)
4245 self.__createTextEncodingSubmenu(self.tr("Other"), otherCodecs, 4241 self.__createTextEncodingSubmenu(self.tr("Other"), otherCodecs,
4246 self.__textEncodingMenu) 4242 self.__textEncodingMenu)
4247 4243
4248 def __setTextEncoding(self, act): 4244 def __setTextEncoding(self, act):

eric ide

mercurial